Package com.itextpdf.text.pdf
Class PdfCopy
- java.lang.Object
-
- com.itextpdf.text.DocWriter
-
- com.itextpdf.text.pdf.PdfWriter
-
- com.itextpdf.text.pdf.PdfCopy
-
- All Implemented Interfaces:
DocListener
,ElementListener
,PdfAnnotations
,PdfDocumentActions
,PdfEncryptionSettings
,PdfPageActions
,PdfRunDirection
,PdfVersion
,PdfViewerPreferences
,java.util.EventListener
- Direct Known Subclasses:
PdfACopy
,PdfSmartCopy
public class PdfCopy extends PdfWriter
Make copies of PDF documents. Documents can be edited after reading and before writing them out.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
PdfCopy.ImportedPage
(package private) static class
PdfCopy.IndirectReferences
This class holds information about indirect references, since they are renumbered by iText.static class
PdfCopy.PageStamp
static class
PdfCopy.StampContent
-
Nested classes/interfaces inherited from class com.itextpdf.text.pdf.PdfWriter
PdfWriter.PdfBody, PdfWriter.PdfTrailer
-
-
Field Summary
Fields Modifier and Type Field Description private PdfIndirectReference
acroForm
private static PdfName
annotId
private static int
annotIdCnt
private java.util.ArrayList<java.lang.String>
calculationOrder
private java.util.ArrayList<java.lang.Object>
calculationOrderRefs
protected static Counter
COUNTER
private int
currentStructArrayNumber
protected java.util.HashSet<PdfObject>
disableIndirects
protected PdfArray
fieldArray
protected static java.util.HashSet<PdfName>
fieldKeys
protected java.util.ArrayList<AcroFields>
fields
protected java.util.HashSet<PdfTemplate>
fieldTemplates
private java.util.HashMap<java.lang.String,java.lang.Object>
fieldTree
private boolean
hasSignature
protected java.util.ArrayList<PdfCopy.ImportedPage>
importedPages
protected java.util.HashMap<PdfReader,java.util.HashMap<RefKey,PdfCopy.IndirectReferences>>
indirectMap
protected java.util.LinkedHashMap<RefKey,PdfIndirectObject>
indirectObjects
protected java.util.HashMap<RefKey,PdfCopy.IndirectReferences>
indirects
private static PdfName
iTextTag
private static Logger
LOGGER
private java.util.HashMap<java.lang.Integer,PdfIndirectObject>
mergedMap
private java.util.HashSet<java.lang.Object>
mergedRadioButtons
private java.util.HashSet<PdfIndirectObject>
mergedSet
private java.util.HashMap<java.lang.Object,PdfString>
mergedTextFields
protected boolean
mergeFields
private boolean
mergeFieldsInternalCall
protected int[]
namePtr
private boolean
needAppearances
protected java.util.HashMap<PdfObject,PdfObject>
parentObjects
protected PdfReader
reader
private java.util.HashSet<PdfReader>
readersWithImportedStructureTreeRootKids
private PdfDictionary
resources
private boolean
rotateContents
Holds value of property rotateContents.protected java.util.ArrayList<PdfIndirectObject>
savedObjects
private PdfStructTreeController
structTreeController
protected PRIndirectReference
structTreeRootReference
private java.util.HashMap<PdfArray,java.util.ArrayList<java.lang.Integer>>
tabOrder
private java.util.HashMap<RefKey,PdfIndirectObject>
unmergedIndirectRefsMap
private java.util.HashMap<java.lang.Integer,PdfIndirectObject>
unmergedMap
protected boolean
updateRootKids
protected static java.util.HashSet<PdfName>
widgetKeys
private static java.lang.Integer
zero
-
Fields inherited from class com.itextpdf.text.pdf.PdfWriter
ALLOW_ASSEMBLY, ALLOW_COPY, ALLOW_DEGRADED_PRINTING, ALLOW_FILL_IN, ALLOW_MODIFY_ANNOTATIONS, ALLOW_MODIFY_CONTENTS, ALLOW_PRINTING, ALLOW_SCREENREADERS, AllowAssembly, AllowCopy, AllowDegradedPrinting, AllowFillIn, AllowModifyAnnotations, AllowModifyContents, AllowPrinting, AllowScreenReaders, body, CenterWindow, colorNumber, colorProfile, compressionLevel, crypto, currentPageNumber, currentPdfReaderInstance, defaultColorspace, DID_PRINT, DID_SAVE, directContent, directContentUnder, DirectionL2R, DirectionR2L, DisplayDocTitle, DO_NOT_ENCRYPT_METADATA, DOCUMENT_CLOSE, documentColors, documentExtGState, documentFonts, documentOCG, documentOCGorder, documentPatterns, documentProperties, documentShadingPatterns, documentShadings, documentSpotPatterns, EMBEDDED_FILES_ONLY, ENCRYPTION_AES_128, ENCRYPTION_AES_256, ENCRYPTION_MASK, extraCatalog, FitWindow, fontNumber, formXObjects, formXObjectsCounter, fullCompression, GENERATION_MAX, group, HideMenubar, HideToolbar, HideWindowUI, imageDictionary, JBIG2Globals, markAll, markInlineElementsOnly, newBookmarks, NO_SPACE_CHAR_RATIO, NonFullScreenPageModeUseNone, NonFullScreenPageModeUseOC, NonFullScreenPageModeUseOutlines, NonFullScreenPageModeUseThumbs, OCGLocked, OCGRadioGroup, OCProperties, originalFileID, PAGE_CLOSE, PAGE_OPEN, pageDictEntries, PageLayoutOneColumn, PageLayoutSinglePage, PageLayoutTwoColumnLeft, PageLayoutTwoColumnRight, PageLayoutTwoPageLeft, PageLayoutTwoPageRight, PageModeFullScreen, PageModeUseAttachments, PageModeUseNone, PageModeUseOC, PageModeUseOutlines, PageModeUseThumbs, pageReferences, patternColorspaceCMYK, patternColorspaceGRAY, patternColorspaceRGB, patternNumber, pdf, pdf_version, PDF_VERSION_1_2, PDF_VERSION_1_3, PDF_VERSION_1_4, PDF_VERSION_1_5, PDF_VERSION_1_6, PDF_VERSION_1_7, pdfIsoConformance, PDFX1A2001, PDFX32002, PDFXNONE, prevxref, PrintScalingNone, readerInstances, root, RUN_DIRECTION_DEFAULT, RUN_DIRECTION_LTR, RUN_DIRECTION_NO_BIDI, RUN_DIRECTION_RTL, runDirection, SIGNATURE_APPEND_ONLY, SIGNATURE_EXISTS, SPACE_CHAR_RATIO_DEFAULT, STANDARD_ENCRYPTION_128, STANDARD_ENCRYPTION_40, STRENGTH128BITS, STRENGTH40BITS, structureTreeRoot, tabs, tagged, taggingMode, ttfUnicodeWriter, VERSION_1_2, VERSION_1_3, VERSION_1_4, VERSION_1_5, VERSION_1_6, VERSION_1_7, WILL_PRINT, WILL_SAVE, xmpMetadata, xmpWriter
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description PdfIndirectReference
add(PdfOutline outline)
(package private) PdfIndirectReference
add(PdfPage page, PdfContents contents)
Adds somePdfContents
to this Writer.void
addAnnotation(PdfAnnotation annot)
Use this methods to add aPdfAnnotation
or aPdfFormField
to the document.void
addDocument(PdfReader reader)
void
addDocument(PdfReader reader, java.util.List<java.lang.Integer> pagesToKeep)
private void
addFieldResources(PdfDictionary catalog)
void
addPage(PdfImportedPage iPage)
Add an imported page to our outputvoid
addPage(Rectangle rect, int rotation)
Adds a blank page.private void
addPageOffsetToField(java.util.Map<java.lang.String,AcroFields.Item> fd, int pageOffset)
PdfIndirectObject
addToBody(PdfObject object, PdfIndirectReference ref)
Use this method to add a PDF object to the PDF body.PdfIndirectObject
addToBody(PdfObject object, PdfIndirectReference ref, boolean formBranching)
Use this method to add a PDF object to the PDF body.private void
adjustTabOrder(PdfArray annots, PdfIndirectReference ind, PdfNumber nn)
private PdfArray
branchForm(java.util.HashMap<java.lang.String,java.lang.Object> level, PdfIndirectReference parent, java.lang.String fname)
protected void
cacheObject(PdfIndirectObject iobj)
Use this method for caching objects.private int
checkStructureTreeRootKids(PdfCopy.ImportedPage newPage)
private void
clearIndirects(PdfReader reader)
void
close()
Signals that theDocument
was closed and that no otherElements
will be added.private boolean
containsInactivePg(PdfDictionary dict, java.util.HashSet<RefKey> activeKeys)
protected PdfArray
copyArray(PdfArray in)
Translate a PRArray to a PdfArray.protected PdfArray
copyArray(PdfArray in, boolean keepStruct, boolean directRootKids)
Translate a PRArray to a PdfArray.protected PdfDictionary
copyDictionary(PdfDictionary in)
Translate a PRDictionary to a PdfDictionary.protected PdfDictionary
copyDictionary(PdfDictionary in, boolean keepStruct, boolean directRootKids)
Translate a PRDictionary to a PdfDictionary.void
copyDocumentFields(PdfReader reader)
Copy document fields to a destination document.protected PdfIndirectReference
copyIndirect(PRIndirectReference in)
Translate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file.protected PdfIndirectReference
copyIndirect(PRIndirectReference in, boolean keepStructure, boolean directRootKids)
Translate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file.protected PdfObject
copyObject(PdfObject in)
Translate a PR-object to a Pdf-objectprotected PdfObject
copyObject(PdfObject in, boolean keepStruct, boolean directRootKids)
Translate a PR-object to a Pdf-objectprotected PdfStream
copyStream(PRStream in)
Translate a PRStream to a PdfStream.private void
createAcroForms()
PdfCopy.PageStamp
createPageStamp(PdfImportedPage iPage)
Create a page stamp.private void
createWidgets(java.util.ArrayList<java.lang.Object> list, AcroFields.Item item)
private java.util.ArrayList<PdfIndirectReference>
findActiveParents(java.util.HashSet<RefKey> activeKeys)
private void
findActives(java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
private void
findActivesFromArray(PdfArray array, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
private void
findActivesFromDict(PdfDictionary dict, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
private void
findActivesFromReference(PdfIndirectReference iref, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys)
private void
fixPgKey(java.util.ArrayList<PdfIndirectReference> newRefs, java.util.HashSet<RefKey> activeKeys)
protected void
fixStructureTreeRoot(java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
protected void
fixTaggedStructure()
protected void
flushAcroFields()
protected void
flushIndirectObjects()
protected void
flushTaggedObjects()
Fix structure of tagged document: remove unused objects, remove unused items from class map, fix xref table due to removed objects.void
freeReader(PdfReader reader)
Use this method to writes the reader to the document and free the memory used by it.protected PdfDictionary
getCatalog(PdfIndirectReference rootObj)
private static java.lang.String
getCOName(PdfReader reader, PRIndirectReference ref)
protected Counter
getCounter()
(package private) static java.lang.Integer
getFlags(PdfDictionary field)
PdfImportedPage
getImportedPage(PdfReader reader, int pageNumber)
Grabs a page from the input documentPdfImportedPage
getImportedPage(PdfReader reader, int pageNumber, boolean keepTaggedPdfStructure)
protected PdfImportedPage
getImportedPageImpl(PdfReader reader, int pageNumber)
protected PdfName
getOffStateName(PdfDictionary widget)
(package private) static boolean
isCheckButton(PdfDictionary field)
(package private) static boolean
isRadioButton(PdfDictionary field)
boolean
isRotateContents()
Getter for property rotateContents.protected boolean
isStructTreeRootReference(PdfIndirectReference prRef)
(package private) static boolean
isTextField(PdfDictionary field)
private void
mergeField(java.lang.String name, AcroFields.Item item)
private void
mergeFields()
private void
mergeWithMaster(java.util.Map<java.lang.String,AcroFields.Item> fd)
private PdfObject
propagate(PdfObject obj)
private void
removeInactiveReferences(PdfArray array, java.util.HashSet<RefKey> activeKeys)
protected int
setFromIPage(PdfImportedPage iPage)
convenience method.protected void
setFromReader(PdfReader reader)
convenience method.void
setMergeFields()
void
setPageEvent(PdfPageEvent event)
Setting page events isn't possible with Pdf(Smart)Copy.void
setRotateContents(boolean rotateContents)
Setter for property rotateContents.protected void
structureTreeRootKidsForReaderImported(PdfReader reader)
private void
updateAnnotationReferences(PdfObject obj)
private void
updateCalculationOrder(PdfReader reader)
private void
updateReferences(PdfObject obj)
private void
writeObjectToBody(PdfIndirectObject object)
-
Methods inherited from class com.itextpdf.text.pdf.PdfWriter
add, add, addAnnotation, addCalculationOrder, addDeveloperExtension, addDirectImageSimple, addDirectImageSimple, addDirectTemplateSimple, addFileAttachment, addFileAttachment, addFileAttachment, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addLocalDestinations, addNamedDestination, addNamedDestinations, addOCGRadioGroup, addPageDictEntry, addSharedObjectsToBody, addSimple, addSimple, addSimpleExtGState, addSimplePattern, addSimplePatternColorspace, addSimpleProperty, addSimpleShading, addSimpleShadingPattern, addToBody, addToBody, addToBody, addToBody, addViewerPreference, addXFormsToBody, buildStructTreeRootForTagged, checkElementRole, checkPdfIsoConformance, checkPdfIsoConformance, clearTextWrap, createAnnotation, createAnnotation, createAnnotation, createXmpMetadata, createXmpWriter, createXmpWriter, eliminateFontSubset, fillOCProperties, getAcroForm, getBoxSize, getBoxSize, getColorProfile, getColorspaceName, getCompressionLevel, getCurrentDocumentSize, getCurrentPage, getCurrentPageNumber, getDefaultColorspace, getDirectContent, getDirectContentUnder, getEncryption, getExtraCatalog, getGroup, getImageReference, getIndirectReferenceNumber, getInfo, getInstance, getInstance, getNameString, getNewObjectNumber, getOCProperties, getOs, getPageDictEntries, getPageEvent, getPageNumber, getPageReference, getPageSize, getPdfDocument, getPdfIndirectReference, getPdfReaderInstance, getPdfVersion, getPDFXConformance, getReaderFile, getReferenceJBIG2Globals, getRootOutline, getRunDirection, getSpaceCharRatio, getStandardStructElems, getStructureTreeRoot, getTabs, getTtfUnicodeWriter, getVerticalPosition, getXmpWriter, initPdfIsoConformance, isFullCompression, isPageEmpty, isPdfIso, isPdfX, isRgbTransparencyBlending, isStrictImageSequence, isTagged, isUserProperties, lockLayer, needToBeMarkedInContent, open, propertyExists, registerLayer, releaseTemplate, reorderPages, resetContent, resetPageDictEntries, setAdditionalAction, setAtLeastPdfVersion, setBoxSize, setCollection, setCompressionLevel, setCropBoxSize, setDefaultColorspace, setDuration, setEncryption, setEncryption, setEncryption, setEncryption, setEncryption, setFullCompression, setGroup, setInitialLeading, setLanguage, setLinearPageMode, setOpenAction, setOpenAction, setOutlines, setOutputIntents, setOutputIntents, setOutputIntents, setPageAction, setPageEmpty, setPageLabels, setPageViewport, setPageXmpMetadata, setPdfVersion, setPdfVersion, setPDFXConformance, setRgbTransparencyBlending, setRunDirection, setSigFlags, setSpaceCharRatio, setStrictImageSequence, setTabs, setTagged, setTagged, setThumbnail, setTransition, setUserProperties, setUserunit, setViewerPreferences, setXmpMetadata, useExternalCacheForTagStructure, writeKeyInfo, writeOutlines
-
Methods inherited from class com.itextpdf.text.DocWriter
add, addTabs, flush, getISOBytes, isCloseStream, isPaused, newPage, pause, resetPageCount, resume, setCloseStream, setMarginMirroring, setMarginMirroringTopBottom, setMargins, setPageCount, setPageSize, write, write, writeEnd, writeEnd, writeMarkupAttributes, writeStart
-
-
-
-
Field Detail
-
LOGGER
private static final Logger LOGGER
-
COUNTER
protected static Counter COUNTER
-
indirects
protected java.util.HashMap<RefKey,PdfCopy.IndirectReferences> indirects
-
indirectMap
protected java.util.HashMap<PdfReader,java.util.HashMap<RefKey,PdfCopy.IndirectReferences>> indirectMap
-
disableIndirects
protected java.util.HashSet<PdfObject> disableIndirects
-
reader
protected PdfReader reader
-
namePtr
protected int[] namePtr
-
rotateContents
private boolean rotateContents
Holds value of property rotateContents.
-
fieldArray
protected PdfArray fieldArray
-
fieldTemplates
protected java.util.HashSet<PdfTemplate> fieldTemplates
-
structTreeController
private PdfStructTreeController structTreeController
-
currentStructArrayNumber
private int currentStructArrayNumber
-
structTreeRootReference
protected PRIndirectReference structTreeRootReference
-
indirectObjects
protected java.util.LinkedHashMap<RefKey,PdfIndirectObject> indirectObjects
-
savedObjects
protected java.util.ArrayList<PdfIndirectObject> savedObjects
-
importedPages
protected java.util.ArrayList<PdfCopy.ImportedPage> importedPages
-
updateRootKids
protected boolean updateRootKids
-
annotId
private static final PdfName annotId
-
annotIdCnt
private static int annotIdCnt
-
mergeFields
protected boolean mergeFields
-
needAppearances
private boolean needAppearances
-
hasSignature
private boolean hasSignature
-
acroForm
private PdfIndirectReference acroForm
-
tabOrder
private java.util.HashMap<PdfArray,java.util.ArrayList<java.lang.Integer>> tabOrder
-
calculationOrderRefs
private java.util.ArrayList<java.lang.Object> calculationOrderRefs
-
resources
private PdfDictionary resources
-
fields
protected java.util.ArrayList<AcroFields> fields
-
calculationOrder
private java.util.ArrayList<java.lang.String> calculationOrder
-
fieldTree
private java.util.HashMap<java.lang.String,java.lang.Object> fieldTree
-
unmergedMap
private java.util.HashMap<java.lang.Integer,PdfIndirectObject> unmergedMap
-
unmergedIndirectRefsMap
private java.util.HashMap<RefKey,PdfIndirectObject> unmergedIndirectRefsMap
-
mergedMap
private java.util.HashMap<java.lang.Integer,PdfIndirectObject> mergedMap
-
mergedSet
private java.util.HashSet<PdfIndirectObject> mergedSet
-
mergeFieldsInternalCall
private boolean mergeFieldsInternalCall
-
iTextTag
private static final PdfName iTextTag
-
zero
private static final java.lang.Integer zero
-
mergedRadioButtons
private java.util.HashSet<java.lang.Object> mergedRadioButtons
-
mergedTextFields
private java.util.HashMap<java.lang.Object,PdfString> mergedTextFields
-
readersWithImportedStructureTreeRootKids
private java.util.HashSet<PdfReader> readersWithImportedStructureTreeRootKids
-
widgetKeys
protected static final java.util.HashSet<PdfName> widgetKeys
-
fieldKeys
protected static final java.util.HashSet<PdfName> fieldKeys
-
-
Constructor Detail
-
PdfCopy
public PdfCopy(Document document, java.io.OutputStream os) throws DocumentException
Constructor- Parameters:
document
- documentos
- outputstream- Throws:
DocumentException
-
-
Method Detail
-
getCounter
protected Counter getCounter()
- Overrides:
getCounter
in classPdfWriter
-
setPageEvent
public void setPageEvent(PdfPageEvent event)
Setting page events isn't possible with Pdf(Smart)Copy. Use the PageStamp class if you want to add content to copied pages.- Overrides:
setPageEvent
in classPdfWriter
- Parameters:
event
- thePdfPageEvent
for this document- See Also:
PdfWriter.setPageEvent(com.itextpdf.text.pdf.PdfPageEvent)
-
isRotateContents
public boolean isRotateContents()
Getter for property rotateContents.- Returns:
- Value of property rotateContents.
-
setRotateContents
public void setRotateContents(boolean rotateContents)
Setter for property rotateContents.- Parameters:
rotateContents
- New value of property rotateContents.
-
setMergeFields
public void setMergeFields()
-
getImportedPage
public PdfImportedPage getImportedPage(PdfReader reader, int pageNumber)
Grabs a page from the input document- Overrides:
getImportedPage
in classPdfWriter
- Parameters:
reader
- the reader of the documentpageNumber
- which page to get- Returns:
- the page
-
getImportedPage
public PdfImportedPage getImportedPage(PdfReader reader, int pageNumber, boolean keepTaggedPdfStructure) throws BadPdfFormatException
- Throws:
BadPdfFormatException
-
clearIndirects
private void clearIndirects(PdfReader reader)
-
checkStructureTreeRootKids
private int checkStructureTreeRootKids(PdfCopy.ImportedPage newPage)
-
structureTreeRootKidsForReaderImported
protected void structureTreeRootKidsForReaderImported(PdfReader reader)
-
fixStructureTreeRoot
protected void fixStructureTreeRoot(java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
-
getImportedPageImpl
protected PdfImportedPage getImportedPageImpl(PdfReader reader, int pageNumber)
-
copyIndirect
protected PdfIndirectReference copyIndirect(PRIndirectReference in, boolean keepStructure, boolean directRootKids) throws java.io.IOException, BadPdfFormatException
Translate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file. NB: PRIndirectReferences (and PRIndirectObjects) really need to know what file they came from, because each file has its own namespace. The translation we do from their namespace to ours is *at best* heuristic, and guaranteed to fail under some circumstances.- Throws:
java.io.IOException
BadPdfFormatException
-
copyIndirect
protected PdfIndirectReference copyIndirect(PRIndirectReference in) throws java.io.IOException, BadPdfFormatException
Translate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file. NB: PRIndirectReferences (and PRIndirectObjects) really need to know what file they came from, because each file has its own namespace. The translation we do from their namespace to ours is *at best* heuristic, and guaranteed to fail under some circumstances.- Throws:
java.io.IOException
BadPdfFormatException
-
copyDictionary
protected PdfDictionary copyDictionary(PdfDictionary in, boolean keepStruct, boolean directRootKids) throws java.io.IOException, BadPdfFormatException
Translate a PRDictionary to a PdfDictionary. Also translate all of the objects contained in it.- Throws:
java.io.IOException
BadPdfFormatException
-
copyDictionary
protected PdfDictionary copyDictionary(PdfDictionary in) throws java.io.IOException, BadPdfFormatException
Translate a PRDictionary to a PdfDictionary. Also translate all of the objects contained in it.- Throws:
java.io.IOException
BadPdfFormatException
-
copyStream
protected PdfStream copyStream(PRStream in) throws java.io.IOException, BadPdfFormatException
Translate a PRStream to a PdfStream. The data part copies itself.- Throws:
java.io.IOException
BadPdfFormatException
-
copyArray
protected PdfArray copyArray(PdfArray in, boolean keepStruct, boolean directRootKids) throws java.io.IOException, BadPdfFormatException
Translate a PRArray to a PdfArray. Also translate all of the objects contained in it- Throws:
java.io.IOException
BadPdfFormatException
-
copyArray
protected PdfArray copyArray(PdfArray in) throws java.io.IOException, BadPdfFormatException
Translate a PRArray to a PdfArray. Also translate all of the objects contained in it- Throws:
java.io.IOException
BadPdfFormatException
-
copyObject
protected PdfObject copyObject(PdfObject in, boolean keepStruct, boolean directRootKids) throws java.io.IOException, BadPdfFormatException
Translate a PR-object to a Pdf-object- Throws:
java.io.IOException
BadPdfFormatException
-
copyObject
protected PdfObject copyObject(PdfObject in) throws java.io.IOException, BadPdfFormatException
Translate a PR-object to a Pdf-object- Throws:
java.io.IOException
BadPdfFormatException
-
setFromIPage
protected int setFromIPage(PdfImportedPage iPage)
convenience method. Given an imported page, set our "globals"
-
setFromReader
protected void setFromReader(PdfReader reader)
convenience method. Given a reader, set our "globals"
-
addPage
public void addPage(PdfImportedPage iPage) throws java.io.IOException, BadPdfFormatException
Add an imported page to our output- Parameters:
iPage
- an imported page- Throws:
java.io.IOException
BadPdfFormatException
-
addPage
public void addPage(Rectangle rect, int rotation) throws DocumentException
Adds a blank page.- Parameters:
rect
- The page dimensionrotation
- The rotation angle in degrees- Throws:
DocumentException
- Since:
- 2.1.5
-
addDocument
public void addDocument(PdfReader reader, java.util.List<java.lang.Integer> pagesToKeep) throws DocumentException, java.io.IOException
- Throws:
DocumentException
java.io.IOException
-
copyDocumentFields
public void copyDocumentFields(PdfReader reader) throws DocumentException, java.io.IOException
Copy document fields to a destination document.- Parameters:
reader
- a document where fields are copied from.- Throws:
DocumentException
java.io.IOException
-
addDocument
public void addDocument(PdfReader reader) throws DocumentException, java.io.IOException
- Throws:
DocumentException
java.io.IOException
-
addToBody
public PdfIndirectObject addToBody(PdfObject object, PdfIndirectReference ref) throws java.io.IOException
Description copied from class:PdfWriter
Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
-
addToBody
public PdfIndirectObject addToBody(PdfObject object, PdfIndirectReference ref, boolean formBranching) throws java.io.IOException
Description copied from class:PdfWriter
Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
-
cacheObject
protected void cacheObject(PdfIndirectObject iobj)
Description copied from class:PdfWriter
Use this method for caching objects.- Overrides:
cacheObject
in classPdfWriter
- See Also:
PdfIndirectObject
-
flushTaggedObjects
protected void flushTaggedObjects() throws java.io.IOException
Description copied from class:PdfWriter
Fix structure of tagged document: remove unused objects, remove unused items from class map, fix xref table due to removed objects.- Overrides:
flushTaggedObjects
in classPdfWriter
- Throws:
java.io.IOException
-
flushAcroFields
protected void flushAcroFields() throws java.io.IOException, BadPdfFormatException
- Overrides:
flushAcroFields
in classPdfWriter
- Throws:
java.io.IOException
BadPdfFormatException
-
fixTaggedStructure
protected void fixTaggedStructure() throws java.io.IOException
- Throws:
java.io.IOException
-
removeInactiveReferences
private void removeInactiveReferences(PdfArray array, java.util.HashSet<RefKey> activeKeys)
-
containsInactivePg
private boolean containsInactivePg(PdfDictionary dict, java.util.HashSet<RefKey> activeKeys)
-
findActiveParents
private java.util.ArrayList<PdfIndirectReference> findActiveParents(java.util.HashSet<RefKey> activeKeys)
-
fixPgKey
private void fixPgKey(java.util.ArrayList<PdfIndirectReference> newRefs, java.util.HashSet<RefKey> activeKeys)
-
findActives
private void findActives(java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
-
findActivesFromReference
private void findActivesFromReference(PdfIndirectReference iref, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys)
-
findActivesFromArray
private void findActivesFromArray(PdfArray array, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
-
findActivesFromDict
private void findActivesFromDict(PdfDictionary dict, java.util.ArrayList<PdfIndirectReference> actives, java.util.HashSet<RefKey> activeKeys, java.util.HashSet<PdfName> activeClassMaps)
-
flushIndirectObjects
protected void flushIndirectObjects() throws java.io.IOException
- Throws:
java.io.IOException
-
writeObjectToBody
private void writeObjectToBody(PdfIndirectObject object) throws java.io.IOException
- Throws:
java.io.IOException
-
updateAnnotationReferences
private void updateAnnotationReferences(PdfObject obj)
-
updateCalculationOrder
private void updateCalculationOrder(PdfReader reader)
-
getCOName
private static java.lang.String getCOName(PdfReader reader, PRIndirectReference ref)
-
mergeFields
private void mergeFields()
-
addPageOffsetToField
private void addPageOffsetToField(java.util.Map<java.lang.String,AcroFields.Item> fd, int pageOffset)
-
mergeWithMaster
private void mergeWithMaster(java.util.Map<java.lang.String,AcroFields.Item> fd)
-
mergeField
private void mergeField(java.lang.String name, AcroFields.Item item)
-
createWidgets
private void createWidgets(java.util.ArrayList<java.lang.Object> list, AcroFields.Item item)
-
propagate
private PdfObject propagate(PdfObject obj) throws java.io.IOException
- Throws:
java.io.IOException
-
createAcroForms
private void createAcroForms() throws java.io.IOException, BadPdfFormatException
- Throws:
java.io.IOException
BadPdfFormatException
-
updateReferences
private void updateReferences(PdfObject obj)
-
branchForm
private PdfArray branchForm(java.util.HashMap<java.lang.String,java.lang.Object> level, PdfIndirectReference parent, java.lang.String fname) throws java.io.IOException, BadPdfFormatException
- Throws:
java.io.IOException
BadPdfFormatException
-
adjustTabOrder
private void adjustTabOrder(PdfArray annots, PdfIndirectReference ind, PdfNumber nn)
-
getCatalog
protected PdfDictionary getCatalog(PdfIndirectReference rootObj)
- Overrides:
getCatalog
in classPdfWriter
-
isStructTreeRootReference
protected boolean isStructTreeRootReference(PdfIndirectReference prRef)
-
addFieldResources
private void addFieldResources(PdfDictionary catalog) throws java.io.IOException
- Throws:
java.io.IOException
-
close
public void close()
Signals that theDocument
was closed and that no otherElements
will be added.The pages-tree is built and written to the outputstream. A Catalog is constructed, as well as an Info-object, the reference table is composed and everything is written to the outputstream embedded in a Trailer.
- Specified by:
close
in interfaceDocListener
- Overrides:
close
in classPdfWriter
- See Also:
DocWriter.close()
-
add
public PdfIndirectReference add(PdfOutline outline)
-
addAnnotation
public void addAnnotation(PdfAnnotation annot)
Description copied from interface:PdfAnnotations
Use this methods to add aPdfAnnotation
or aPdfFormField
to the document. Only the top parent of aPdfFormField
needs to be added.- Specified by:
addAnnotation
in interfacePdfAnnotations
- Overrides:
addAnnotation
in classPdfWriter
- Parameters:
annot
- thePdfAnnotation
or thePdfFormField
to add- See Also:
PdfAnnotations.addAnnotation(com.itextpdf.text.pdf.PdfAnnotation)
-
add
PdfIndirectReference add(PdfPage page, PdfContents contents) throws PdfException
Description copied from class:PdfWriter
Adds somePdfContents
to this Writer.The document has to be open before you can begin to add content to the body of the document.
- Overrides:
add
in classPdfWriter
- Parameters:
page
- thePdfPage
to addcontents
- thePdfContents
of the page- Returns:
- a
PdfIndirectReference
- Throws:
PdfException
- on error
-
freeReader
public void freeReader(PdfReader reader) throws java.io.IOException
Description copied from class:PdfWriter
Use this method to writes the reader to the document and free the memory used by it. The main use is when concatenating multiple documents to keep the memory usage restricted to the current appending document.- Overrides:
freeReader
in classPdfWriter
- Parameters:
reader
- thePdfReader
to free- Throws:
java.io.IOException
- on error
-
getOffStateName
protected PdfName getOffStateName(PdfDictionary widget)
-
getFlags
static java.lang.Integer getFlags(PdfDictionary field)
-
isCheckButton
static boolean isCheckButton(PdfDictionary field)
-
isRadioButton
static boolean isRadioButton(PdfDictionary field)
-
isTextField
static boolean isTextField(PdfDictionary field)
-
createPageStamp
public PdfCopy.PageStamp createPageStamp(PdfImportedPage iPage)
Create a page stamp. New content and annotations, including new fields, are allowed. The fields added cannot have parents in another pages. This method modifies the PdfReader instance.The general usage to stamp something in a page is:
PdfImportedPage page = copy.getImportedPage(reader, 1); PdfCopy.PageStamp ps = copy.createPageStamp(page); ps.addAnnotation(PdfAnnotation.createText(copy, new Rectangle(50, 180, 70, 200), "Hello", "No Thanks", true, "Comment")); PdfContentByte under = ps.getUnderContent(); under.addImage(img); PdfContentByte over = ps.getOverContent(); over.beginText(); over.setFontAndSize(bf, 18); over.setTextMatrix(30, 30); over.showText("total page " + totalPage); over.endText(); ps.alterContents(); copy.addPage(page);
- Parameters:
iPage
- an imported page- Returns:
- the
PageStamp
-
-