【发布时间】:2013-07-03 16:05:45
【问题描述】:
在org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions 中有setVisualSignature 方法。我可以从其他具有视觉签名外观的 pdf 流创建视觉签名(以复制外观)。
1) 我创建了一个签名外观 pdf,并使用setVisualSignature() 方法,我设法复制了视觉签名。 一切正常;
2) 我从 PDFBox 更改视觉签名(更改图像)。获取 COSObject:
Iterator<Entry<COSObjectKey, Long>> xrefEntriesIt = doc.getDocument()
.getXrefTable().entrySet().iterator();
while (xrefEntriesIt.hasNext()) {
COSObject object = doc.getDocument().getObjectFromPool(
xrefEntriesIt.next().getKey());
if (object.getDictionaryObject(COSName.SUBTYPE) == COSName.IMAGE) {
changeImage(object, doc);
}
}
并改变图像:
private static void changeImage(COSObject obj, PDDocument doc) {
PDXObjectImage imageInPdf =
(PDXObjectImage) PDXObject.createXObject((COSStream) obj.getObject());
File inputFile = new File("/new_SIGNATURE_IMG.jpg");
PDXObjectImage newImage = new PDJpeg(doc, new FileInputStream(inputFile));
imageInPdf.getCOSStream().replaceWithStream(newImage.getCOSStream());
doc.save("/new.pdf");
}
一切正常。
3) 当我使用新的 pdf 和新的外观图像(我用我的代码更改)调用 setVisualSignature() 方法时,我有这个错误:
线程“主”java.lang.ClassCastException 中的异常: org.apache.pdfbox.cos.COSObject 无法转换为 org.apache.pdfbox.cos.COS字典在 org.apache.pdfbox.pdmodel.PDDocument.addSignature(PDDocument.java:474)
那是samples
会发生什么?我是否错误地更改了图像?
【问题讨论】:
-
迟到总比不到好,这将在 1.8.10 中修复,请参阅 PDFBOX-2767。
标签: pdf adobe pdf-generation digital-signature pdfbox