while (!freeReferences.<Integer>isEmpty()) { int currFreeRefObjNr = -1; if (prevFreeRef.getOffset() <= Integer.MAX_VALUE) { currFreeRefObjNr = (int) prevFreeRef.getOffset(); } else if (xref[next].getGenNumber() == MAX_GENERATION && xref[next].getOffset() == 0) { continue; if (prevFreeRef.getOffset() != (long)next) { ((PdfIndirectReference) prevFreeRef.setState(PdfObject.MODIFIED)).setOffset(next); if (prevFreeRef.getOffset() != 0) { ((PdfIndirectReference) prevFreeRef.setState(PdfObject.MODIFIED)).setOffset(0);
if (reference.isFree()) { xrefStream.getOutputStream().write(0); xrefStream.getOutputStream().write(reference.getOffset(), offsetSize); xrefStream.getOutputStream().write(reference.getGenNumber(), 2); } else if (reference.getObjStreamNumber() == 0) { xrefStream.getOutputStream().write(1); xrefStream.getOutputStream().write(reference.getOffset(), offsetSize); xrefStream.getOutputStream().write(reference.getGenNumber(), 2); } else { PdfIndirectReference reference = xrefTable.get(i); StringBuilder off = new StringBuilder("0000000000").append(reference.getOffset()); StringBuilder gen = new StringBuilder("00000").append(reference.getGenNumber()); writer.writeString(off.substring(off.length() - 10, off.length())).writeSpace().
xref.add(newReference); } else if (refReadingState) { reference.setOffset(newReference.getOffset()); reference.setObjStreamNumber(newReference.getObjStreamNumber()); reference.clearState(PdfObject.READING);