You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/08/10 17:39:24 UTC

svn commit: r1864898 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java

Author: tilman
Date: Sat Aug 10 17:39:24 2019
New Revision: 1864898

URL: http://svn.apache.org/viewvc?rev=1864898&view=rev
Log:
PDFBOX-4628: support "OnActivation/Action/URI"

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java?rev=1864898&r1=1864897&r2=1864898&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLink.java Sat Aug 10 17:39:24 2019
@@ -18,15 +18,29 @@ package org.apache.pdfbox.pdmodel.fdf;
 
 import java.io.IOException;
 
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.interactive.action.PDActionURI;
+
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 /**
  * This represents a Polygon FDF annotation.
  */
 public class FDFAnnotationLink extends FDFAnnotation
 {
+    private static final Log LOG = LogFactory.getLog(FDFAnnotationLink.class);
+
     /**
      * COS Model value for SubType entry.
      */
@@ -37,7 +51,6 @@ public class FDFAnnotationLink extends F
      */
     public FDFAnnotationLink()
     {
-        super();
         annot.setName(COSName.SUBTYPE, SUBTYPE);
     }
 
@@ -62,5 +75,28 @@ public class FDFAnnotationLink extends F
     {
         super(element);
         annot.setName(COSName.SUBTYPE, SUBTYPE);
+        XPath xpath = XPathFactory.newInstance().newXPath();
+
+        try
+        {
+            NodeList uri = (NodeList) xpath.evaluate("OnActivation/Action/URI", element,
+                    XPathConstants.NODESET);
+            if (uri.getLength() > 0)
+            {
+                Node namedItem = uri.item(0).getAttributes().getNamedItem("Name");
+                if (namedItem != null && namedItem.getNodeValue() != null)
+                {
+                    PDActionURI actionURI = new PDActionURI();
+                    actionURI.setURI(namedItem.getNodeValue());
+                    annot.setItem(COSName.A, actionURI);
+                }
+            }
+            // GoTo is more tricky, because because page destination needs page tree
+            // to convert number into PDPage object
+        }
+        catch (XPathExpressionException e)
+        {
+            LOG.debug("Error while evaluating XPath expression", e);
+        }
     }
 }