final COSObjectKey objKey = new COSObjectKey(objNr, objGenNr); final COSObject pdfObject = document.getObjectFromPool(objKey); + objKey.getNumber() + ":" + objKey.getGeneration());
if (objectKey.getNumber() == readObjectNumber()) if (genNumber == objectKey.getGeneration()) objectKeyFound = true; else if (isLenient && genNumber > objectKey.getGeneration()) objectKey.fixGeneration(genNumber);
/** * {@inheritDoc} */ @Override public boolean equals(Object obj) { COSObjectKey objToBeCompared = obj instanceof COSObjectKey ? (COSObjectKey)obj : null; return objToBeCompared != null && objToBeCompared.getNumber() == getNumber() && objToBeCompared.getGeneration() == getGeneration(); }
private COSDictionary retrieveCOSDictionary(COSObject object) throws IOException { COSObjectKey key = new COSObjectKey(object); Long offset = bfSearchCOSObjectKeyOffsets.get(key); if (offset != null) { return retrieveCOSDictionary(key, offset); } return null; }
private void writeXrefEntry(COSWriterXRefEntry entry) throws IOException { String offset = formatXrefOffset.format(entry.getOffset()); String generation = formatXrefGeneration.format(entry.getKey().getGeneration()); getStandardOutput().write(offset.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(generation.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(entry.isFree() ? XREF_FREE : XREF_USED); getStandardOutput().writeCRLF(); }
@Override public int compareTo(COSObjectKey other) { int result = Long.compare(getNumber(), other.getNumber()); if (result == 0) { return Integer.compare(getGeneration(), other.getGeneration()); } return result; }
/** * return true if the elt is of class or a reference to a that class. * * @param elt the object to check. * @param doc the document. * @param claz the class. * @return true if the object is a of that class or a reference to it. */ private static boolean isClass(COSBase elt, COSDocument doc, Class claz) { if (elt instanceof COSObject) { COSObjectKey key = new COSObjectKey((COSObject) elt); COSObject obj = doc.getObjectFromPool(key); return (obj != null && claz.isInstance(obj.getObject())); } return claz.isInstance(elt); }
/** * Populate XRef HashMap of current XRef object. * Will add an Xreftable entry that maps ObjectKeys to byte offsets in the file. * @param objKey The objkey, with id and gen numbers * @param offset The byte offset in this file */ public void setXRef( COSObjectKey objKey, long offset ) { if ( curXrefTrailerObj == null ) { // should not happen... LOG.warn( "Cannot add XRef entry for '" + objKey.getNumber() + "' because XRef start was not signalled." ); return; } // PDFBOX-3506 check before adding to the map, to avoid entries from the table being // overwritten by obsolete entries in hybrid files (/XRefStm entry) if (!curXrefTrailerObj.xrefTable.containsKey(objKey) ) { curXrefTrailerObj.xrefTable.put(objKey, offset); } }
private void writeXrefEntry(COSWriterXRefEntry entry) throws IOException { String offset = formatXrefOffset.format(entry.getOffset()); String generation = formatXrefGeneration.format(entry.getKey().getGeneration()); getStandardOutput().write(offset.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(generation.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(entry.isFree() ? XREF_FREE : XREF_USED); getStandardOutput().writeCRLF(); }
/** * This will get an object from the pool. * * @param key The object key. * * @return The object in the pool or a new one if it has not been parsed yet. */ public COSObject getObjectFromPool(COSObjectKey key) { COSObject obj = null; if( key != null ) { obj = objectPool.get(key); } if (obj == null) { // this was a forward reference, make "proxy" object obj = new COSObject(null); if( key != null ) { obj.setObjectNumber(key.getNumber()); obj.setGenerationNumber(key.getGeneration()); objectPool.put(key, obj); } } return obj; }
final COSObjectKey objKey = new COSObjectKey(objNr, objGenNr); final COSObject pdfObject = document.getObjectFromPool(objKey); "Object must be defined and must not be compressed object: " + objKey.getNumber() + ":" + objKey.getGeneration())); throw new SyntaxValidationException("Object must be defined and must not be compressed object: " + objKey.getNumber() + ":" + objKey.getGeneration(), validationResult); addValidationError(new ValidationError(ERROR_SYNTAX_INVALID_OFFSET, "Object {" + objKey.getNumber() + ":" + objKey.getGeneration() + "} has an offset of 0")); if ((readObjNr != objKey.getNumber()) || (readObjGen != objKey.getGeneration())) throw new IOException("XREF for " + objKey.getNumber() + ":" + objKey.getGeneration() + " points to wrong object: " + readObjNr + ":" + readObjGen); COSObjectKey stmObjKey = new COSObjectKey(next); Long offset = document.getXrefTable().get(stmObjKey); if (offset != null && offset == -objstmObjNr)
/** * Return the COSObject object as class if the COSObject object is a reference to an object of * that class. If not, then this method returns null; * * @param cosObject the object to get. * @param cDoc the document. * @param claz the class. * @return the object as class if the object is a reference to that class. Returns null * otherwise. */ private static COSBase getCOSObjectAsClass(COSObject cosObject, COSDocument cDoc, Class claz) { COSObjectKey key = new COSObjectKey(cosObject); COSObject obj = cDoc.getObjectFromPool(key); if (obj != null && claz.isInstance(obj.getObject())) { return obj.getObject(); } else { return null; } } }
refObjNrs.add( xrefEntry.getKey().getNumber() );
if (objectKey.getNumber() == readObjectNumber()) if (genNumber == objectKey.getGeneration()) objectKeyFound = true; else if (isLenient && genNumber > objectKey.getGeneration()) objectKey.fixGeneration(genNumber);
private void writeXrefEntry(COSWriterXRefEntry entry) throws IOException { String offset = formatXrefOffset.format(entry.getOffset()); String generation = formatXrefGeneration.format(entry.getKey().getGeneration()); getStandardOutput().write(offset.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(generation.getBytes(Charsets.ISO_8859_1)); getStandardOutput().write(SPACE); getStandardOutput().write(entry.isFree() ? XREF_FREE : XREF_USED); getStandardOutput().writeCRLF(); }
/** * Add an new entry to the XRef stream. * * @param entry new entry to be added */ public void addEntry(COSWriterXRefEntry entry) { objectNumbers.add(entry.getKey().getNumber()); if (entry.isFree()) { // what would be a f-Entry in the xref table FreeReference value = new FreeReference(); value.nextGenNumber = entry.getKey().getGeneration(); value.nextFree = entry.getKey().getNumber(); streamData.put(value.nextFree, value); } else { // we don't care for ObjectStreamReferences for now and only handle // normal references that would be f-Entrys in the xref table. NormalReference value = new NormalReference(); value.genNumber = entry.getKey().getGeneration(); value.offset = entry.getOffset(); streamData.put(entry.getKey().getNumber(), value); } }
final COSObjectKey objKey = new COSObjectKey(objNr, objGenNr); final COSObject pdfObject = document.getObjectFromPool(objKey); + objKey.getNumber() + ":" + objKey.getGeneration());
key = new COSObjectKey(getNumber(),0); objectKeys.put(obj, key); if( actual != null )
for( Object object : xRefEntriesList ) long nr = (int) ((COSWriterXRefEntry) object).getKey().getNumber(); if (nr == last + 1)