gpt4 book ai didi

.net - 生成 PDF

转载 作者:行者123 更新时间:2023-12-01 01:25:39 26 4
gpt4 key购买 nike

我想学习如何生成 PDF,我不想使用任何第三方工具,我想自己用代码创建它。到目前为止,我所看到的唯一示例是我通过在第 3 方 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 和生成的对象在文件中的位置。

因此,除了简单地将对象写入文件之外,您还必须跟踪定义间接对象的文件位置。

所有这一切都是可行的,但您很快就会发现,在编写这些文件时,更改输出流并保持整洁将变得非常具有挑战性。更糟糕的是,其他人也这样做了,所以现在 Acrobat 设法以某种方式处理了一堆乱七八糟的 PDF。例如,GhostScript(希望这是固定的)生成的 PDF 的交叉引用表完全是垃圾——它们没有指向任何有用的东西。然后,有些生产者通过使用错误的数据类型作为字典条目或其他缺少规范所需信息的数据类型而彻底违反了规范。

使用 PDF 简直是一场噩梦。

尽管如此,这仍然是一个有趣的练习,但是如果您想做任何重要的事情,您需要开始编写好的工具来为您管理所有间接引用以及交叉引用表和字典以及类型检查等等.最后,您会发现现有的图书馆可能会更好地为您服务。

作为使用和生成 PDF 的工具的作者,我恳求您不要让任何不合规的 PDF 流传开来。

关于.net - 生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4507714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com