从python创建pdf

时间:2013-12-20 17:48:01

标签: python pdf eps

我希望从Python应用程序生成PDF。 它们开始相对简单,但有些可能会变得更复杂(基本上就像文档一样,但后面会包含水印)

之前我曾在原始postscript中工作并提供我可以生成正确的标题等文件并在文件的最后我想避免使用复杂的库,这些库可能不完全符合我的要求。有些似乎已经有了bitrot并且不再受支持(pypdf和pypdf2)特别是当我知道PDF / Postscript可以完全满足我的需求时。 PDF内容确实不是那么复杂。

我可以通过将适当的文本标题写入文件和我的postscript代码来生成EPS(Encapsulated postscript)。但是检查PDF有一个lil二进制头我不知道如何生成。

我可以生成EPS并转换它。我对此并不十分满意,因为生产环境是Windows 2008服务器(Dev是Ubuntu 12.04),制作东西并转换它看起来非常愚蠢。

以前有人这样做过吗? 我不想使用图书馆而迂腐吗?

3 个答案:

答案 0 :(得分:4)

只要你在Python 2.7中工作,Reportlab似乎是目前最好的解决方案。它的功能非常全面,可能有点复杂,具体取决于你正在做什么,但由于你似乎熟悉PDF内部,一般希望学习曲线不会太陡峭。

答案 1 :(得分:4)

borrowed from ask.yahoo

  

如果PDF文件是1.1版本的PDF文件,则PDF文件以“%PDF-1.1”开头。当他们没有存储二进制数据对象时,您可以正常阅读PDF文件,如果您不需要在其中存储类似Paint位图的二进制对象,您甚至可以使用记事本创建PDF文件。

     

但是在看到“%PDF-1.1”后你忽略了之后的内容(Adobe Reader也是如此)并直接到文件的末尾,其中有一行显示“%% EOF”。这始终是文件中的最后一件事;如果在那里,你知道文件中那个位置之前只有几个字符,那么单词“startxref”后跟一个数字。该数字告诉读者程序在文件中查找的位置,以查找描述文件结构的项目列表的开头。列表中的这些项可以是页面对象,字典对象或流对象(如位图的二进制数据),每个项都有“obj”和“endobj”标记其描述的开始和结束位置。

     

对于相当简单的PDF文件,您可以像使用记事本一样输入文本,以生成Adobe Reader和其他PDF查看器程序可以正确读取和显示的工作PDF文件。

     

做这样的事情是一个挑战,即使是对于一个简单的文件,你真的必须知道你正在做什么才能将任何二进制数据放入文件应该去的地方;但是对于字符数据,你只能输入它。而PDF中使用的所有命令都是你可以输入的字符串形式。最难的部分是计算那些给出文件偏移量的数字。文件中的项目(例如“startxref”之后的数字)。

     

如果文件格式的布局方式引起了您的兴趣,请继续阅读PDF手册,该手册讲述了整个故事。   http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf

但实际上你应该只使用一个库

感谢@LukasGraf提供此链接http://www.gnupdf.org/Introduction_to_PDF,该链接展示了如何从头开始创建一个简单的hello world pdf

答案 2 :(得分:0)

我建议您使用图书馆。我花了很多时间创建 pdfme 并在此过程中学到了很多东西,但这不是您可以为单个项目做的事情。如果您想使用我的库,请查看文档 here