Foxit PDF SDK - 删除页面会增加文档大小

时间:2014-06-23 17:29:44

标签: pdf pdf-generation foxit

Foxit SDK中的DeletePage功能允许从PDF中删除页面。删除页面并保存文档时,输出文档的文件大小(页面较少)大于原始文件。

这可以通过SDK随附的PDF示例应用程序看到:

$ ./simple_sample/bin/rel_gcc/pdfpage_organization 
...
Success: Use <rb> mode to open the file InsertPages.pdf and associate it with a stream.
Success: Create the file object.
Success: Open file successfully .
Success: Load PDF document successfully.
Success: Get page with index 1.
Success: Delete page with index 1.
Using extension implementation to open the file.
Success: Use <wb> mode to open the file SourcePage_delete.pdf and associate it with a stream.
Success: Create the file object.
Success: The PDF document save to SourcePage_delete.pdf.

检查输出:

ll simple_sample / input_files / SourcePage.pdf -rw-r - r - @ 1 richard员工 92K 2013年12月17日simple_sample / input_files / SourcePage.pdf

ll simple_sample / output_files / pdfpage_organization / SourcePage_delete.pdf -rw-r - r - @ 1 richard员工 96K Jun 23 10:22 simple_sample / output_files / pdfpage_organization / SourcePage_delete.pdf

SourcePage_delete.pdf确实有一个预期的页面少一个,但是大4k。我可以从100页文档中删除99页相同的结果,即文件大小不反映页数。

2 个答案:

答案 0 :(得分:1)

根据您提供的示例文档和@ MihaiIancu的评论,您将保存增量PDF更新,基本上只是将新信息附加到现有文件的末尾。

根据Foxit SDK网站,函数FSPDF_Doc_StartSaveToFile为第三个参数FSPDF_SAVEFLAG_INCREMENTALFSPDF_SAVEFLAG_NOORIGINALFSPDF_SAVEFLAG_REMOVESECURITYFSPDF_SAVEFLAG_OBJECTSTREAM取一个标记。在你的情况下,我认为FSPDF_SAVEFLAG_NOORIGINAL应该做你正在寻找的事情。如果你没有直接使用这个函数,那么仍然应该是一个包含这些参数之一的包装器。

答案 1 :(得分:0)

在最新的Linux版Foxit PDF SDK 6.4中,保存方法支持e_SaveFlagRemoveRedundantObjects。通常,当您删除页面时,它只是在PDF结构中引用。如果设置此标志,它将仅删除PDF中未引用的任何对象。