django PDF表单字段操作

3z6pesqy  于 2023-02-20  发布在  Go
关注(0)|答案(6)|浏览(149)

我正在做一个网页界面,以自动填充pdf格式与用户数据库中的数据。管理员需要能够上传一个pdf(现在针对国税局的pdf格式),然后在数据库中的数据字段关联的pdf字段。
我需要一种方法来帮助管理员将字段名称(如“topmostSubform[0].Page2[0].p2-t66[0]”)与数据库中的数据字段关联起来。我正在寻找一种方法来修改PDF程序,以某种方式提供此信息。
基本上,我很乐意听取关于如何让字段名称以一种明显的方式出现在原始pdf的修改版本上的建议。我得到的最接近的建议是,只需逐行编辑原始pdf,就可以将工具提示插入到pdf的字段中。然而,当以这种方式编辑pdf时,字段名称是混乱的,所以我不能直接使用它们。
一个最佳的解决方案是任何可以自动解析pdf文件并将每个字段的工具提示设置为字段名称的东西,任何可以从命令行运行的东西,或者任何python工具,或者仅仅是一个基本的如何从原始pdf文件中正确解析字段名称的东西都将是令人惊叹的。

imzjd6km

imzjd6km1#

可能有比这更简单的解决方案,但您绝对可以通过http://www.reportlab.com/software/opensource/rl-toolkit/ '〉ReportLab完成这项工作。
如果您可以将当前的税务表单保存为图像,则可以确定每个项目需要写入的位置,并开发代码,以便它自动将数据库中的适当值分层到图像(税务表单或其他内容)的顶部。
一旦你确定了1)哪些字段需要从数据库中提取,2)它们应该在表单中的什么位置...
这基本上就是你要做的

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()
olhwl3o2

olhwl3o22#

这里有一个postscript解析器:https://github.com/haxwithaxe/py-ps-parser
我一直有兴趣玩它,但还没有。

6bc51xsx

6bc51xsx3#

这可能偏离了你的预期轨道;但是,这可能值得一想。我一直在致力于将扫描的结构化文档解析为Django模型示例。使用tesseract和unpaper进行预处理和OCR,我获得了超过99%的准确率。这让我可以使用Levenshteinre模块解析OCR输出文本,并执行简单的new_instance = MyModel(parsed1, parsed2, ...)
看起来你正在尝试做一些类似的事情。看看http://www.irs.gov/formspubs/的表单,它们倾向于在字段的左边有文本标签。使用类似py-tesseract的东西,你应该能够OCR标签,将OCR文本覆盖在表单图像上,并允许用户选择/编辑字段标签。
有一个很好的小工具ocrfeederhttps://live.gnome.org/OCRFeeder,它是用python编写的,应该可以给予你对桌面应用程序中的流程有一个基本的了解,祝你好运。

v2g6jxz6

v2g6jxz64#

政府表单通常不是标准的PDF,而是PDF Package 器中的JavaScript驱动XFA,因此要以编程方式输入数据,您需要一个查找表,因为顺序很少是视觉顺序。
这里的第一个字段“single yes or no”“topmostSubform[0].Page1[0].c1_01[0]”是一个在条目列表中指定的复选框。当然,此表单中没有“topmostSubform[0].Page2[0].p2-t66[0]”,因此对于每个XFA,您需要完全不同的查找表。否则,请遵循条目(幸运的是,在此表单中有一些排序的意义),因此自由格式字段“topmostSubform[0].Page1[0].f1_01[0]”靠近“dependent:“等。
有一些XFA专用应用程序可以提取静态字段的位置,但如果字段是动态适应的,那么页面位置将是一场移动的盛宴。
对于XFA,您需要一个智能的专用Adobe列表(通常是相关部门应要求提供的xml / xlsx输入输出),或者如果Acrobat Pro不阻止这种尝试,您可以自己构建。

yeotifhr

yeotifhr5#

我可能理解错了这个问题,但是我在python/django生成pdf方面有很多经验,因为我在这个网站上工作了5个月。我建议使用texlive。基本上我所做的是为一个文档构建一个通用的tex模板,然后使用django模板插入字段。我使用render_to_渲染了这个模板,就好像它是html一样字符串,然后使用pdflatex命令生成它。我使用pythons子进程模块和一些额外的模块运行pdflatex。为了生成它,我使用了这个pdflatex模块http://bit.ly/KaDMBp,做了一些修改。你需要的所有东西都在core.py的pdflatex目录中。
Ex tex文件(测试.tex))

\begin{document}

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

\end{document}

Ex渲染模板,带有django模板和render_to_string)

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

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

Ex生成为pdf)

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

乳胶有一个有点烦人,困难的学习曲线,但如果你投入时间,你可以学习你需要知道的,以便创建这些PDF文件。
希望这个有用。

pobjuy32

pobjuy326#

SDAPS framework专为以下场景而设计:它有助于批量处理基于PDF格式的表单,从指定字段提取内容,并将这些内容导入数据库以供进一步处理。

相关问题