Example usage for org.apache.poi.xwpf.usermodel XWPFHyperlinkRun XWPFHyperlinkRun

List of usage examples for org.apache.poi.xwpf.usermodel XWPFHyperlinkRun XWPFHyperlinkRun

Introduction

In this page you can find the example usage for org.apache.poi.xwpf.usermodel XWPFHyperlinkRun XWPFHyperlinkRun.

Prototype

public XWPFHyperlinkRun(CTHyperlink hyperlink, CTR run, IRunBody p) 

Source Link

Usage

From source file:apachepoitest.XWPFParagraphClone.java

License:Apache License

/**
  * Identifies (in order) the parts of the paragraph /
  *  sub-paragraph that correspond to character text
  *  runs, and builds the appropriate runs for these.
  *///from w  w  w . j  a  v  a 2s  . co  m
private void buildRunsInOrderFromXml(XmlObject object) {
    XmlCursor c = object.newCursor();
    c.selectPath("child::*");
    while (c.toNextSelection()) {
        XmlObject o = c.getObject();
        if (o instanceof CTR) {
            XWPFRun r = new XWPFRun((CTR) o, this);
            runs.add(r);
            iruns.add(r);
        }
        if (o instanceof CTHyperlink) {
            CTHyperlink link = (CTHyperlink) o;
            for (CTR r : link.getRArray()) {
                XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this);
                runs.add(hr);
                iruns.add(hr);
            }
        }
        if (o instanceof CTSdtBlock) {
            XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part);
            iruns.add(cc);
        }
        if (o instanceof CTSdtRun) {
            XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part);
            iruns.add(cc);
        }
        if (o instanceof CTRunTrackChange) {
            for (CTR r : ((CTRunTrackChange) o).getRArray()) {
                XWPFRun cr = new XWPFRun(r, this);
                runs.add(cr);
                iruns.add(cr);
            }
        }
        if (o instanceof CTSimpleField) {
            for (CTR r : ((CTSimpleField) o).getRArray()) {
                XWPFRun cr = new XWPFRun(r, this);
                runs.add(cr);
                iruns.add(cr);
            }
        }
        if (o instanceof CTSmartTagRun) {
            // Smart Tags can be nested many times. 
            // This implementation does not preserve the tagging information
            buildRunsInOrderFromXml(o);
        }
    }
    c.dispose();
}

From source file:de.knowwe.include.export.LinkExporter.java

License:Open Source License

@Override
public void export(Section<LinkType> section, DocumentBuilder builder) throws ExportException {
    ExportUtils.addRequiredSpace(builder);
    Section<?> target = canExportAsReference(builder.getModel().getManager(), section);
    if (target != null) {
        String refID = HeaderExporter.getCrossReferenceID(target);

        // Variant 1:
        // Export as hyperlinks to anchor
        // --> Text of link is defined as by wiki user

        XWPFParagraph paragraph = builder.getParagraph();
        CTP ctp = paragraph.getCTP();//from   w w w .j a  v  a  2  s  .  c  o m
        CTHyperlink hyperlink = ctp.addNewHyperlink();
        hyperlink.setAnchor(refID);
        XWPFHyperlinkRun run = new XWPFHyperlinkRun(hyperlink, hyperlink.addNewR(), paragraph);
        run.setText(LinkType.getDisplayText(section));

        // Variant 2:
        // Export as word-field (REF ... \h)
        // --> More word-like,
        // but reference text is always updated to the header title

        // CTP p = builder.getParagraph().getCTP();
        // p.addNewPPr();
        // CTR run = p.addNewR();
        // run.addNewRPr().addNewNoProof();
        // run.addNewFldChar().setFldCharType(STFldCharType.BEGIN);
        // // pageref run
        // run = p.addNewR();
        // run.addNewRPr().addNewNoProof();
        // CTText text = run.addNewInstrText();
        // text.setSpace(Space.PRESERVE);
        // // bookmark reference
        // text.setStringValue(" REF " + refID + " \\h ");
        // p.addNewR().addNewRPr().addNewNoProof();
        // run = p.addNewR();
        // run.addNewRPr().addNewNoProof();
        // run.addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
        // // page number run
        // run = p.addNewR();
        // run.addNewRPr().addNewNoProof();
        // run.addNewT().setStringValue(LinkType.getDisplayText(section));
        // run = p.addNewR();
        // run.addNewRPr().addNewNoProof();
        // run.addNewFldChar().setFldCharType(STFldCharType.END);
    } else {
        builder.append(LinkType.getDisplayText(section));
    }
}

