Automatizované doplňování dat do PDF

wajta

Automatizované doplňování dat do PDF
« kdy: 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
« Poslední změna: 24. 11. 2016, 14:19:49 od Petr Krčmář »


ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Práce s PDF
« Odpověď #1 kdy: 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.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Práce s PDF
« Odpověď #2 kdy: 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).

wajta

Re:Práce s PDF
« Odpověď #3 kdy: 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.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Práce s PDF
« Odpověď #4 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


dustin

Re:Práce s PDF
« Odpověď #5 kdy: 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/

wajta

Re:Práce s PDF
« Odpověď #6 kdy: 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

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Práce s PDF
« Odpověď #7 kdy: 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ší
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

wajta

Re:Práce s PDF
« Odpověď #8 kdy: 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í ...

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Práce s PDF
« Odpověď #9 kdy: 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
« Poslední změna: 24. 11. 2016, 12:56:14 od ZAJDAN »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Tonda

  • *****
  • 632
    • Zobrazit profil
    • E-mail
Re:Práce s PDF
« Odpověď #10 kdy: 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.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:Automatizované doplňování dat do PDF
« Odpověď #11 kdy: 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?
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Tonda

  • *****
  • 632
    • Zobrazit profil
    • E-mail
Re:Automatizované doplňování dat do PDF
« Odpověď #12 kdy: 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í.

Pepa Procházka

Re:Automatizované doplňování dat do PDF
« Odpověď #13 kdy: 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í.

Medo

Re:Automatizované doplňování dat do PDF
« Odpověď #14 kdy: 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 ...