You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2019/07/19 20:49:48 UTC
svn commit: r1863433 - in /poi/trunk/src/ooxml:
java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
Author: fanningpj
Date: Fri Jul 19 20:49:48 2019
New Revision: 1863433
URL: http://svn.apache.org/viewvc?rev=1863433&view=rev
Log:
[github-153] XWPFParagraph: easier way to create a link. Thanks to Thibaut Cuvelier. This closes #153
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=1863433&r1=1863432&r2=1863433&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java Fri Jul 19 20:49:48 2019
@@ -273,6 +273,7 @@ public class XWPFDocument extends POIXML
// Get the hyperlinks
// TODO: make me optional/separated in private function
try {
+ hyperlinks = new ArrayList<>();
for (PackageRelationship rel : getPackagePart().getRelationshipsByType(XWPFRelation.HYPERLINK.getRelation())) {
hyperlinks.add(new XWPFHyperlink(rel.getId(), rel.getTargetURI().toString()));
}
@@ -410,6 +411,15 @@ public class XWPFDocument extends POIXML
}
}
+ // If the link was not found, rebuild the list (maybe a new link was added into the document) and check again.
+ initHyperlinks();
+ for (XWPFHyperlink link : hyperlinks) {
+ if (link.getId().equals(id)) {
+ return link;
+ }
+ }
+
+ // Link still not there? Giving up.
return null;
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java?rev=1863433&r1=1863432&r2=1863433&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java Fri Jul 19 20:49:48 2019
@@ -1441,6 +1441,29 @@ public class XWPFParagraph implements IB
}
/**
+ * Appends a new hyperlink run to this paragraph
+ *
+ * @return a new hyperlink run
+ */
+ public XWPFHyperlinkRun createHyperlinkRun(String uri) {
+ // Create a relationship ID for this link.
+ String rId = getPart().getPackagePart().addExternalRelationship(
+ uri, XWPFRelation.HYPERLINK.getRelation()
+ ).getId();
+
+ // Create the run.
+ CTHyperlink ctHyperLink = getCTP().addNewHyperlink();
+ ctHyperLink.setId(rId);
+ ctHyperLink.addNewR();
+
+ // Append this run to the paragraph.
+ XWPFHyperlinkRun link = new XWPFHyperlinkRun(ctHyperLink, ctHyperLink.getRArray(0), this);
+ runs.add(link);
+ iruns.add(link);
+ return link;
+ }
+
+ /**
* insert a new Run in RunArray
*
* @param pos The position at which the new run should be added.
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java?rev=1863433&r1=1863432&r2=1863433&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java Fri Jul 19 20:49:48 2019
@@ -186,6 +186,18 @@ public final class TestXWPFDocument {
}
@Test
+ public void testAddHyperlink() throws IOException {
+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
+ XWPFParagraph p = doc.createParagraph();
+ XWPFHyperlinkRun h = p.createHyperlinkRun("http://poi.apache.org/");
+ h.setText("Apache POI");
+
+ assertEquals("http://poi.apache.org/", h.getHyperlink(doc).getURL());
+ assertEquals(p.getRuns().size(), 1);
+ assertEquals(p.getRuns().get(0), h);
+ }
+
+ @Test
public void testRemoveBodyElement() throws IOException {
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
assertEquals(3, doc.getParagraphs().size());
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org