Hi

I've developped a patch to make iText not modify metadata on
PdfStamperImp.java unless explicitily instructed.

Patch attached

--- a/core/com/lowagie/text/pdf/PdfStamperImp.java
+++ b/core/com/lowagie/text/pdf/PdfStamperImp.java
@@ -234,24 +234,9 @@
         	altMetadata = xmpMetadata;
         }
         // if there is XMP data to add: add it
-        PdfDate date = new PdfDate();
         if (altMetadata != null) {
         	PdfStream xmp;
-        	try {
-        		XmpReader xmpr = new XmpReader(altMetadata);
-        		if (!xmpr.replace("http://ns.adobe.com/pdf/1.3/";, "Producer", producer))
-        			xmpr.add("rdf:Description", "http://ns.adobe.com/pdf/1.3/";, "pdf:Producer", producer);
-        		if (!xmpr.replace("http://ns.adobe.com/xap/1.0/";, "ModifyDate", date.getW3CDate()))
-        			xmpr.add("rdf:Description", "http://ns.adobe.com/xap/1.0/";, "xmp:ModifyDate", date.getW3CDate());
-        		xmpr.replace("http://ns.adobe.com/xap/1.0/";, "MetadataDate", date.getW3CDate());
-            	xmp = new PdfStream(xmpr.serializeDoc());
-        	}
-        	catch(SAXException e) {
-        		xmp = new PdfStream(altMetadata);
-        	}
-        	catch(IOException e) {
-        		xmp = new PdfStream(altMetadata);
-        	}
+        	xmp = new PdfStream(altMetadata);
         	xmp.put(PdfName.TYPE, PdfName.METADATA);
         	xmp.put(PdfName.SUBTYPE, PdfName.XML);
         	if (crypto != null && !crypto.isMetadataEncrypted()) {
@@ -341,8 +326,6 @@
                     newInfo.put(keyName, new PdfString(value, PdfObject.TEXT_UNICODE));
             }
         }
-        newInfo.put(PdfName.MODDATE, date);
-        newInfo.put(PdfName.PRODUCER, new PdfString(producer));
         if (append) {
             if (iInfo == null)
                 info = addToBody(newInfo, false).getIndirectReference();

Reply via email to