Search in sources :

Example 1 with PDAction

use of org.apache.pdfbox.pdmodel.interactive.action.PDAction in project tika by apache.

the class AbstractPDF2XHTML method handleDestinationOrAction.

private void handleDestinationOrAction(PDDestinationOrAction action, ActionTrigger actionTrigger) throws IOException, SAXException, TikaException {
    if (action == null || !config.getExtractActions()) {
        return;
    }
    AttributesImpl attributes = new AttributesImpl();
    String actionOrDestString = (action instanceof PDAction) ? "action" : "destination";
    addNonNullAttribute("class", actionOrDestString, attributes);
    addNonNullAttribute("type", action.getClass().getSimpleName(), attributes);
    addNonNullAttribute("trigger", actionTrigger.name(), attributes);
    if (action instanceof PDActionImportData) {
        processDoc("", ((PDActionImportData) action).getFile(), attributes);
    } else if (action instanceof PDActionLaunch) {
        PDActionLaunch pdActionLaunch = (PDActionLaunch) action;
        addNonNullAttribute("id", pdActionLaunch.getF(), attributes);
        addNonNullAttribute("defaultDirectory", pdActionLaunch.getD(), attributes);
        addNonNullAttribute("operation", pdActionLaunch.getO(), attributes);
        addNonNullAttribute("parameters", pdActionLaunch.getP(), attributes);
        processDoc(pdActionLaunch.getF(), pdActionLaunch.getFile(), attributes);
    } else if (action instanceof PDActionRemoteGoTo) {
        PDActionRemoteGoTo remoteGoTo = (PDActionRemoteGoTo) action;
        processDoc("", remoteGoTo.getFile(), attributes);
    } else if (action instanceof PDActionJavaScript) {
        PDActionJavaScript jsAction = (PDActionJavaScript) action;
        Metadata m = new Metadata();
        m.set(Metadata.CONTENT_TYPE, "application/javascript");
        m.set(Metadata.CONTENT_ENCODING, StandardCharsets.UTF_8.toString());
        m.set(PDF.ACTION_TRIGGER, actionTrigger.toString());
        m.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE, TikaCoreProperties.EmbeddedResourceType.MACRO.name());
        String js = jsAction.getAction();
        js = (js == null) ? "" : js;
        if (embeddedDocumentExtractor.shouldParseEmbedded(m)) {
            try (InputStream is = TikaInputStream.get(js.getBytes(StandardCharsets.UTF_8))) {
                embeddedDocumentExtractor.parseEmbedded(is, xhtml, m, false);
            }
        }
        addNonNullAttribute("class", "javascript", attributes);
        addNonNullAttribute("type", jsAction.getType(), attributes);
        addNonNullAttribute("subtype", jsAction.getSubType(), attributes);
        xhtml.startElement("div", attributes);
        xhtml.endElement("div");
    } else {
        xhtml.startElement("div", attributes);
        xhtml.endElement("div");
    }
}
Also used : PDAction(org.apache.pdfbox.pdmodel.interactive.action.PDAction) PDActionImportData(org.apache.pdfbox.pdmodel.interactive.action.PDActionImportData) PDActionLaunch(org.apache.pdfbox.pdmodel.interactive.action.PDActionLaunch) AttributesImpl(org.xml.sax.helpers.AttributesImpl) BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) TikaInputStream(org.apache.tika.io.TikaInputStream) InputStream(java.io.InputStream) Metadata(org.apache.tika.metadata.Metadata) PDActionJavaScript(org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript) PDActionRemoteGoTo(org.apache.pdfbox.pdmodel.interactive.action.PDActionRemoteGoTo)

Aggregations

BufferedInputStream (java.io.BufferedInputStream)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 InputStream (java.io.InputStream)1 PDAction (org.apache.pdfbox.pdmodel.interactive.action.PDAction)1 PDActionImportData (org.apache.pdfbox.pdmodel.interactive.action.PDActionImportData)1 PDActionJavaScript (org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript)1 PDActionLaunch (org.apache.pdfbox.pdmodel.interactive.action.PDActionLaunch)1 PDActionRemoteGoTo (org.apache.pdfbox.pdmodel.interactive.action.PDActionRemoteGoTo)1 TikaInputStream (org.apache.tika.io.TikaInputStream)1 Metadata (org.apache.tika.metadata.Metadata)1 AttributesImpl (org.xml.sax.helpers.AttributesImpl)1