使用纯 C/C++向 PDF 添加注释
Add annotation to PDF using plain C/C++
我正在寻找一种将注释添加到PDF的方法,仅使用纯C/C++(没有第三方库)。
我怎样才能得到这个结果?
这是PDF参考文档第三版。
PDF文件由不同的二进制对象组成,可以使用不同的算法,压缩方案(有损和无损)和编码过滤器进行压缩,编码或加密。每个对象都在引用表中引用,其中包含有关其在文件中的位置的信息。您将需要知道如何处理此表,您将需要实现所有可能的压缩方案,编码过滤器和加密算法,然后您必须处理PDF对象的所有可能结构。
在 PDF 规范中,这些对象称为字典,它们由条目组成。每个条目都有一个类型,该类型可以是简单类型,也可以是另一个字典(或对它的引用),也可以是这些元素类型中的一个或多个数组。因此,我们可以说PDF基本上是字典对象的树。
一旦您的代码能够处理规范中每个可能的字典和树结构,您就可以转到第 8 章 - 规范的交互功能,第8.4 部分 - 注释,并实现一种将注释字典添加到 PDF 文件的方法。
您应该注意到,我什至没有提到PDF文件的热门主题,例如页面内的字体,色彩空间,透明度和绘图说明。我假设您将能够加载文件中的所有对象,创建一个注释对象,以某种方式将其插入对象树中,然后再次"按原样"保存所有对象。这或多或少是iText的工作方式,所以如果你真的想实现这一点,你可以看看iText的源代码,这样你就可以在这种项目所需的工作量有一个小窗口。
您可能还想在SO中查看此答案。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 使用qt+qprinter将工作url添加到pdf中
- 使用纯 C/C++向 PDF 添加注释
- 在.qrc中添加pdf作为资源
- 添加FreeText注释到PDF