{"id":530,"date":"2007-12-12T00:54:19","date_gmt":"2007-12-12T06:54:19","guid":{"rendered":"http:\/\/rrbits.com\/epb\/?p=530"},"modified":"2014-03-06T01:40:50","modified_gmt":"2014-03-06T07:40:50","slug":"pdf-generators","status":"publish","type":"post","link":"https:\/\/rrbits.com\/epb\/2007\/12\/12\/pdf-generators\/","title":{"rendered":"PDF Generators"},"content":{"rendered":"<p>I&#8217;ve written several PDF generator projects, using both TCPDF and an rsvg tool called svg2pdf.\u00a0 I didn&#8217;t feel each one warranted it&#8217;s own project entry here though, so they&#8217;ll be aggregated here until such time I actually manage to get my academic worksheet generator to minimum viable product status.\u00a0 In which case the worksheet generator will have it&#8217;s own project entry.<\/p>\n<p><strong>Advertising Contract Generator<\/strong><\/p>\n<p>This project collects contact information; additional terms and conditions; and advertising rate settings. It then produces a printable, multipage contract with rates and conditions included.\u00a0 After it was developed, it was subsequently integrated with Ad Order Entry.\u00a0 This uses the mentioned SVG to PDF conversion with PDFtk to join the individual pages.<\/p>\n<div id=\"attachment_532\" style=\"width: 281px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-532\" class=\"size-medium wp-image-532\" alt=\"The information collection form.\" src=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot-271x300.jpg\" width=\"271\" height=\"300\" srcset=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot-271x300.jpg 271w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot-181x200.jpg 181w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot-800x883.jpg 800w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/contractgenerator-screenshot.jpg 815w\" sizes=\"auto, (max-width: 271px) 100vw, 271px\" \/><\/a><p id=\"caption-attachment-532\" class=\"wp-caption-text\">The information collection form.<\/p><\/div>\n<div id=\"attachment_533\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-533\" class=\"size-medium wp-image-533\" alt=\"Heading of a contact created by the generator.\" src=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf-300x172.jpg\" width=\"300\" height=\"172\" srcset=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf-300x172.jpg 300w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf-200x114.jpg 200w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf-800x459.jpg 800w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/advertising-contract-pdf.jpg 814w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-533\" class=\"wp-caption-text\">Heading of a contact created by the generator.<\/p><\/div>\n<p><strong>Print Listings Generator<\/strong><\/p>\n<p>The listings generator creates multiple single-page PDFs that can be laid out in InDesign.\u00a0 It actually has several different listing types, but they&#8217;re all pretty similar.\u00a0 It uses a grid layout and allows for reserving spaces for standard ad placements.\u00a0 Premium listings typically include a photo and some more prominent sizing and styling.\u00a0 This project now uses TCPDF because TCPDF is capable of specifying colors in CMYK colorspace, so text uses only black ink and other colors can be limited to fewer plates.\u00a0 This is important with an old offset printing press as RGB black becomes a mixture of all four ink colors in print, and can make fine text completely unreadable if the plates don&#8217;t match up perfectly.\u00a0 The listings generator is written in PHP on CakePHP 1.3.<\/p>\n<div id=\"attachment_534\" style=\"width: 109px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/fondi_proof.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-534\" class=\"size-medium wp-image-534\" alt=\"Pizzeria Fondi Listing\" src=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/fondi_proof-99x300.jpg\" width=\"99\" height=\"300\" srcset=\"https:\/\/rrbits.com\/epb\/files\/2014\/03\/fondi_proof-99x300.jpg 99w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/fondi_proof-66x200.jpg 66w, https:\/\/rrbits.com\/epb\/files\/2014\/03\/fondi_proof.jpg 237w\" sizes=\"auto, (max-width: 99px) 100vw, 99px\" \/><\/a><p id=\"caption-attachment-534\" class=\"wp-caption-text\">This advertising proof shows the difference between a standard listing and a premium listing created for dining.<\/p><\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve written several PDF generator projects, using both TCPDF and an rsvg tool called svg2pdf.\u00a0 I didn&#8217;t feel each one warranted it&#8217;s own project entry here though, so they&#8217;ll be aggregated here until such time I actually manage to get my academic worksheet generator to minimum viable product status.\u00a0 In which case the worksheet generator&#8230;  <a class=\"excerpt-read-more\" href=\"https:\/\/rrbits.com\/epb\/2007\/12\/12\/pdf-generators\/\" title=\"ReadPDF Generators\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":531,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4253],"tags":[],"class_list":["post-530","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-about-me"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/comments?post=530"}],"version-history":[{"count":1,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/530\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/posts\/530\/revisions\/535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/media\/531"}],"wp:attachment":[{"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/media?parent=530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/categories?post=530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rrbits.com\/epb\/wp-json\/wp\/v2\/tags?post=530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}