{"id":1807,"date":"2011-04-20T10:36:00","date_gmt":"2011-04-20T10:36:00","guid":{"rendered":"http:\/\/www.b.shuttle.de\/hayek\/Hayek\/Jochen\/wp\/blog-en\/2011\/04\/20\/an-incomplete-story-from-my-pdf-to-jasperreports-migration-project\/"},"modified":"2011-04-20T10:36:00","modified_gmt":"2011-04-20T10:36:00","slug":"an-incomplete-story-from-my-pdf-to-jasperreports-migration-project","status":"publish","type":"post","link":"https:\/\/wp.jochen.hayek.name\/blog-en\/2011\/04\/20\/an-incomplete-story-from-my-pdf-to-jasperreports-migration-project\/","title":{"rendered":"an INCOMPLETE story from my &#8220;PDF to JasperReports&#8221; migration project"},"content":{"rendered":"<p>\nMy &#8220;current&#8221; (as of 2011-01) project is actually rather interesting and challenging and well-paying,<br \/>\nbut it&#8217;s only going to last for no longer than 2 months, I assume.<\/p>\n<p>From my customer&#8217;s point of view this migration project must be horror.<\/p>\n<p>I don&#8217;t really know, how serious &#8220;they&#8221; were, when they determined, that this would be a 3-months project.<\/p>\n<p>Migrating 98% of the documents from PDF to JasperReport&#8217;s &#8220;JRXML&#8221;<\/p>\n<p>\u00a0 http:\/\/en.wikipedia.org\/wiki\/JasperReports#JRXML<\/p>\n<p>will take like 6 months (I started in December).<br \/>\nBut the remaining 2% of the documents may take another 3 <a href=\"https:\/\/www.bibleserver.com\/text\/ESV\/Tobit6\" class=\"bibleserver extern\" target=\"_blank\" rel=\"noopener noreferrer\">to 6<\/a> months.<\/p>\n<p>If they don&#8217;t complete that project (I mean true 100% of the documents, that need to get migrated),<br \/>\nthey cannot abandon the old software,<br \/>\nwhich was one of the main goals initially.<\/p>\n<p>They had no realistic concept for migrating all these documents,<br \/>\nthey even had no realistic approach of analyzing all the PDF documents.<br \/>\nWe are talking about many hundreds of PDF documents resp. pages with form fields,<br \/>\nand these form fields are really rather &#8220;delicate&#8221; details.<\/p>\n<p>The usual way to work on PDF form fields<br \/>\nis to load the file into Acrobat Pro and to display the form fields.<br \/>\nYou can &#8220;obviously&#8221; create a hard copy for each page,<br \/>\nbut that&#8217;s tedious and you still don&#8217;t have hold of all the &#8220;more atomar details&#8221; of PDF form fields.<\/p>\n<p>There was no software available for easy &#8220;batch-way&#8221; dealing with PDF forms.<br \/>\nI created something myself around a PDF library from perl&#8217;s CPAN (&#8220;CAM::PDF&#8221;).<br \/>\nOh, wonderful CPAN!!!<br \/>\nIn the meantime I contacted the developer of that PDF library,<br \/>\nbecause I needed more details for PDF document objects, such as the page number of a form field,<br \/>\nand &#8220;of course&#8221; he helped me out.<br \/>\nI was so happy.<br \/>\nInitially the page number was only &#8220;nice to have&#8221;,<br \/>\nas 99.5% of the documents, that I had dealt with so far, were 1-page only.<\/p>\n<p>In the meantime I found out, I would have to deal with like 200 multi-page documents,<br \/>\nso it was a serious necessity to be able to extract the number of the page the form-fields are located on.<\/p>\n<p>When I decided to contact the developer of CAM::PDF, I was already close to despair,<br \/>\nand I was overly happy, when we had gotten that feature implemented within a couple of days, with just a few e-mails in both directions.<\/p>\n<div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>My &#8220;current&#8221; (as of 2011-01) project is actually rather interesting and challenging and well-paying, but it&#8217;s only going to last for no longer than 2 months, I assume. From my customer&#8217;s point of view this migration project must be horror. I don&#8217;t really know, how serious &#8220;they&#8221; were, when they determined, that this would be [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false,"_share_on_mastodon":"0"},"categories":[666],"tags":[937],"class_list":["post-1807","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-campdf"],"share_on_mastodon":{"url":"","error":""},"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paO0kP-t9","jetpack_likes_enabled":true,"amp_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts\/1807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/comments?post=1807"}],"version-history":[{"count":0,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts\/1807\/revisions"}],"wp:attachment":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/media?parent=1807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/categories?post=1807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/tags?post=1807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}