Skip to content

Commit 46dbf9c

Browse files
committed
Update xmp metadata if it was present in document before close
This includes cases if user manually set xmp metadata, or if it was present in modified document. DEVSIX-1870
1 parent 20b9a05 commit 46dbf9c

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1905,7 +1905,7 @@ protected void addCustomMetadataExtensions(XMPMeta xmpMeta) {
19051905
protected void updateXmpMetadata() {
19061906
try {
19071907
// We add PDF producer info in any case, and the valid way to do it for PDF 2.0 in only in metadata, not in the info dictionary.
1908-
if (writer.properties.addXmpMetadata || pdfVersion.compareTo(PdfVersion.PDF_2_0) >= 0) {
1908+
if (xmpMetadata != null || writer.properties.addXmpMetadata || pdfVersion.compareTo(PdfVersion.PDF_2_0) >= 0) {
19091909
setXmpMetadata(updateDefaultXmpMetadata());
19101910
}
19111911
} catch (XMPException e) {

kernel/src/test/java/com/itextpdf/kernel/pdf/XMPMetadataTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ This file is part of the iText (R) project.
4242
*/
4343
package com.itextpdf.kernel.pdf;
4444

45+
import com.itextpdf.io.LogMessageConstant;
4546
import com.itextpdf.kernel.utils.CompareTool;
4647
import com.itextpdf.kernel.xmp.PdfConst;
4748
import com.itextpdf.kernel.xmp.XMPConst;
@@ -51,6 +52,8 @@ This file is part of the iText (R) project.
5152
import com.itextpdf.kernel.xmp.XMPUtils;
5253
import com.itextpdf.kernel.xmp.options.SerializeOptions;
5354
import com.itextpdf.test.ExtendedITextTest;
55+
import com.itextpdf.test.annotations.LogMessage;
56+
import com.itextpdf.test.annotations.LogMessages;
5457
import com.itextpdf.test.annotations.type.IntegrationTest;
5558

5659
import java.io.ByteArrayInputStream;
@@ -179,6 +182,9 @@ public void emptyDocumentWithXmpAppendMode02() throws Exception {
179182

180183

181184
@Test
185+
@LogMessages(messages = {
186+
@LogMessage(messageTemplate = LogMessageConstant.EXCEPTION_WHILE_UPDATING_XMPMETADATA)
187+
})
182188
public void createEmptyDocumentWithAbcXmp() throws IOException, XMPException {
183189
ByteArrayOutputStream fos = new ByteArrayOutputStream();
184190
PdfWriter writer = new PdfWriter(fos);

0 commit comments

Comments
 (0)