输入:包含嵌入字体的(例如14个)PDF / A-1b文件列表.
处理:与Apache PDFBOX进行简单合并.
结果:1个文件大小(太大)的PDF / A-1b文件. (它几乎是所有源文件大小的总和).
问题:有没有办法减少生成的PDF的文件大小?
想法:删除冗余的嵌入字体.但是怎么样?这是正确的方法吗?
不幸的是,以下代码没有完成这项工作,但突出了明显的问题.
try (PDDocument document = PDDocument.load(new File("E:/tmp/16189_ZU_20181121195111_5544_2008-12-31_Standardauswertung.pdf"))) {
List collectedFonts = new ArrayList<>();
PDPageTree pages = document.getDocumentCatalog().getPages();
int pageNr = 0;
for (PDPage page : pages) {
pageNr++;
Iterable names = page.getResources().getFontNames();
System.out.println("Page " + pageNr);
for (COSName name : names) {
collectedFonts.add(name);
System.out.print("\t" + name + " - ");
PDFont font = page.getResources().getFont(name);
System.out.println(font + ", embedded: " + font.isEmbedded());
page.getCOSObject().removeItem(COSName.F);
page.getResources().getCOSObject().removeItem(name);
}
}
document.save("E:/tmp/output.pd