/** * Flushes the object to the document. */ public final void flush() { flush(true); }
public void flush() { pdfObject.flush(); }
/** * Flush all copied objects. * * @param docId id of the source document */ void flushCopiedObjects(long docId) { List<PdfDocument.IndirectRefDescription> remove = new ArrayList<>(); for (Map.Entry<PdfDocument.IndirectRefDescription, PdfIndirectReference> copiedObject : copiedObjects.entrySet()) { if (copiedObject.getKey().docId == docId) { if (copiedObject.getValue().refersTo != null) { copiedObject.getValue().refersTo.flush(); remove.add(copiedObject.getKey()); } } } for (PdfDocument.IndirectRefDescription ird : remove) { copiedObjects.remove(ird); } }
private void flushMustBeIndirectObject(PdfObject obj) { // TODO DEVSIX-744 obj.makeIndirect(getDocument()).flush(); }
/** * Flushes all modified objects which have not been flushed yet. Used in case incremental updates. * @param forbiddenToFlush {@link Set<PdfIndirectReference>} of references that are forbidden to be flushed automatically. */ protected void flushModifiedWaitingObjects(Set<PdfIndirectReference> forbiddenToFlush) { PdfXrefTable xref = document.getXref(); for (int i = 1; i < xref.size(); i++) { PdfIndirectReference indirectReference = xref.get(i); if (null != indirectReference && !indirectReference.isFree() && !forbiddenToFlush.contains(indirectReference)) { boolean isModified = indirectReference.checkState(PdfObject.MODIFIED); if (isModified) { PdfObject obj = indirectReference.getRefersTo(false); if (obj != null) { if (!obj.equals(objectStream)) { obj.flush(); } } } } } if (objectStream != null && objectStream.getSize() > 0) { objectStream.flush(); objectStream = null; } }
/** * Flushes all objects which have not been flushed yet. * @param forbiddenToFlush {@link Set<PdfIndirectReference>} of references that are forbidden to be flushed automatically. */ protected void flushWaitingObjects(Set<PdfIndirectReference> forbiddenToFlush) { PdfXrefTable xref = document.getXref(); boolean needFlush = true; while (needFlush) { needFlush = false; for (int i = 1; i < xref.size(); i++) { PdfIndirectReference indirectReference = xref.get(i); if (indirectReference != null && !indirectReference.isFree() && indirectReference.checkState(PdfObject.MUST_BE_FLUSHED) && !forbiddenToFlush.contains(indirectReference)) { PdfObject obj = indirectReference.getRefersTo(false); if (obj != null) { obj.flush(); needFlush = true; } } } } if (objectStream != null && objectStream.getSize() > 0) { objectStream.flush(); objectStream = null; } }