iText - 可点击的图像应该打开 ms word 附件

iText - clickable image should open ms word attachment

如何使图像可点击以便打开附加的 ms word 文档?我这里有一些 PDF,其中有一些图像(图标下方带有 ms word 文件名的 ms word 图标),可通过单击图像打开附加的 ms word 文档,我想知道如何使用 iText 库执行此操作。我可以添加图像并附加 ms word 文档,但我还没有弄清楚如何应用类似动作的东西(GoToE 似乎仅适用于 PDF 附件)或 link?

请查看 ISO-32000-1 中的第 12.6.4.4 节(即 PDF 规范)。该部分的标题为 "Embedded Go-To Actions":

如您所知,您描述的行为符合规范。 GoToE 动作用于跳转并形成嵌入在另一个 PDF 文件中的 PDF 文件。不支持其他文档格式,因为。

您唯一的选择是引入文件附件注释而不是嵌入文件以及 GoToE 操作。例如,参见 FileAttachmentAnnot 示例:

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    Rectangle rect = new Rectangle(36, 700, 136, 800);
    PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(
            writer, PATH, "test.docx", null);
    PdfAnnotation attachment =
            PdfAnnotation.createFileAttachment(writer, rect, "Click me" , fs);
    PdfAppearance app = writer.getDirectContent().createAppearance(100, 100);
    Image img = Image.getInstance(IMG);
    img.scaleAbsolute(100, 100);
    img.setAbsolutePosition(0, 0);
    app.addImage(img);
    attachment.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, app);
    writer.addAnnotation(attachment);
    document.close();
}

在此示例中,我们创建了一个 PdfAnnotation 并为此注释定义了自定义外观(而不是大头针或回形针符号)。我使用了一个图像,因为这就是你想要的。查看结果 here(这适用于 Adob​​e Reader,但并非所有 PDF 查看器都支持)。