public COSFilters getFilters() { return new COSFilters(getKey(ASAtom.FILTER)); }
private static Long parseLength(final COSStream stream) { COSBase number = stream.getKey(ASAtom.LENGTH).getDirectBase(); return number instanceof COSNumber ? number.getInteger() : null; }
/** * This method puts all necessary information into trailer of this xref * section. */ private void setTrailer() { COSTrailer trailer = section.getTrailer(); if (xrefCOSStream.getKey(ASAtom.SIZE).get() != null) { trailer.setSize(((COSInteger) xrefCOSStream.getKey(ASAtom.SIZE).get()).get()); } if (xrefCOSStream.getKey(ASAtom.PREV).get() != null) { trailer.setPrev(((COSInteger) xrefCOSStream.getKey(ASAtom.PREV).get()).get()); } if (xrefCOSStream.getKey(ASAtom.ROOT).get() != null) { trailer.setRoot(xrefCOSStream.getKey(ASAtom.ROOT)); } if (xrefCOSStream.getKey(ASAtom.ENCRYPT).get() != null) { trailer.setEncrypt(xrefCOSStream.getKey(ASAtom.ENCRYPT)); } if (xrefCOSStream.getKey(ASAtom.INFO).get() != null) { trailer.setInfo(xrefCOSStream.getKey(ASAtom.INFO)); } if (xrefCOSStream.getKey(ASAtom.ID).get() != null) { trailer.setID(xrefCOSStream.getKey(ASAtom.ID)); } }
/** * Default constructor * @param stream greenfield COSStream */ public GFCosStream(COSStream stream) { super(stream, COS_STREAM_TYPE); this.length = parseLength(stream); COSObject fileSpec = stream.getKey(ASAtom.F); this.fileSpec = fileSpec.empty() ? null : fileSpec.toString(); this.fFilter = parseFilters(stream.getKey(ASAtom.F_FILTER).get()); String fDecodeParams = stream.getStringKey(ASAtom.F_DECODE_PARMS); this.fDecodeParams = fDecodeParams == null || fDecodeParams.isEmpty() ? null : fDecodeParams; this.streamKeywordCRLFCompliant = stream.isStreamKeywordCRLFCompliant().booleanValue(); this.endstreamKeywordEOLCompliant = stream.isEndstreamKeywordCRLFCompliant().booleanValue(); this.isLengthCorrect = this.length != null && this.length.equals(stream.getRealStreamSize()); }
/** * This method makes sure that Index array is correctly initialized. * * @throws IOException */ private void initializeIndex() throws IOException { index = (COSArray) xrefCOSStream.getKey(ASAtom.INDEX).getDirectBase(); if (index == null) { COSObject[] defaultIndex = new COSObject[2]; defaultIndex[0] = COSInteger.construct(0); defaultIndex[1] = xrefCOSStream.getKey(ASAtom.SIZE); index = (COSArray) COSArray.construct(2, defaultIndex).getDirectBase(); } else if (index.size() % 2 != 0) { throw new IOException("Index array in xref stream has odd amount of elements."); } }
public void setIndirectLength(final long length) { COSObject obj = getKey(ASAtom.LENGTH); obj.setInteger(length); if (obj.isIndirect().booleanValue()) { obj = COSIndirect.construct(obj); setKey(ASAtom.LENGTH, obj); } }
private void calculateInternalOffsets() throws IOException { int n = (int) ((COSInteger) this.objectStream.getKey(ASAtom.N).getDirectBase()).get(); long first = ((COSInteger) this.objectStream.getKey(ASAtom.FIRST).getDirectBase()).get(); for (int i = 0; i < n; ++i) { Long objNum, objOffset; skipSpaces(false); readNumber(); objNum = getToken().integer; skipSpaces(false); readNumber(); objOffset = getToken().integer; internalOffsets.put(objNum.intValue(), objOffset + first); } }
GFFontDescriptorAdapter(PDFontDescriptor descriptor) { this.descriptor = descriptor; this.file = descriptor.getFontFile(); if (this.file == null) { this.file = descriptor.getFontFile2(); } if (this.file == null) { this.file = descriptor.getFontFile3(); } if (file != null) { this.metadata = new PDMetadata(file.getKey(ASAtom.METADATA)); } }
@Override public ASInputStream getData(final FilterFlags filterFlags) { try { if (filterFlags == FilterFlags.RAW_DATA || this.flags != FilterFlags.RAW_DATA) { this.stream.reset(); return this.stream; } ASInputStream result = getFilters().getInputStream( ASInputStream.createStreamFromStream(stream), this.getKey(ASAtom.DECODE_PARMS)); result.reset(); return result; } catch (IOException e) { LOGGER.log(Level.FINE, "Can't get stream data", e); return null; } }
/** * This is an entry point for parsing xref stream and trailer. * * @throws IOException */ void parseStreamAndTrailer() throws IOException { try { xrefInputStream = xrefCOSStream.getData(COSStream.FilterFlags.DECODE); fieldSizes = (COSArray) xrefCOSStream.getKey(ASAtom.W).getDirectBase(); if (fieldSizes.size() != 3) { throw new IOException("W array in xref should have 3 elements."); } initializeIndex(); initializeObjIDs(); parseStream(); setTrailer(); } finally { xrefInputStream.close(); } }
COSName subtype = (COSName) fontFile.getKey(ASAtom.SUBTYPE).getDirectBase(); COSKey key = fontFile.getObjectKey(); try {