在C中编辑或删除PDF标题信息
我需要编辑几个PDF文件的标题信息。 我想要实现的是删除 %PDF-XYZ
之前的所有标题数据。
我想出的一个可能的解决方案是以二进制模式打开 PDF,读取每个字符,直到找到 %PDF-XYZ
。 然后继续读取流的其余部分并将其保存到新文件中。我想这样我最终会得到 PDF 的精确二进制副本,只是具有不同的标题信息。
在 C 中做到这一点的最简单/最好的方法是什么? 有没有可用的库可以帮助我做到这一点? 我也有兴趣听到解决这个问题的不同方法。
谢谢。
I need to edit the header information of several PDF files.
What I'd like to achieve is to remove all header data before %PDF-X.Y.Z
.
What I came up with as a possible solution was to open the PDF in binary mode, read each character until %PDF-X.Y.Z
is found.
Then continue reading the rest of the stream and save it to a new file. I thought this way I will end up with an exact binary copy of the PDF, just with different header information.
What's the easiest/best way to do this in C?
Are there any libraries available that could help me do this?
I'm also interested in hearing different approaches to solve this problem.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,您可以删除
%PDF
标记之前的所有信息,但是您会使文件末尾的外部参照表无效。该表包含对 PDF 对象的偏移引用。最简单的方法是:删除
%PDF
之前的部分并计数,丢弃了多少,相应减少外部参照中的值。Actually you can trow away all information before
%PDF
tag, BUT you make xref table at the end of file invalid. This table contains offset references to PDF objects.Easiest way was: remove the part before
%PDF
and count, how much you trow away, reduce values in xref according.假设剥离文件的开头确实解决了您的问题,您所需要的只是 fopen、fread、fwrite 和 fclose。
您打开文件以二进制模式进行读取。仔细阅读,直到找到神奇的 %PDF 字符串。打开输出文件进行二进制写入。从新的 %PDF 字符串开始写入该文件。写入完成后,关闭这两个文件。
Assuming that stripping the beginning of the file really does solve your problem, all you need are fopen, fread, fwrite and fclose.
You open the file for reading in binary mode. Read up until you find the magic %PDF string. Open the output file for binary writing. Write out to that file, starting with your new %PDF string. When you are done writing, close both files.