iText - clickable image should open ms word attachment

纵饮孤独 提交于 2019-12-02 05:00:53

问题


How can I make an image clickable so the attached ms word document opens? I have some PDFs here where there are some images (ms word icon with the ms word file name beneath the icon) which open the attached ms word document by clicking on the images and I wondered how can I do this with the iText library. I can add the images and attach the ms word documents but I haven't figured out how I can apply somwthing like an action (GoToE seems only available for PDF attachments) or a link?


回答1:


Please take a look at section 12.6.4.4 in ISO-32000-1 (that is the PDF specification). That section is titled "Embedded Go-To Actions":

As you've found out, the behavior you describe is by specification. The GoToE action is for jumping to and form a PDF file that is embedded in another PDF file. Other document formats aren't supported because.

Your only option is to introduce a file attachment annotation instead of an Embedded file along with a GoToE action. See for instance the FileAttachmentAnnot example:

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();
}

In this example, we create a PdfAnnotation and we define a custom appearance for this annotation (instead of the pin or the paperclip symbol). I used an image because that's what you seem to want. Check out the result here (this works with Adobe Reader, but not all PDF viewers support this).



来源:https://stackoverflow.com/questions/31006683/itext-clickable-image-should-open-ms-word-attachment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!