1T3XT, Thanks again for taking the time to modify and send me the code, I'll
incorporate these changes and will post my results t'moro.
1T3XT info wrote:
>
> ek1975 wrote:
>> I didn't request that you fix anything for me.
>
> It sounded that way. And in the meanwhile, here's the patch:
>
> Log Message:
> -----------
> Updating the XMP stream assumed that there were three child nodes: an
> xpacket start PI, an xmpmeta tag, and an xpacket end PI. However:
> somebody posted an example that didn't have the xpacket PIs. This
> changes makes sure the PIs are added.
>
> Modified Paths:
> --------------
> trunk/src/core/com/lowagie/text/xml/xmp/XmpReader.java
> trunk/src/core/com/lowagie/text/xml/xmp/XmpWriter.java
>
> Modified: trunk/src/core/com/lowagie/text/xml/xmp/XmpReader.java
> ===================================================================
> --- trunk/src/core/com/lowagie/text/xml/xmp/XmpReader.java 2009-06-03
> 15:17:22 UTC (rev 3948)
> +++ trunk/src/core/com/lowagie/text/xml/xmp/XmpReader.java 2009-06-03
> 15:19:04 UTC (rev 3949)
> @@ -168,15 +168,15 @@
> XmlDomWriter xw = new XmlDomWriter();
> ByteArrayOutputStream fout = new ByteArrayOutputStream();
> xw.setOutput(fout, null);
> - Node first = domDocument.getFirstChild();
> - xw.write(first);
> - fout.write('\n');
> - xw.write(first.getNextSibling());
> + NodeList xmpmeta = domDocument.getElementsByTagName("x:xmpmeta");
> + fout.write(XmpWriter.XPACKET_PI_BEGIN.getBytes("UTF-8"));
> fout.flush();
> + xw.write(xmpmeta.item(0));
> + fout.flush();
> for (int i = 0; i < 20; i++) {
> fout.write(XmpWriter.EXTRASPACE.getBytes());
> }
> - xw.write(domDocument.getLastChild());
> + fout.write(XmpWriter.XPACKET_PI_END_W.getBytes());
> fout.close();
> return fout.toByteArray();
> }
>
> Modified: trunk/src/core/com/lowagie/text/xml/xmp/XmpWriter.java
> ===================================================================
> --- trunk/src/core/com/lowagie/text/xml/xmp/XmpWriter.java 2009-06-03
> 15:17:22 UTC (rev 3948)
> +++ trunk/src/core/com/lowagie/text/xml/xmp/XmpWriter.java 2009-06-03
> 15:19:04 UTC (rev 3949)
> @@ -89,7 +89,25 @@
>
> /** The about string that goes into the rdf:Description tags. */
> protected String about;
> +
> + /**
> + * Processing Instruction required at the start of an XMP stream
> + * @since iText 2.1.6
> + */
> + public static final String XPACKET_PI_BEGIN = "<?xpacket
> begin=\"\uFEFF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n";
>
> + /**
> + * Processing Instruction required at the end of an XMP stream for XMP
> streams that can be updated
> + * @since iText 2.1.6
> + */
> + public static final String XPACKET_PI_END_W = "<?xpacket end=\"w\"?>";
> +
> + /**
> + * Processing Instruction required at the end of an XMP stream for XMP
> streams that are read only
> + * @since iText 2.1.6
> + */
> + public static final String XPACKET_PI_END_R = "<?xpacket end=\"r\"?>";
> +
> /** The end attribute. */
> protected char end = 'w';
>
> @@ -103,7 +121,7 @@
> public XmpWriter(OutputStream os, String utfEncoding, int extraSpace)
> throws IOException {
> this.extraSpace = extraSpace;
> writer = new OutputStreamWriter(os, utfEncoding);
> - writer.write("<?xpacket begin=\"\uFEFF\"
> id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n");
> + writer.write(XPACKET_PI_BEGIN);
> writer.write("<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n");
> writer.write("<rdf:RDF
> xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n");
> about = "";
> @@ -171,7 +189,7 @@
> for (int i = 0; i < extraSpace; i++) {
> writer.write(EXTRASPACE);
> }
> - writer.write("<?xpacket end=\"" + end + "\"?>");
> + writer.write(end == 'r' ? XPACKET_PI_END_R : XPACKET_PI_END_W);
> writer.flush();
> writer.close();
> }
> --
> This answer is provided by 1T3XT BVBA
> http://www.1t3xt.com/ - http://www.1t3xt.info
>
> ------------------------------------------------------------------------------
> OpenSolaris 2009.06 is a cutting edge operating system for enterprises
> looking to deploy the next generation of Solaris that includes the latest
> innovations from Sun and the OpenSource community. Download a copy and
> enjoy capabilities such as Networking, Storage and Virtualization.
> Go to: http://p.sf.net/sfu/opensolaris-get
> _______________________________________________
> iText-questions mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
>
> Buy the iText book: http://www.1t3xt.com/docs/book.php
> Check the site with examples before you ask questions:
> http://www.1t3xt.info/examples/
> You can also search the keywords list:
> http://1t3xt.info/tutorials/keywords/
>
>
--
View this message in context:
http://www.nabble.com/Overlay-text-content-on-PDF-A-1b-tp23762718p23880726.html
Sent from the iText - General mailing list archive at Nabble.com.
------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php
Check the site with examples before you ask questions:
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/