生成PDF

我想学习如何生成PDF,我不想使用任何第三方工具,我想在代码中自己创建它。到目前为止我看到的唯一的例子是我在第三方dll上打开反射器时看到的代码,看看发生了什么。不幸的是,我到目前为止看到的dll似乎是打击user32.dll和gdi32.dll,以帮助创建pdf文档,我的问题是我不知道他们在做什么,更重要的是为什么? 有没有人有任何好的教程或参考,这可能指向我正确的方向。 提前致谢。     
已邀请:
规范是最终指南。以下是您最终必须做的事情: 写一个标题 编写定义内容的对象 写一个交叉引用表 写一个预告片 标题很简单 - 它定义文件是PDF和版本。 PDF中的对象数据类型。这包括bool,数字,字符串,列表/数组,字典和流。 对象可以直接或间接编写。 直接对象按原样写入。 间接对象​​的写法如下:
<objid> <generation> obj <direct object> endobj
例如,我可以写:
3 0 obj (This is a string within PDF.) endobj
每当我想在其他地方使用该字符串时,我只需要使用间接引用,其定义为:
<objid> <generation> R
在这种情况下,我可以将我的字符串称为:
3 0 R
为了快速查找对象,有一个交叉引用表,用于指示特定id和代的对象在文件中的位置。 因此,除了简单地将对象写入文件之外,还必须跟踪已定义间接对象的文件位置。 所有这些都是可行的,但是你会很快发现,当你编写这些文件时,在输出流中进行更改并保持整洁有用将变得非常具有挑战性。更糟糕的是,其他人也做到了这一点,所以现在有一堆垃圾PDF文件在野外,Acrobat设法以某种方式处理。例如,GhostScript(希望这是固定的),生成的PDF,其交叉引用表是完全垃圾 - 他们指出没什么用处。然后有些生产者通过使用错误的数据类型进行字典条目或其他缺少规范要求信息的数据类型来违反规范。 消费PDF是相当噩梦的。 尽管如此,这是一个有趣的练习,但是如果你想做任何重要的事情,你需要开始编写好的工具来管理你的所有间接引用,交叉引用表和字典以及类型检查等等。最后,您会发现现有的库可能会更好地为您服务。 作为使用和生成PDF的工具的作者,我将恳求您不要让任何不合规的PDF出现在野外。     
我们在博客上运行了一套关于创建基本PDF的教程,网址为http://www.jpedal.org/PDFblog/?s=%22Make+your+own+PDF+file%22     
我知道你已经声明你不想使用第三方工具,但请至少看看iTextSharp。除非有真正的理由你不能使用这样的工具,否则这应该完全符合你的要求。     
对于PDF: PDFjet开源版 Sharppdf 和Sharppdf教程 如果花费一点,并且想要最好的,你不在乎吗?然后我会推荐我Aspose.Pdf。净 编辑:我现在看到你不想使用3D派对。但我会推荐你​​最强的!当已经有这么多时,这将需要而不是lønomt。当它存在时我们不制造轮子,是吗? 但是,当你真的想花时间在这上面时,我通过阅读代码修复了nfop并看到他们是如何做到的。 并阅读可移植文档格式。何时从一开始就制作类似的东西是重要的,以了解他们使用什么标准以及如何构建格式。     
Adobe托管了可免费下载的ISO PDF规范的副本。对于这样的事情,它将是不可用的: http://www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf     
在使用现成工具或在编写自己的代码之前查看代码之间有一个很好的界限。如果您可以接受后者,只需选择一个很好的开源工具,如http://www.pdfforge.org/,然后查看代码。 警告:如果您计划分发工具,那么从开源工具中获取太多灵感可能会迫使您将自己的工具开源。我不是律师,我不知道多少钱。     

要回复问题请先登录注册