Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: wajta 24. 11. 2016, 10:01:52

Název: Automatizované doplňování dat do PDF
Přispěvatel: wajta 24. 11. 2016, 10:01:52
Ahoj,

potřeboval bych trochu nakopnout správným směrem při práci s PDF.
Mám formulář, který má předtištěn různá pole typu jméno, příjmení, ulice apod.
Potřeboval bych do tohoto formuláře tisknout data z databáze. Zatím to mám udělané tak, že si pravítkem změřím
souřadnice jednotlivých chlívečků a tam data dosadím.
No a dotaz zní - nešlo by to udělat nějak lépe, pohodlněji, to znamená jde nějak programově zjistit ty souřadnice, např.
podle textu apod?
Celé to mám napsané v C#, ale myslím, že to není podstatné   :)

Díky
Název: Re:Práce s PDF
Přispěvatel: ZAJDAN 24. 11. 2016, 10:48:03
a proč si neuděláš HTML šablonu s požadovaným vzhledem, do patřičnych kolonek/inputů dosazovat z databaze data a pote vyrenderovat treba pomoci wkhtmltopdf do PDF.
Název: Re:Práce s PDF
Přispěvatel: Ondrej Nemecek 24. 11. 2016, 11:16:19
Zřejmě nejde o interaktivní pdf formuláře, ale jen o pdf jakožto předtištěný formulář z nějakého úřadu - tedy vlastně jen pozadí. Pak jedině přes ty souřadnice anebo nějaký pokročilý systém rozpoznávání (nebude to levné).

