Page 1 of 1

Insert a hyperlink in my docx

PostPosted: Thu Apr 03, 2014 8:50 pm
by aman.bhole
Hi,

Can anyone help me out for the code snippet of adding a hyperlink at the end of docx. Its urgent, I tried a lot but getting the following exception :-
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1414)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1039)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:179)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:230)
at org.docx4j.XmlUtils.unmarshalString(XmlUtils.java:367)
at com.demo.hyperlink.HyperlinkInsertDemo.createHyperlink(HyperlinkInsertDemo.java:85)
at com.demo.hyperlink.HyperlinkInsertDemo.appendUrlDocx(HyperlinkInsertDemo.java:28)
at com.demo.hyperlink.HyperlinkInsertDemo.main(HyperlinkInsertDemo.java:19)
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: Content is not allowed in prolog.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:503)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:204)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:179)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:230)
at org.docx4j.XmlUtils.unmarshalString(XmlUtils.java:367)
at com.demo.hyperlink.HyperlinkInsertDemo.createHyperlink(HyperlinkInsertDemo.java:85)
at com.demo.hyperlink.HyperlinkInsertDemo.appendUrlDocx(HyperlinkInsertDemo.java:28)
at com.demo.hyperlink.HyperlinkInsertDemo.main(HyperlinkInsertDemo.java:19)
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)
... 6 more

The method of execution is XmlUtils.unmarshalString(hpl, Context.jc, P.Hyperlink.class);
where hpl = http://www.google.com

Re: Insert a hyperlink in my docx

PostPosted: Thu Apr 03, 2014 9:35 pm
by jason
aman.bhole wrote:hpl = http://www.google.com


That's not XML, which is probably why you are getting "org.xml.sax.SAXParseException: Content is not allowed in prolog"

If you have Word, create a hyperlink, save the docx, then upload it to the demo webapp (see menu above) to generate code.

Feel free to post again after you've generated the code if you are still having problems.

Re: Insert a hyperlink in my docx

PostPosted: Thu Apr 03, 2014 11:07 pm
by aman.bhole
I got the code, it is working. Thanks for immediate reply.
But my concern is I have to deal with all types of files (doc, docx, ppt, pptx, pdf, xls, xlsx). I need to append hyperlink at the end of every type of file in Java. So, can anyone provide me more generalised solution to highlighted problem.

Re: Insert a hyperlink in my docx

PostPosted: Fri Apr 04, 2014 10:12 am
by jason
docx4j can deal with docx, xlsx, pptx.

For binary doc, xls, ppt, you could first convert to the Open XML equivalent, for example by using LibreOffice via JODConverter.

For PDF, try PDF Box?