在控制台应用程序中使用c#,如何删除PDF文件的最后一页而不重写 PDF文件?
我知道如何将PDF重新编写为除了最后一页之外的新PDF,但我尝试使用iTextSharp进行重新编写PDF ,但是我失败了,所以我需要帮助。
由于
答案 0 :(得分:0)
我认为最简单的方法是在交叉引用表中将最后一页的对象标记为空闲。如果你有"旧式"交叉引用表位于文件末尾,看起来像
xref 0 42 0000000003 65535 f 0000000017 00000 n 0000000081 00000 n ...
然后您需要做的就是将适当对象记录的n
更改为f
。
如果你有使用交叉引用流的文件,那么它会有点复杂,因为流通常是压缩的,而你在重新压缩它之后只更改其中的一个/几个字节,它的长度可能会改变这样它就不适合原来的空间。
所以最安全的赌注似乎是对文件进行增量更新,将最后一页对象标记为空闲。这将意味着在原始文件的末尾添加新的交叉引用信息,其中所需的页面对象被标记为空闲。或者更好的方法是编写新版本的Page Tree对象......
这些解决方案要求您知道最后一页的对象ID,我不知道itextsharp
所以我不知道它会帮助您找到它。您可能需要分析您的文件以找到ID。