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(); } }
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; }
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; }
private List<XMPPackage> getXMPPackage() { List<XMPPackage> xmp = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); try { COSStream stream = ((org.apache.pdfbox.pdmodel.common.PDMetadata) this.simplePDObject).getStream(); if (stream != null) { VeraPDFMeta metadata = VeraPDFMeta.parse(stream.getUnfilteredStream()); if (isMainMetadata) { xmp.add(new AXLMainXMPPackage(metadata, true, this.flavour)); } else if (this.flavour == null || this.flavour.getPart() == null || this.flavour.getPart().getPartNumber() != 1) { COSStream mainStream = mainMetadata.getStream(); VeraPDFXMPNode mainExtensionNode = null; if (mainStream != null) { VeraPDFMeta mainMeta = VeraPDFMeta.parse(mainStream.getUnfilteredStream()); mainExtensionNode = mainMeta.getExtensionSchemasNode(); } xmp.add(new AXLXMPPackage(metadata, true, mainExtensionNode, this.flavour)); } } } catch (XMPException | IOException e) { LOGGER.debug("Problems with parsing metadata. " + e.getMessage(), e); if (isMainMetadata) { xmp.add(new AXLMainXMPPackage(null, false, this.flavour)); } else if (this.flavour == null || this.flavour.getPart() == null || this.flavour.getPart().getPartNumber() != 1) { xmp.add(new AXLXMPPackage(null, false, null, this.flavour)); } } return xmp; }