Pokud by ale o interaktivní pdf formuláře šlo, pak bych hledal podporu formulářů přímo ve vhodné knihovně pro práci s pdf. Taky lze pdf generovat pomocí prohlížeče (wkhtmltopdf sice zrovna moc nefungue, spíš bych použil http://slimerjs.org/ nebo http://phantomjs.org/) anebo pomocí libreoffice (spuštěné i bez okna v headless režimu, takže to může pak fungovat i jako služba).
Název: Re:Práce s PDF
Přispěvatel: wajta 24. 11. 2016, 11:27:48
Ano, jedná se o předtištěný tiskopis z úřadu.
Pomocí nástroje v Adobe Acrobatu jsem schopen tam dodat textová pole, čímž vznikne formulářové PDF. Jednotlivá pole se dají pojmenovat a pomocí XML nebo FDF se dají pole naplnit. Problém je pak s distribucí takového dokumentu, musí se posílat jak data, tak formulář. Chtěl bych mít jen ten jeden PDF.
Zkusím se podívat na ty libreoffice.
Název: Re:Práce s PDF
Přispěvatel: ZAJDAN 24. 11. 2016, 11:45:51
ja bych raději celý ten dokument(PDF) předělal do stejneho designu v HTML..s CSS se da dneska udělal tak dobře, že to nerozeznáš a pak se ti s tím bude parádně makat
Název: Re:Práce s PDF
Přispěvatel: dustin 24. 11. 2016, 11:50:44
Nezkoušel jsem, ale google rychle napověděl např. PDFBox http://www.daedtech.com/programatically-filling-out-pdfs-in-java/
Název: Re:Práce s PDF
Přispěvatel: wajta 24. 11. 2016, 12:18:30
to ZAJDAN:
obávám se, že než bych to předělal do HTML tak, aby to mělo stejný vzhled, stálo by mě to více času, než když odměřuju souřadnice
Název: Re:Práce s PDF
Přispěvatel: ZAJDAN 24. 11. 2016, 12:31:38
to ZAJDAN:
obávám se, že než bych to předělal do HTML tak, aby to mělo stejný vzhled, stálo by mě to více času, než když odměřuju souřadnice
tož to já bych se zase nechtěl jebat se souřadnicema...
namlatit par html elementů a dat tomu barvičky je pro mne rychla akce
jeden z benefitů je ten, že tiskova kvalita bude mnohem lepší
Název: Re:Práce s PDF
Přispěvatel: wajta 24. 11. 2016, 12:45:11
tož to já bych se zase nechtěl jebat se souřadnicema...
namlatit par html elementů a dat tomu barvičky je pro mne rychla akce
jeden z benefitů je ten, že tiskova kvalita bude mnohem lepší
Myslím, že kvalita vytištěného PDF je v pohodě. Spíš bych se bál, že co uživatel to jiný prohlížeč s různým nastavením a pak jim vysvětlovat co a jak mají nastavit ...
Obecně se jedná o PDF dokumenty různých institucí, třeba zdravotní pojišťovny jsou v tomhle celkem benevolentní, když vypadá dokument alespoň zhruba jako originál, vezmou ho, ale taková ČSSZ, tam to musí být 100%, jinak to vracejí ...
Název: Re:Práce s PDF
Přispěvatel: ZAJDAN 24. 11. 2016, 12:53:53
Citace
Myslím, že kvalita vytištěného PDF je v pohodě. Spíš bych se bál, že co uživatel to jiný prohlížeč s různým nastavením a pak jim vysvětlovat co a jak mají nastavit ...
Obecně se jedná o PDF dokumenty různých institucí, třeba zdravotní pojišťovny jsou v tomhle celkem benevolentní, když vypadá dokument alespoň zhruba jako originál, vezmou ho, ale taková ČSSZ, tam to musí být 100%, jinak to vracejí ...
různých prohlížečů bych se neobával, pač jde opravdu o standardni html a zakladni css, a opravdu lze snadno udělat identicky design i s pozicema buněk,textu a patřičnou velikostí
ty totiž můžeš udělat přizpusobyvej design toho co se načte do prohližeče a natvrdo nastavenej design toho co se vyrenderuje/vygeneruje jako PDF
Název: Re:Práce s PDF
Přispěvatel: Tonda 24. 11. 2016, 15:14:52
Nezkoušel jsem, ale google rychle napověděl např. PDFBox http://www.daedtech.com/programatically-filling-out-pdfs-in-java/
Prošel sem si ten příklad a to se týká těch těch vyplňovacích PDFek, na tupé PDFko, kde je formulář namalovaný pomocí obdélníčků to je k ničemu.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: ZAJDAN 24. 11. 2016, 15:30:43
co kdyby jsme společně vytvořili tento a jiné formuláře jako HTML s exportem do PDF v originálním designu?
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Tonda 24. 11. 2016, 15:54:29
Před časem sem řešil něco podobného v Javě, pomocí iText 2.1.7. Původní PDF formulář se načte jako jedna vrstva a do další se pak printí vyplňované hodnoty na zadané souřadnice a výsledek se vysype jako PDF. Podkladový formulář je originál od zdroje, texty se vpisují TTF fontem, absolutně není důvod se obávat výsledné kvality tisku.

Nevím jak si myslel to odměřování pravítkem, ale mě se osvědčilo převést si to na bitmapu nebo si to otevřít v prohlížečce PDF, která ve statusbaru ukazuje okamžitou polohu kursoru (nebo ještě lépe najít něco co ti to na klik hodí do clipboardu), tu prostě jen opíšeš, v podstatě to není nijak výrazně pracnější než kdybys měl někde seznam polí a opisoval do kódu místo souřadnic jejich názvy.

Pokud takto zpracováváš různé formuláře z různých zdrojů, je potřeba si uvědomit, že PDF je obecně tiskový formát -  popis křivek a čar, čili pro nějakou automatizaci bys mohl maximálně vyrobit něco, co bude detekovat obdélníky a vypisovat souřadnice levého dolního rohu. Problém je, že někdo má ve formulářích obdélníky, někdo obdélníky s kulatými rohy, někdo jen linky pro umístění textu, čili bys ten nástroj co ti vysype seznam souřadnic musel upravovat pro každý formulář, což by pracností značně převýšilo jejich získání ručně, to by mohlo mít smysl maximálně u instituce co má haldu formulářů v typizovaném vzhledu jako třeba Finanční Úřad.

To s tím HTML je skutečně úplná ptákovina, vytvořit v HTML + CSS identicky vypadající formulář je řádově pracnější než odečíst pozice jednotlivých polí.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Pepa Procházka 24. 11. 2016, 16:05:10
Řešil jsem to téměř stejným způsobem, jen jsem tam měl ještě tu html + js  vrstvu kde se zobrazila vygenerovaná bitmapa, do té se vložila na požadovaná místa textová pole (drag & drop), pole se vyplnila a při submitu se hodnoty polí spolu s jejich souřadnicemi a rozměry "odeslala" do iTextu , kde byla vložena do nové vrstvy podle zaslaných souřadnic jednotlivých polí.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Medo 24. 11. 2016, 17:54:50
Nie som programmer, ale ako informatik by som isiel na to uplne tupo, aj ked zo zaciatku pracne.

Mam tlacivo z lubovolnej institucie. Rozbijem ho v PDF editore (adobe,  master pdf editor, atd). Rozbijem - nataham tam polia, ktore idem vyplnat. Jasne - pracne, ale len raz (alebo pokial institucia nezmeni vzhlad).
Nasledne vygenerujem pomocou dat z DB FDF-ko (pozeram, ze je to len textak, povedzme podobny XMLku).
Zavolam si foxit PDF reader (Aj z cmd), kde ako prikaz na otvorenie mozes dat FDF, a on si natiahne master PDF + vyplni data. Z CMD sa da okrem autoopen aj rovno tlacit (zadaj foxitreader /t), alebo tlac uz nechas  na userovi ... (schvalne popisujem foxit, a nie Adobe reader, foxit je v niektorych veciach pre mna o dost dalej).

Okrem pracnosti to ma vyhodu v tom, ze naozaj sa pole nachadza tam kde ma, ak teda 100-ne neveris rozpoznavaciemu algoritmu, tak ako popisujte vyssie ...

Napr. take danove tlacivo nie je sranda, ale ako hovorim - robis ho raz .. A ked si nazves premenne (polia) rozumne, nie je tam vela co pokazit ...
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: wajta 24. 11. 2016, 21:21:37
co kdyby jsme společně vytvořili tento a jiné formuláře jako HTML s exportem do PDF v originálním designu?

Nápad teoretický dobrý, až ušlechtilý, ale realizace bude horší.
Těch dokumentů je poměrně dost a minimálně 1x do roka se něco změní. Pro inspiraci se podívej např. na formulář MFin 5459 (http://www.financnisprava.cz/assets/tiskopisy/5459_21.pdf).

Nevím jak si myslel to odměřování pravítkem ...,
Pokud takto zpracováváš různé formuláře z různ

Tak buď jsem používal skutečné pravítko a odměřoval jednotlivé souřadnice ručně nebo jsem dokument otevřel v Acrobatu, zapnul pravítka a odměřil souřadnice tímto způsobem.
iTextSharp jsem nepoužil, dostal jsem k tomu zakopupenou knihovnu CreatorPilot, která dělá vlastně to stejné, co popisuješ, tedy nad původní vrstvu dokumentu vloží data na příslušná místa.

Mam tlacivo z lubovolnej institucie. Rozbijem ho v PDF editore (adobe,  master pdf editor, atd). Rozbijem - nataham tam polia, ktore idem vyplnat. Jasne - pracne, ale len raz (alebo pokial institucia nezmeni vzhlad).
Nasledne vygenerujem pomocou dat z DB FDF-ko (pozeram, ze je to len textak, povedzme podobny XMLku).
Zavolam si foxit PDF reader (Aj z cmd), kde ako prikaz na otvorenie mozes dat FDF, a on si natiahne master PDF + vyplni data. Z CMD sa da okrem autoopen aj rovno tlacit (zadaj foxitreader /t), alebo tlac uz nechas  na userovi ... (schvalne popisujem foxit, a nie Adobe reader, foxit je v niektorych veciach pre mna o dost dalej).
Tohle jsem používal dříve, ale uživatelé měli problém s tím, když si chtěli dokumenty přeposílat třeba emailem. Museli posílat 2 dokumenty - PDF + FDF a příjemce musel vědět, že musí klikat na FDF, jinak se mu otevřel prázdný formulář.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Jerry 24. 11. 2016, 22:19:33
Tu je online konvertor PDF na HTML5:
https://www.idrsolutions.com/online-pdf-to-html5-converter/

Potom to spracovanie PDF-ka bude jednoduchšie.
A ešte ten z finančnej správy:
https://cloudspace.idrsolutions.com:8181/HTML_Page_Extraction/output/fe8c0c99-2343-456d-8101-a6367656530b/5459_21/index.html?page=2
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Medo 25. 11. 2016, 08:15:42
Tohle jsem používal dříve, ale uživatelé měli problém s tím, když si chtěli dokumenty přeposílat třeba emailem. Museli posílat 2 dokumenty - PDF + FDF a příjemce musel vědět, že musí klikat na FDF, jinak se mu otevřel prázdný formulář.
Prave sa hram s vyplnitelnym PDFkom.
Otvoril a vyplnil som ho vo Foxite, nasledne otvoril v Adobre Readeri. OK.
Akurat Adobe nevie do tohoto dokumentu aj ukladat, musim pouzit Save as ...
Takto vzniknuta vyplnena kopia je znovu bez problemu otvoritelna a vyplnena vo Foxite.

Cize az na pracnost pri prvotnom vytvarani poli v tlacive, ich vieme aj automaticky vyplnit aj ulozit a takto vzniknuty dokument dalej preposlat (uz ako solo PDF).
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Tonda 25. 11. 2016, 10:25:54
Tu je online konvertor PDF na HTML5:
https://www.idrsolutions.com/online-pdf-to-html5-converter/
Zkusil sem tři PDFka (daňové přiznání, přehled pro ČSSZ a OZP) a na všech to spadlo.

Navíc si představ, že to člověk potřebuje dělat někde na serveru nebo v cloudu v .NETu nebo Javě. Tak se spouštěním externích binárek jako foxit apod nepochodí.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: SB 25. 11. 2016, 13:20:00
...No a dotaz zní - nešlo by to udělat nějak lépe, pohodlněji, to znamená jde nějak programově zjistit ty souřadnice, např.
podle textu apod?
...

1. Práce s PDF je na hovno. Možná (jak někteří píší) by se to vyplatilo předělat do něčeho jiného (HTML, ...), ale to nechám na vás.
2. My to řešili tak, že se vezme originální PDF a do něj se editorem najebe editovatelný formulář s pojmenovanými (neviditelnými) poli na přesných pozicích s přesnými rozměry. Vhodná knihovna pak umí tato pole dle názvu vyhledat a naplnit. Nic lepšího jsme nevymysleli. I tak to může vyžadovat jistou znalost magie, protože práce s PDF je na hovno.
Název: Re:Automatizované doplňování dat do PDF
Přispěvatel: Jan Forman 25. 11. 2016, 14:32:22
Nebyl na to hlavně vůbec určený (co se formuláře týče). Prostě bych se omezil na varianty
1) originální naskenovaný formulář a přes XY doplnit hodnoty (nic tak složitého řekl bych - práce s pravítkem v ruce)
2) generovat vlastní formulář (docela pracné, asi vhodné jen na menší formuláře)
Výhoda je, že je to stoprocentně stabilní a spolehlivé, nevýhoda - při úpravě je nutné samozřejmě korigovat.


...No a dotaz zní - nešlo by to udělat nějak lépe, pohodlněji, to znamená jde nějak programově zjistit ty souřadnice, např.
podle textu apod?
...

1. Práce s PDF je na hovno. Možná (jak někteří píší) by se to vyplatilo předělat do něčeho jiného (HTML, ...), ale to nechám na vás.
2. My to řešili tak, že se vezme originální PDF a do něj se editorem najebe editovatelný formulář s pojmenovanými (neviditelnými) poli na přesných pozicích s přesnými rozměry. Vhodná knihovna pak umí tato pole dle názvu vyhledat a naplnit. Nic lepšího jsme nevymysleli. I tak to může vyžadovat jistou znalost magie, protože práce s PDF je na hovno.