2010-04-06 38 views
8

Tôi đang tạo giao diện web để tự động điền biểu mẫu pdf với dữ liệu người dùng từ cơ sở dữ liệu. Quản trị viên cần có khả năng tải lên bản pdf (ngay bây giờ được nhắm mục tiêu ở các biểu mẫu pdf IRS) và sau đó liên kết các trường trong pdf với các trường dữ liệu trong cơ sở dữ liệu.Thao tác với trường mẫu PDF

Tôi cần một cách để giúp quản trị viên liên kết tên trường (các công cụ như "topmostSubform [0] .Page2 [0] .p2-t66 [0]") với các trường dữ liệu trong cơ sở dữ liệu. Tôi đang tìm một cách để sửa đổi PDF một cách có lập trình theo một cách nào đó cung cấp thông tin này.

Về cơ bản, tôi mở các đề xuất về cách tôi có thể làm cho tên trường xuất hiện một cách rõ ràng trên phiên bản sửa đổi của bản gốc pdf. Gần nhất tôi đã nhận được là có thể chèn Tooltips vào các lĩnh vực trong pdf bằng cách chỉ editting dòng pdf nguyên theo dòng. Tuy nhiên khi chỉnh sửa pdf theo cách này, các tên trường là vô nghĩa, và vì vậy tôi không thể sử dụng chúng.

Giải pháp tối ưu sẽ là bất kỳ thứ gì có thể tự động phân tích cú pháp pdf và đặt chú giải công cụ của từng trường thành tên trường. Bất cứ điều gì có thể được chạy từ dòng lệnh, hoặc bất kỳ công cụ python, hoặc chỉ là một cách cơ bản để phân tích chính xác tên của một trường từ một tệp pdf thô sẽ là tuyệt vời.

+0

Xem câu hỏi này http://stackoverflow.com/questions/1890570/how-can-i-auto-populate-a-pdf-form-in-django-python – sepulchered

Trả lời

1

Có thể có giải pháp dễ hơn thế này, nhưng bạn chắc chắn có thể hoàn thành công việc với http://www.reportlab.com/software/opensource/rl-toolkit/'>ReportLab.

Nếu bạn có thể lưu biểu mẫu thuế hiện tại dưới dạng hình ảnh, bạn có thể xác định vị trí của từng mục cần được viết và phát triển mã của bạn sao cho nó tự động xếp các giá trị thích hợp từ cơ sở dữ liệu lên trên hình ảnh hình thức thuế, hoặc bất cứ điều gì nó có thể được).

Một khi bạn đã xác định 1) Điều gì lĩnh vực cần phải được lấy từ cơ sở dữ liệu, và 2), nơi họ đang phải đi vào trong biểu mẫu ...

này về cơ bản là những gì bạn muốn có thực hiện:

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

tôi có thể giải thích các câu hỏi sai nhưng tôi có rất nhiều kinh nghiệm trong thế hệ pdf với python/Django vì sự trang web mà tôi đã làm việc trong 5 tháng. Tôi sẽ đề nghị sử dụng texlive. Về cơ bản những gì tôi đã làm được xây dựng một mẫu tex chung cho một tài liệu và sau đó được sử dụng django templating để chèn các lĩnh vực. Tôi đưa ra các mẫu như thể nó đã được html bằng cách sử dụng render_to_string và sau đó tạo ra nó bằng cách sử dụng lệnh pdflatex. Tôi chạy pdflatex bằng cách sử dụng mô-đun subth pythons và thêm một chút. Để tạo ra tôi đã sử dụng mô-đun này pdflatex guys http://bit.ly/KaDMBp, với một số sửa đổi. Tất cả những thứ bạn cần nằm trong core.py bên trong thư mục pdflatex.

Ex tài liệu tex (test.tex))

\begin{document} 

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

\end{document} 

Ex render mẫu với khuôn mẫu django và render_to_string)

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

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

Ex tạo như pdf)

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

cao su có một đường cong học tập khó chịu, khó chịu nhưng nếu bạn đặt vào thời gian bạn có thể tìm hiểu những gì bạn cần o biết để tạo các tệp pdf này.

Hy vọng điều này sẽ hữu ích.

1

Đây có thể là cách theo dõi dự định của bạn; nhưng, nó có thể đáng để suy nghĩ. Tôi đã làm việc trên phân tích cú pháp quét tài liệu có cấu trúc vào trường hợp mô hình Django. Sử dụng tesseract và unpaper để thực hiện xử lý trước và OCR, tôi nhận được độ chính xác hơn 99%. Điều đó cho phép tôi phân tích văn bản đầu ra OCR bằng các mô-đun Levenshteinre và thực hiện một đơn giản new_instance = MyModel(parsed1, parsed2, ...).

Dường như bạn đang cố gắng làm điều tương tự. Nhìn vào các biểu mẫu tại http://www.irs.gov/formspubs/ Chúng có xu hướng có các nhãn văn bản nằm liền kề với các trường. Sử dụng một cái gì đó như py-tesseract, bạn sẽ có thể OCR các nhãn, phủ lên văn bản OCR trên hình ảnh biểu mẫu và cho phép người dùng chọn/chỉnh sửa nhãn trường.

Có một công cụ nhỏ đẹp, ocrfeederhttps://live.gnome.org/OCRFeeder, được viết bằng python và sẽ cung cấp cho bạn ý tưởng cơ bản về cách thức hoạt động của quy trình trong ứng dụng dành cho máy tính để bàn. Chúc may mắn.