How to create a JavaScript action to open the attachments panel?

Tags: actionsjavascript actionattachmentsfile attachmentiText 7

Is there an action which opens the attachments panel? Not right away, but when the user presses some text?

I know the writer.setViewerPreferences(PdfWriter.PageModeUseAttachments) but I don't want it to open right away.

Posted on StackOverflow on Sep 12, 2012 by Michael A

This can be done using a JavaScript action. Use the following code in iText 7:

public void createPdf(String dest) throws IOException {
    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
    Document doc = new Document(pdfDoc);
    PdfAction action = PdfAction.createJavaScript("app.execMenuItem('ShowHideFileAttachment');");
    Link link = new Link("Show / Hide attachment panel", action);
    Paragraph paragraph = new Paragraph(link);
    doc.add(paragraph);
    doc.close();
}

Note that this won't work on all viewers (app = Adobe Reader) and it won't work if people disable Javascript.

Click this link if you want to see how to answer this question in iText 5.