/** * Get the metadata that is part of the document catalog. This will return null if there is no * meta data for this object. * * @return The metadata for this object. */ public PDMetadata getMetadata() { COSBase metaObj = root.getDictionaryObject(COSName.METADATA); if (metaObj instanceof COSStream) { return new PDMetadata((COSStream) metaObj); } return null; }
/** * Extract the XMP metadata. * To persist changes back to the PDF you must call importXMPMetadata. * * @return A stream to get the xmp data from. * * @throws IOException If there is an error parsing the XMP data. */ public InputStream exportXMPMetadata() throws IOException { return createInputStream(); }
private Document loadDOM(PDMetadata pdMetadata, Metadata metadata, ParseContext context) { if (pdMetadata == null) { return null; } InputStream is = null; try { try { is = pdMetadata.exportXMPMetadata(); } catch (IOException e) { EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); return null; } return XMLReaderUtils.buildDOM(is, context); } catch (IOException|SAXException|TikaException e) { EmbeddedDocumentUtil.recordException(e, metadata); } finally { IOUtils.closeQuietly(is); } return null; }
serializer.serialize(xmp, baos, true); PDMetadata metadata = new PDMetadata(doc); metadata.importXMPMetadata(baos.toByteArray()); doc.getDocumentCatalog().setMetadata(metadata);
/** * This will create a new PDMetadata object. * * @param document The document that the stream will be part of. */ public PDMetadata( PDDocument document ) { super( document ); getCOSObject().setName( COSName.TYPE, "Metadata" ); getCOSObject().setName( COSName.SUBTYPE, "XML" ); }
/** * Check if metadata dictionary has no stream filter * * @param doc the document to check. * @return the list of validation errors. */ protected List<ValidationError> checkStreamFilterUsage(PDDocument doc) { List<ValidationError> ve = new ArrayList<>(); List<?> filters = doc.getDocumentCatalog().getMetadata().getFilters(); if (filters != null && !filters.isEmpty()) { ve.add(new ValidationError(PreflightConstants.ERROR_METADATA_MAIN, "Using stream filter on metadata dictionary is forbidden")); } return ve; } }
private List<CosStream> getStream() { COSStream stream = ((org.apache.pdfbox.pdmodel.common.PDMetadata) this.simplePDObject).getStream(); if (stream != null) { List<CosStream> streams = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); streams.add(new PBCosStream(stream, this.document, this.flavour)); return Collections.unmodifiableList(streams); } return Collections.emptyList(); } }
XMPMetadata xmp = XMPMetadata.createXMPMetadata(); DublinCoreSchema dc = xmp.createAndAddDublinCoreSchema(); dc.setDescription("descr"); XmpSerializer serializer = new XmpSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); serializer.serialize(xmp, baos, true); PDMetadata metadata = new PDMetadata(doc); metadata.importXMPMetadata(baos.toByteArray()); doc.getDocumentCatalog().setMetadata(metadata);
dcSchema.setDescription( info.getSubject() ); PDMetadata metadataStream = new PDMetadata(document); catalog.setMetadata( metadataStream ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); serializer.serialize(metadata, baos, false); metadataStream.importXMPMetadata( baos.toByteArray() );
/** * Constructor. Reads all data from the input stream and embeds it into the * document, this will close the InputStream. * * @param doc The document that will hold the stream. * @param str The stream parameter. * @throws IOException If there is an error creating the stream in the document. */ public PDMetadata( PDDocument doc, InputStream str) throws IOException { super( doc, str ); getCOSObject().setName( COSName.TYPE, "Metadata" ); getCOSObject().setName( COSName.SUBTYPE, "XML" ); }
if (metadata.getFilters() != null && !metadata.getFilters().isEmpty())
public static InputStream getMetadataStream(PDMetadata metadata) { if (metadata != null) { COSStream stream = metadata.getStream(); if (stream != null) { try { return stream.getUnfilteredStream(); } catch (IOException e) { LOGGER.debug("Error while obtaining unfiltered metadata stream", e); } } } return null; }
/** * Get the metadata that is part of the document catalog. This will return null if there is * no meta data for this object. * * @return The metadata for this object. */ public PDMetadata getMetadata() { PDMetadata retval = null; COSBase base = page.getDictionaryObject(COSName.METADATA); if (base instanceof COSStream) { retval = new PDMetadata((COSStream) base); } return retval; }
xmpBasicSchema.setCreateDate(information.getCreationDate()); PDMetadata metadataStream = new PDMetadata(document); PDMarkInfo markInfo = new PDMarkInfo(); markInfo.setMarked(true); ByteArrayOutputStream baos = new ByteArrayOutputStream(); serializer.serialize(metadata, baos, true); metadataStream.importXMPMetadata( baos.toByteArray() );
protected final byte[] getMetaDataStreamAsBytes(PDMetadata metadata) { try (InputStream metaDataContent = metadata.createInputStream()) { return IOUtils.toByteArray(metaDataContent); } catch (IOException e) { this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT_STREAM, this.font.getName() + ": Unable to read font metadata due to : " + e.getMessage(), e)); return null; } }
private Document loadDOM(PDMetadata pdMetadata, Metadata metadata, ParseContext context) { if (pdMetadata == null) { return null; } InputStream is = null; try { try { is = pdMetadata.exportXMPMetadata(); } catch (IOException e) { EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); return null; } DocumentBuilder documentBuilder = context.getDocumentBuilder(); documentBuilder.setErrorHandler((ErrorHandler)null); return documentBuilder.parse(is); } catch (IOException|SAXException|TikaException e) { EmbeddedDocumentUtil.recordException(e, metadata); } finally { IOUtils.closeQuietly(is); } return null; }
/** * This will create a new PDMetadata object. * * @param document The document that the stream will be part of. */ public PDMetadata( PDDocument document ) { super( document ); getCOSObject().setName( COSName.TYPE, "Metadata" ); getCOSObject().setName( COSName.SUBTYPE, "XML" ); }
@Override public String getFilter() { List<COSName> filters = ((org.apache.pdfbox.pdmodel.common.PDMetadata) this.simplePDObject).getFilters(); if (filters != null && !filters.isEmpty()) { StringBuilder result = new StringBuilder(); for (COSName filter : filters) { result.append(filter.getName()).append(' '); } return result.substring(0, result.length() - 1); } return null; }
private static MetadataImpl parseMetadata(PDMetadata meta) { try { VeraPDFMeta xmp = VeraPDFMeta.parse(meta.getStream().getUnfilteredStream()); if (xmp != null) { return new MetadataImpl(xmp, meta.getStream()); } } catch (IOException e) { LOGGER.debug("Problems with document parsing or structure. " + e.getMessage(), e); } catch (XMPException e) { LOGGER.debug("Problems with XMP parsing. " + e.getMessage(), e); } return null; }
retval = new PDMetadata((COSStream) mdStream);