Jump to content


Click the link below to see the new game I'm developing!


Photo
- - - - -

ProIV PDF SSO


5 replies to this topic

#1 Ross Bevin

Ross Bevin

    ProIV Guru

  • Members
  • PipPipPipPipPip
  • 240 posts
  • Gender:Male
  • Location:San Miguel de Allende, GTO, Mexico

Posted 04 July 2013 - 10:39 PM

Hi everyone,

I just want to let everyone know that I have been working closely with NGA on their PDF SSO. They have now released version 2.0 that provides methods for the following features. These features have been invaluable to us for our new PDF invoice production function. After we produce our original invoice PDF we need to print them in order and print a 2nd customer copy and a file copy, with the words "CUSTOMER COPY" and "FILE COPY" printed on each. I do this by specifying the original file, the text to stamp with it and the path to the new output PDF file. After all this is done I use the merge method to merge all the invoice documents, together with the customer & file copy, into a single PDF. I then use a 3rd party app called VeryPDF to print this PDF to the desired printer.

As I have stated before, this is the most powerful PDF production solution I have ever come across! If you want to quickly produce PDF documents from within ProIV you have to take the PDF SSO for a spin!

Regards

Ross Bevin
Version 2.0 Features:

Add Stationary (on every page automatically)If PDF Table Crosses Multiple Pages, Repeat Table Header On Each Page (Optional)

Stamp (Add Stationary Background To Existing) PDF Documents - Helper Class Method

Watermark (Add Watermark Background To Existing) PDF Documents - Helper Class Method

Merge PDF Documents - Helper Class Method

Split PDF Documents - Helper Class Method

Delete PDF Document - Helper Class Method

Rename PDF Document - Helper Class Method






#2 jFoon

jFoon

    Newbie

  • Members
  • Pip
  • 1 posts

Posted 06 July 2013 - 07:22 AM

Why wouldn't you just use Apache FOP?

All we do, is wrap some of its methods with our own, expose those to PROIV using SSO, set the report device so output is XML, and use FOP's XSL-FO and XSL-T to do the rest in exit logic. Most useful for us is image embedding, and computed values, but FOP supports most of the World Wide Web Consortium (W3C) XSL-FO 1.1 standard objects.

#3 Ross Bevin

Ross Bevin

    ProIV Guru

  • Members
  • PipPipPipPipPip
  • 240 posts
  • Gender:Male
  • Location:San Miguel de Allende, GTO, Mexico

Posted 06 July 2013 - 12:09 PM

Hi jFoon,

Prior to the release of the PDF SSO I spent a month learning Antenna House Formatter (XSL). I found it to be quite finicky when it came to marrying up my XML output with the XSL. It took a lot more effort when it came to making even a small change; a lot of steps.There are many ProIV developers out there that don't have the time or inclination to learn how to use these tools. The beauty of the ProIV PDF SSO is that the learning curve to use it competently is about 5 days. The tool is like a brush, you just paint what you want on the PDF document from logic. So, instead of having to develop the XSL style sheet and the function to produce the XML output you have just one ProIV function. I have developed our PDF invoicing using an update function with just 3 strategically placed logics that contain all the commands I use to create the document. It really is that simple!

Regards
Ross

#4 Marlon

Marlon

    Member

  • Members
  • PipPip
  • 49 posts
  • Gender:Not Telling
  • Location:London

Posted 25 July 2013 - 04:18 PM

Hi jFoon,

Prior to the release of the PDF SSO I spent a month learning Antenna House Formatter (XSL). I found it to be quite finicky when it came to marrying up my XML output with the XSL. It took a lot more effort when it came to making even a small change; a lot of steps.There are many ProIV developers out there that don't have the time or inclination to learn how to use these tools. The beauty of the ProIV PDF SSO is that the learning curve to use it competently is about 5 days. The tool is like a brush, you just paint what you want on the PDF document from logic. So, instead of having to develop the XSL style sheet and the function to produce the XML output you have just one ProIV function. I have developed our PDF invoicing using an update function with just 3 strategically placed logics that contain all the commands I use to create the document. It really is that simple!

Regards
Ross


We started out using XML/XSL to produce out .pdfs and it is a pain. Using a PDF SSO is much better.

This is your captain speaking. We may experience some slight turbulance and then...explode.


#5 Neil Barber

Neil Barber

    Member

  • Members
  • PipPip
  • 15 posts
  • Gender:Male
  • Location:Milton Keynes, United Kingdom

Posted 29 July 2013 - 02:41 AM

Given the presence of fop.jar and fopwrapper.jar in the virtual_machine/javalib directory of PROIV installs, and subject to confirmation from NorthgateArinso (NGA), I'd say it's likely that Apache FOP factors in their PDF solution, too. In terms of the wrapper, if you're NGA, it needs to be clean and simple, as "... developers out there don't have the time or inclination to learn ...", as Ross pointed out, but, if you're jFoon that might not be the case, and it can be more complex. At which point it's about cost and how extensible that solution is.

#6 Ross Bevin

Ross Bevin

    ProIV Guru

  • Members
  • PipPipPipPipPip
  • 240 posts
  • Gender:Male
  • Location:San Miguel de Allende, GTO, Mexico

Posted 29 July 2013 - 12:31 PM

The PDF SSO is using a 3rd party Java API called iText. You have to purchase this separately when you install the SSO but it's only a couple of hundred dollars. I have no idea what iText is using; it could very well be Apache.

To further demonstrate the power and simplicity of this solution here are some ProIV code examples. Besides creating rich PDF documents such as invoices I also use the PDF SSO to convert standard reports to PDF. I use @RPTOPT to output the report to a text file then run this simple update on the file to convert it to a PDF document.

// Update Logic In
PdfSSO.setOutputPdfFileName(Name)
PdfSSO.setPdfPermissions(permission)
PdfSSO.setPdfDefaultMargin(margins)
PdfSSO.setPdfDefaultOrientation(orientation)
PdfSSO.openPdfFile()
PdfSSO.setDocumentCreator(oprname)
PdfSSO.setFontName(font)
PdfSSO.setFontSize(fontsize)
PdfSSO.addNewPage()
#YPOS = 750
#LINES = 64
#SPACING = 12
#Y = #YPOS
#LINE_CNT = 0



// After Read No Error Logic
#LINE_CNT += 1
$TEXT = FILE_TEXT
IF $TEXT(1,1) = CHAR(12) OR #LINE_CNT > #LINES THEN
// Look for page break or reached maximum page length
#LINE_CNT = 1
$TEXT = $TEXT(2,LEN($TEXT))
PdfSSO.addNewPage()
#Y = #YPOS
ENDIF
PdfSSO.placeText(text)
#Y -= #SPACING


// Update Out Logic
PdfSSO.closePdfFile()



Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Click the link below to see the new game I'm developing!