2010-04-06 16 views
8

Tworzę interfejs internetowy do automatycznego wypełniania formularzy pdf danymi użytkownika z bazy danych. Administrator musi mieć możliwość przesłania pliku pdf (obecnie przeznaczonego dla formularzy IRS pdf), a następnie powiązać pola w pliku pdf z polami danych w bazie danych.Manipulowanie polem formularza PDF

Potrzebuję sposobu, aby pomóc administratorowi powiązać nazwy pól (rzeczy takie jak "topmostSubform [0] .Page2 [0] .p2-t66 [0]") z polami danych w bazie danych. Szukam sposobu, aby zmodyfikować PDF programowo, aby w pewien sposób dostarczyć te informacje.

Zasadniczo jestem otwarty na sugestie, w jaki sposób mogę sprawić, aby nazwy pól pojawiały się w oczywisty sposób na zmodyfikowanej wersji oryginalnego pliku pdf. Najbliższe, jakie udało mi się uzyskać, to możliwość wstawiania etykiet narzędzi w pola w pliku pdf, po prostu edytując nieprzetworzony plik PDF wiersz po wierszu. Jednak podczas edytowania pdf w ten sposób nazwy pól są bełkotliwe, więc nie mogę ich po prostu użyć.

Optymalnym rozwiązaniem byłoby cokolwiek, co automatycznie analizowałoby plik PDF i ustawiło etykietę każdego pola na nazwę pola. Wszystko, co można uruchomić z wiersza poleceń lub dowolnego narzędzia Pythona lub po prostu podstawowe, jak poprawnie parsować nazwę pola z surowego pliku pdf byłoby niesamowite.

+0

Zobacz to pytanie http://stackoverflow.com/questions/1890570/how-can-i-auto-populate-a-pdf-form-in-django-python – sepulchered

Odpowiedz

1

Może istnieć łatwiejsze rozwiązanie niż to, ale na pewno można to zrobić za pomocą http://www.reportlab.com/software/opensource/rl-toolkit/'>ReportLab.

Jeśli możesz zapisać obecne formularze podatkowe jako obraz, możesz określić, gdzie każdy z elementów musi zostać napisany i rozwinąć swój kod, aby automatycznie warstw odpowiednie wartości z bazy danych na górze obrazu (formularz podatkowy, czy cokolwiek to może być).

Po określeniu 1) Co trzeba Pola być pobierane z bazy danych, oraz 2) gdy jesteś jechać na w formie ...

to zasadniczo co byłbyś robi:

from reportlab.pdfgen import canvas 

report_string_values = ['Alex',500,500],['Guido',400,400], 
c = canvas.Canvas('hello.pdf') 
c.drawImage(background_image,x_pos,y_pos) # x_pos and w_pos are # pixels from bl origin 
for rsv in report_string_values: 
    c.drawString(rsv.x_pos,rsv.,rsv.text) 
c.showPage() 
c.save() 
0

i może być interpretacji pytanie źle, ale mam duże doświadczenie w generowaniu pdf z Python/Django ze względu na strona, nad którą pracowałem przez 5 miesięcy. Sugerowałbym użycie texlive. Zasadniczo stworzyłem ogólny szablon tex dla dokumentu, a następnie użyłem szablonów do wstawienia pól. Wyrenderowałem szablon tak, jakby był html przy użyciu render_to_string, a następnie wygenerowałem go za pomocą komendy pdflatex. Uruchomiłem pdflatex przy użyciu modułu podprocesowego pythons i trochę więcej. Do generowania użyłem tego faceta pdflatex module http://bit.ly/KaDMBp, z pewnymi modyfikacjami. Wszystkie rzeczy, których potrzebujesz, znajdują się w pliku core.py wewnątrz katalogu pdflatex.

Ex dokument tex (test.tex))

\begin{document} 

my name is {{input_name}} and i live in {{input_location}}. 

\end{document} 

Ex renderowania szablon z Django szablonów i render_to_string)

params={input_name:"andrew",input_location:"nyc"} 

tex_doc = render_to_string('test.tex', params) 

Ex generującego jako pdf)

pdflatex = PDFLatex(texfile=tex_path,outputdir=pdf_path) 
pdflatex.transform() 

Lateks ma nieco denerwujące, trudne krzywa uczenia się, ale jeśli umieścisz czas, możesz dowiedzieć się, czego potrzebujesz o wiedzieć, aby utworzyć te pliki pdf.

Mam nadzieję, że to pomoże.

1

Może to być na niewłaściwym miejscu; ale może warto pomyśleć. Pracowałem nad analizowaniem skanowanych dokumentów strukturalnych w instancjach modelu Django. Używając tesseract i unpaper do wstępnego przetwarzania i OCR, uzyskuję ponad 99% dokładność. To pozwala mi parsować tekst wyjściowy OCR z modułami Levenshtein i re i zrobić prosty new_instance = MyModel(parsed1, parsed2, ...).

Wygląda na to, że próbujesz zrobić coś podobnego. Patrząc na formularze pod http://www.irs.gov/formspubs/ Mają one etykiety tekstowe w lewo przy polach. Używając czegoś w stylu py-tesseract, powinieneś być w stanie rozpoznać etykiety, pokryć tekst OCR nad obrazem formularza i pozwolić użytkownikowi na wybór/edycję etykiet pól.

Jest ładne małe narzędzie, ocrfeederhttps://live.gnome.org/OCRFeeder, napisane w pythonie i powinno dać ci podstawowe pojęcie o tym, jak działa ten proces w aplikacji komputerowej. Powodzenia.

Powiązane problemy