Fonts PDFBox:克隆字体
我正在用以下代码克隆一个文档进行编辑Fonts PDFBox:克隆字体,fonts,clone,pdfbox,Fonts,Clone,Pdfbox,我正在用以下代码克隆一个文档进行编辑 cloneDoc = new PDDocument() PDFCloneUtility cloner = new PDFCloneUtility(cloneDoc); for(int pageIndex = 0; pageIndex < mainDoc.getNumberOfPages(); ++pageIndex) { PDPage page = mainDoc.getPage(pageIndex); PDPage newPa
cloneDoc = new PDDocument()
PDFCloneUtility cloner = new PDFCloneUtility(cloneDoc);
for(int pageIndex = 0; pageIndex < mainDoc.getNumberOfPages(); ++pageIndex) {
PDPage page = mainDoc.getPage(pageIndex);
PDPage newPage = new PDPage((COSDictionary) cloner.cloneForNewDocument(page.getCOSObject()));
newPage.setCropBox(page.getCropBox());
newPage.setMediaBox(page.getMediaBox());
newPage.setRotation(page.getRotation());
if(null != page.getResources()) {
newPage.setResources(new PDResources((COSDictionary) cloner.cloneForNewDocument(page.getResources())));
} else {
newPage.setResources(new PDResources());
}
cloneDoc.addPage(newPage);
}
cloneDoc=newpddocument()
PDFCloneUtility cloner=新的PDFCloneUtility(cloneDoc);
对于(int pageIndex=0;pageIndex
文档已正确克隆,但字体未被克隆。由于此文本,字体和字号看起来不同,并且包含缺少的字符
mainDoc在mainDoc.getFontsToSubset()中有两种字体,cloneDoc中没有这两种字体。我怀疑pdfbox类是为克隆仍在生成过程中的文档数据部分而设计的,而子集的字体就是这样一种未完成的实体。人们通常可以从通过从文件(或流)加载创建的
PDDocument
对象中克隆数据,而无需进行大量编辑。这不是克隆的目的。您可以直接将页面添加到目标,只需避免在目标文档之前关闭源文档。可能还有其他缺点,您无法正确获取表单字段。该类(由我!)在中公开以解决一个问题。后来发现克隆不是解决方案,这被还原了,但我无法删除public,因为这会破坏API。提醒我再次将3.0的包本地化:-)