Hi Kirk, Are you using the QPDF plugin from pluggers? If so, which version, QPDF plugin light or Pro?
Regards, Rudy Mortier Two Way Communications bvba > On 14 Jun 2018, at 22:48, Kirk Brooks via 4D_Tech <[email protected]> > wrote: > > John, > Using QPDF is much like using PRINT FORM. The plugin commands allow you to > precisely control where on the page something (text, line, image) will > appear. Unlike PRINT FORM you can add to existing pages. This greatly > simplifies, for instance, adding page numbers in the form of "Page x of y". > You can traverse back and forth through your pages if necessary. > > QPDF allows me to use templates. These can be pre-formatted PDFs or I can > build one on the fly. My usual workflow in a method is to create the > document and set the meta data (author, date, subject, etc. - stuff I don't > think you can do at all when creating PDFs via print engines). Then I'll > make the page template with things like the report header and footer info. > Then I basically run down the page adding material just like I would with > PRINT FORM. I like to make my methods that add material to the page > functions that return the last y value. Coupled with a method to check for > available space and handle page breaks it works well. > > I may get around to locating these methods in a component for ease of reuse > as I think about. > > A few other things I can do with the plugin are include existing PDFs. This > didn't seem like an incredibly useful feature at first but it is. In the > case of sales quotes some salesmen like to include cut sheets, drawings or > brochures from the vendor with their bid. Another use is creating or > reading PDF forms. If you have a PDF form you must populate but the form is > really just a scan of something you can still place text in the appropriate > locations on the page. It's a pain but you only have to do it once. > > Another benefit I don't believe is available any other way is adding > bookmarks and internal references. Bookmarks are what you see in the > sidebar and allow you to navigate large documents. Internal references are > like anchors on a web page and work the same way. > > Don't get me wrong, I have not abandoned traditional print forms by any > means. It takes some effort to build a PDF form in code for anything beyond > very simple needs. It's not the right solution for everything. But for > certain types of documents I'm finding working with it a very deep breath > of fresh air. > > On Thu, Jun 14, 2018 at 11:07 AM JOHN BAUGHMAN via 4D_Tech < > [email protected]> wrote: > >> Interesting. I have never had a situation where I did not have a >> relatively good idea of what a document will look like such that I >> couldn't create 1 or more variable populated forms to cover all the >> possibilities. >> >> >> John Baughman >> 1331 Auwaiku Street >> Kailua, Hawaii 96734 >> (808) 262-0328 >> [email protected] >> >>> On Jun 14, 2018, at 7:14 AM, Kirk Brooks via 4D_Tech < >> [email protected]> wrote: >>> >>> John, >>> Yes. No 4D form printing at all. >>> >>> On Thu, Jun 14, 2018 at 10:14 AM JOHN BAUGHMAN via 4D_Tech < >>> [email protected]> wrote: >>> >>>> Kirk, are you talking about creating the pdf strictly in code? >>>> >>>> Otherwise, as Pat pointed out 4D Write Pro can be used, as can 4D forms… >>>> >>>> SET PRINT OPTION(Destination option;3;$FolderPath+"MyTest.pdf") >>>> OPEN PRINTING JOB >>>> Print form("MyTest4DForm";Form header) >>>> CLOSE PRINTING JOB >>>> >>>> PDFs from 4D forms using this methodology works both on the client and >> on >>>> the server. >>>> >>>> >>>> John Baughman >>>> 1331 Auwaiku Street >>>> Kailua, Hawaii 96734 >>>> (808) 262-0328 >>>> [email protected] >>>> >>>>> On Jun 14, 2018, at 5:37 AM, Pat Bensky via 4D_Tech < >>>> [email protected]> wrote: >>>>> >>>>> Another option, which may or may not be suitable depending on the >>>> project, >>>>> is to build the document with 4DWrite Pro and then simply set the print >>>>> option and print it: >>>>> >>>>> *SET PRINT OPTION*(Orientation option;iPrintOption) // landscape or >>>> portrait >>>>> >>>>> *SET PRINT OPTION*(Destination option;3;$pathname) // PDF >>>>> >>>>> *WP USE PAGE SETUP*(oWPdoc) >>>>> >>>>> *WP PRINT*(oWPdoc) >>>>> >>>>> *SHOW ON DISK*($pathname) >>>>> >>>>> This will require you to learn how to program Write Pro, but I think >> that >>>>> will be a bit simpler than learning how to create PDFs, it won't cost >> you >>>>> any extra, and those skills might come in handy for other 4D projects >> :) >>>>> >>>>> Pat >>>>> >>>>> On Thu, 14 Jun 2018 at 16:22, Kirk Brooks via 4D_Tech < >>>> [email protected]> >>>>> wrote: >>>>> >>>>>> I just chimed in on a conversation on the forums about using PDF >> Creator >>>>>> <http://forums.4d.com/Post/FR/24699370/1/24714745#24714745>. In this >>>> case >>>>>> the OP was asking about making it work on the server. I'm sure anyone >>>> who >>>>>> tried to make that work just gave a little sympathetic groan. >>>>>> >>>>>> Making PDFs is hard. True - with a Mac or Win10 it's become pretty >>>> easy to >>>>>> print-to-PDF. This is really a user-interface feature though. If you >>>> need >>>>>> to build a PDF in code and want to work with the BLOB of that document >>>>>> using the OS print features starts to fall apart. If you want to do >>>> this on >>>>>> the server it's a complete non starter in my view. >>>>>> >>>>>> This is where things get tricky in 4D land. Actually pretty much >>>>>> everywhere I suspect but I don't know everywhere. It's actually >>>> possible to >>>>>> build perfectly valid PDFs in native 4D. Neil Denis gave a Summit >>>>>> presentation in 2016 demonstrating this. Working with his demo gave >> me a >>>>>> workable solution for a bit. But sometimes the PDFs wouldn't be valid >>>> and >>>>>> wouldn't always open. I don't think it had anything to do with Neil's >>>> work >>>>>> but my own additions. >>>>>> >>>>>> From here I spent way too much time building my own PDF component in >> all >>>>>> native 4D. PDF language is all text based so there's no reason you >>>> can't do >>>>>> it in native 4D (well, without the flate/deflate compression). But it >> is >>>>>> hard. The challenge was sort of interesting to me and I now have a >>>> fairly >>>>>> good understanding of how a PDF document is structured internally. In >>>> the >>>>>> end I had a working solution for a specific set of uses and the files >>>> were >>>>>> always valid <https://www.pdf-online.com/osa/validate.aspx>. The >>>> problem >>>>>> was it wasn't a full solution. I didn't have bookmark capability, for >>>>>> example. Or form fields. It was decent but very limited. >>>>>> >>>>>> BTW - making PDF is hard. Debugging PDF is even harder. >>>>>> >>>>>> Prior to that I tried most of the other options I heard folks talk >> about >>>>>> here: PHP, HTMLTOX, various schemes for managing printing on user >>>> machines >>>>>> and probably some others I've blocked out of my memory. All of them >>>> worked >>>>>> to varying degrees of success but all of them also required a slightly >>>>>> different way of coding, for the ones that build the PDF in code. I >>>> could >>>>>> never sell the idea of the pricier solutions (this is for the in-house >>>> app >>>>>> I wrote). >>>>>> >>>>>> A couple of months ago the need for more robust PDF features came up. >>>>>> Looking at my work I realized it just wasn't worthwhile for me to >> spend >>>> the >>>>>> time to build it out in my own component so I took another look around >>>> at >>>>>> the available options. I happened to email Rob Laveaux with some >>>> question >>>>>> about his plugins. He got back to me suggesting I look at QPDF >> instead. >>>> And >>>>>> here is where this turns into a big plug for QPDF. The licensing on >> the >>>>>> older set is pricey. And at 1k euro QPDF isn't cheap but it has the >> same >>>>>> no-hassel many of his products do. QPDF uses a C library (DynaPDF, >>>> which is >>>>>> a large chunk of the licensing fee). >>>>>> >>>>>> Working with QPDF did require me to refactor the methods that produce >> my >>>>>> key documents. And I had to spend some time prior to that learning how >>>> to >>>>>> work with the new command set. I think the time I spent studying the >>>> Adobe >>>>>> docs on PDF construction helped make this go faster. The result is >> what >>>> I >>>>>> consider a successful refactor: cleaner code, less of it, more >>>> capability, >>>>>> better output. Plus a core PDF module that makes building new docs >>>> pretty >>>>>> simple. >>>>>> >>>>>> As I mentioned in the post on the forums I am starting to look at a >>>> 'print' >>>>>> job as more of 'producing a document' than a piece of paper. If it's >>>>>> something that needs to be stored, shared, downloaded from the web or >>>>>> produced on the server it's going to need to be produced in a blob and >>>>>> that's going to be a PDF. If it's truly something a user needs as a >>>> piece >>>>>> of paper it's a print job. >>>>>> >>>>>> Producing PDFs in code means no form editor. This isn't always a bad >>>> thing. >>>>>> Sometimes it's as much work to make a complex document render >> correctly >>>>>> through a 4D print form as it is to simply write the code to assemble >>>> the >>>>>> data. It really depends on the data and the document. >>>>>> >>>>>> -- >>>>>> Kirk Brooks >>>>>> San Francisco, CA >>>>>> ======================= >>>>>> >>>>>> *We go vote - they go home* >>>>>> ********************************************************************** >>>>>> 4D Internet Users Group (4D iNUG) >>>>>> FAQ: http://lists.4d.com/faqnug.html >>>>>> Archive: http://lists.4d.com/archives.html >>>>>> Options: https://lists.4d.com/mailman/options/4d_tech >>>>>> Unsub: mailto:[email protected] >>>>>> ********************************************************************** >>>>> >>>>> >>>>> >>>>> -- >>>>> ************************************************* >>>>> CatBase - Top Dog in Data Publishing >>>>> tel: +44 (0) 207 118 7889 >>>>> w: http://www.catbase.com >>>>> skype: pat.bensky >>>>> ************************************************* >>>>> ********************************************************************** >>>>> 4D Internet Users Group (4D iNUG) >>>>> FAQ: http://lists.4d.com/faqnug.html >>>>> Archive: http://lists.4d.com/archives.html >>>>> Options: https://lists.4d.com/mailman/options/4d_tech >>>>> Unsub: mailto:[email protected] >>>>> ********************************************************************** >>>> >>>> ********************************************************************** >>>> 4D Internet Users Group (4D iNUG) >>>> FAQ: http://lists.4d.com/faqnug.html >>>> Archive: http://lists.4d.com/archives.html >>>> Options: https://lists.4d.com/mailman/options/4d_tech >>>> Unsub: mailto:[email protected] >>>> ********************************************************************** >>> >>> >>> >>> -- >>> Kirk Brooks >>> San Francisco, CA >>> ======================= >>> >>> *We go vote - they go home* >>> ********************************************************************** >>> 4D Internet Users Group (4D iNUG) >>> FAQ: http://lists.4d.com/faqnug.html >>> Archive: http://lists.4d.com/archives.html >>> Options: https://lists.4d.com/mailman/options/4d_tech >>> Unsub: mailto:[email protected] >>> ********************************************************************** >> >> ********************************************************************** >> 4D Internet Users Group (4D iNUG) >> FAQ: http://lists.4d.com/faqnug.html >> Archive: http://lists.4d.com/archives.html >> Options: https://lists.4d.com/mailman/options/4d_tech >> Unsub: mailto:[email protected] >> ********************************************************************** > > > > -- > Kirk Brooks > San Francisco, CA > ======================= > > *We go vote - they go home* > ********************************************************************** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: https://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:[email protected] > ********************************************************************** ********************************************************************** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:[email protected] **********************************************************************

