|
21 | 21 | import org.apache.pdfbox.cos.COSObject;
|
22 | 22 | import org.apache.pdfbox.pdmodel.DefaultResourceCache;
|
23 | 23 | import org.apache.pdfbox.pdmodel.PDDocument;
|
| 24 | +import org.apache.pdfbox.pdmodel.PDDocumentInformation; |
24 | 25 | import org.apache.pdfbox.pdmodel.PDPage;
|
25 | 26 | import org.apache.pdfbox.pdmodel.common.PDMetadata;
|
26 | 27 | import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
|
37 | 38 | import java.nio.file.Path;
|
38 | 39 | import java.util.Collections;
|
39 | 40 | import java.util.EnumSet;
|
| 41 | +import java.util.HashMap; |
40 | 42 | import java.util.Map;
|
41 | 43 | import java.util.Set;
|
42 | 44 |
|
@@ -178,14 +180,24 @@ public void put(COSObject indirect, PDXObject xobject) {
|
178 | 180 | }
|
179 | 181 | });
|
180 | 182 |
|
181 |
| - // Read the document's XMP metadata. |
182 |
| - final PDMetadata pdfMetadata = doc.getDocumentCatalog().getMetadata(); |
183 |
| - if (pdfMetadata != null) { |
184 |
| - try (InputStream is = pdfMetadata.exportXMPMetadata()) { |
185 |
| - ByteArrayOutputStream os = new ByteArrayOutputStream(); |
186 |
| - is.transferTo(os); |
187 |
| - metadata = new Metadata(); |
188 |
| - metadata.setXMP(os.toByteArray()); |
| 183 | + metadata = new Metadata(); |
| 184 | + { // Read the document's native metadata. |
| 185 | + PDDocumentInformation info = doc.getDocumentInformation(); |
| 186 | + Map<String, String> pdfMetadata = new HashMap<>(); |
| 187 | + for (String key : info.getMetadataKeys()) { |
| 188 | + pdfMetadata.put(key, info.getPropertyStringValue(key).toString()); |
| 189 | + } |
| 190 | + metadata.setNativeMetadata(pdfMetadata); |
| 191 | + } |
| 192 | + { // Read the document's XMP metadata. |
| 193 | + PDMetadata pdfMetadata = doc.getDocumentCatalog().getMetadata(); |
| 194 | + if (pdfMetadata != null) { |
| 195 | + try (InputStream is = pdfMetadata.exportXMPMetadata()) { |
| 196 | + ByteArrayOutputStream os = new ByteArrayOutputStream(); |
| 197 | + is.transferTo(os); |
| 198 | + |
| 199 | + metadata.setXMP(os.toByteArray()); |
| 200 | + } |
189 | 201 | }
|
190 | 202 | }
|
191 | 203 |
|
|
0 commit comments