From source file:fr.opensagres.poi.xwpf.converter.core.XWPFDocumentVisitor.java

License:Open Source License

private void visitRun(XWPFParagraph paragraph, XmlObject o, T paragraphContainer) throws Exception {
    if (o instanceof CTHyperlink) {
        CTHyperlink link = (CTHyperlink) o;
        String anchor = link.getAnchor();
        String href = null;//from  w  ww. ja v  a 2s  . com
        // Test if the is an id for hyperlink
        String hyperlinkId = link.getId();
        if (StringUtils.isNotEmpty(hyperlinkId)) {
            XWPFHyperlink hyperlink = document.getHyperlinkByID(hyperlinkId);
            href = hyperlink != null ? hyperlink.getURL() : null;
        }
        for (CTR r : link.getRList()) {
            XWPFRun run = new XWPFHyperlinkRun(link, r, paragraph);
            visitRun(run, false, href != null ? href : "#" + anchor, paragraphContainer);
        }
    } else if (o instanceof CTSdtRun) {
        CTSdtContentRun run = ((CTSdtRun) o).getSdtContent();
        for (CTR r : run.getRList()) {
            XWPFRun ru = new XWPFRun(r, paragraph);
            visitRun(ru, false, null, paragraphContainer);
        }
    } else if (o instanceof CTRunTrackChange) {
        for (CTR r : ((CTRunTrackChange) o).getRList()) {
            XWPFRun run = new XWPFRun(r, paragraph);
            visitRun(run, false, null, paragraphContainer);
        }
    } else if (o instanceof CTSimpleField) {
        CTSimpleField simpleField = (CTSimpleField) o;
        String instr = simpleField.getInstr();
        // 1) test if it's page number
        // <w:fldSimple w:instr=" PAGE \* MERGEFORMAT "> <w:r> <w:rPr> <w:noProof/>
        // </w:rPr> <w:t>- 1 -</w:t> </w:r> </w:fldSimple>
        boolean fieldPageNumber = XWPFRunHelper.isInstrTextPage(instr);
        String fieldHref = null;
        if (!fieldPageNumber) {
            // not page number, test if it's hyperlink :
            // <w:instrText>HYPERLINK "http://code.google.com/p/xdocrepor"</w:instrText>
            fieldHref = XWPFRunHelper.getInstrTextHyperlink(instr);
        }
        for (CTR r : simpleField.getRList()) {
            XWPFRun run = new XWPFRun(r, paragraph);
            visitRun(run, fieldPageNumber, fieldHref, paragraphContainer);
        }
    } else if (o instanceof CTSmartTagRun) {
        // Smart Tags can be nested many times.
        // This implementation does not preserve the tagging information
        // buildRunsInOrderFromXml(o);
    } else if (o instanceof CTBookmark) {
        CTBookmark bookmark = (CTBookmark) o;
        visitBookmark(bookmark, paragraph, paragraphContainer);
    }
}

From source file:org.obeonetwork.m2doc.generator.M2DocEvaluator.java

License:Open Source License

/**
 * Inserts a run in the generated document. The new run is a copy from the specified run.
 * //  ww  w.  j  a  v a2 s.co  m
 * @param srcRun
 *            the run to copy
 * @return the inserted run.
 */
private XWPFRun insertRun(XWPFRun srcRun) {
    if (srcRun.getParent() != currentTemplateParagraph || forceNewParagraph) {
        createNewParagraph((XWPFParagraph) srcRun.getParent());
        forceNewParagraph = false;
    }
    XWPFRun newRun = null;
    if (srcRun instanceof XWPFHyperlinkRun) {
        // Hyperlinks meta information is saved in the paragraph and not in the run. So we have to update the paragrapah with a copy of
        // the hyperlink to insert.
        CTHyperlink newHyperlink = currentGeneratedParagraph.getCTP().addNewHyperlink();
        newHyperlink.set(((XWPFHyperlinkRun) srcRun).getCTHyperlink());

        newRun = new XWPFHyperlinkRun(newHyperlink, srcRun.getCTR(), srcRun.getParent());
        currentGeneratedParagraph.addRun(newRun);
    } else {
        newRun = currentGeneratedParagraph.createRun();
        newRun.getCTR().set(srcRun.getCTR());
    }
    return newRun;
}