Package com.lowagie.text.pdf
Class PdfCopy
java.lang.Object
com.lowagie.text.DocWriter
com.lowagie.text.pdf.PdfWriter
com.lowagie.text.pdf.PdfCopy
- All Implemented Interfaces:
DocListener,ElementListener,PdfAnnotations,PdfDocumentActions,PdfEncryptionSettings,PdfPageActions,PdfRunDirection,PdfVersion,PdfViewerPreferences,PdfXConformance,EventListener
- Direct Known Subclasses:
PdfSmartCopy
Make copies of PDF documents. Documents can be edited after reading and
before writing them out.
- Author:
- Mark Thompson
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classprotected static classA key to allow us to hash indirect referencesstatic classNested classes/interfaces inherited from class com.lowagie.text.pdf.PdfWriter
PdfWriter.PdfBody -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected PdfIndirectReferenceprotected intprotected PdfArrayprotected HashMapprotected HashMapprotected HashMapprotected int[]protected PdfReaderFields inherited from class com.lowagie.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, 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, extraCatalog, FitWindow, fontNumber, formXObjects, formXObjectsCounter, fullCompression, GENERATION_MAX, group, HideMenubar, HideToolbar, HideWindowUI, imageDictionary, importedPages, JBIG2Globals, newBookmarks, NO_SPACE_CHAR_RATIO, NonFullScreenPageModeUseNone, NonFullScreenPageModeUseOC, NonFullScreenPageModeUseOutlines, NonFullScreenPageModeUseThumbs, OCGLocked, OCGRadioGroup, OCProperties, PAGE_CLOSE, PAGE_OPEN, 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, PDFA1A, PDFA1B, PDFX1A2001, PDFX32002, PDFXNONE, prevxref, PrintScalingNone, 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, userunit, VERSION_1_2, VERSION_1_3, VERSION_1_4, VERSION_1_5, VERSION_1_6, VERSION_1_7, WILL_PRINT, WILL_SAVE, xmpMetadata -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(PdfOutline outline) voidaddAnnotation(PdfAnnotation annot) Use this methods to add aPdfAnnotationor aPdfFormFieldto the document.voidaddPage(PdfImportedPage iPage) Add an imported page to our outputvoidAdds a blank page.voidclose()Signals that theDocumentwas closed and that no otherElementswill be added.voidcopyAcroForm(PdfReader reader) Copy the acroform for an input document.protected PdfArrayTranslate a PRArray to a PdfArray.protected PdfDictionaryTranslate a PRDictionary to a PdfDictionary.protected PdfIndirectReferenceTranslate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file.protected PdfObjectcopyObject(PdfObject in) Translate a PR-object to a Pdf-objectprotected PdfStreamcopyStream(PRStream in) Translate a PRStream to a PdfStream.createPageStamp(PdfImportedPage iPage) Create a page stamp.voidfreeReader(PdfReader reader) Use this method to writes the reader to the document and free the memory used by it.protected PdfDictionarygetCatalog(PdfIndirectReference rootObj) getImportedPage(PdfReader reader, int pageNumber) Grabs a page from the input documentbooleanGetter for property rotateContents.protected intsetFromIPage(PdfImportedPage iPage) convenience method.protected voidsetFromReader(PdfReader reader) convenience method.voidsetRotateContents(boolean rotateContents) Setter for property rotateContents.Methods inherited from class com.lowagie.text.pdf.PdfWriter
add, addCalculationOrder, addDeveloperExtension, addDirectImageSimple, addDirectImageSimple, addFileAttachment, addFileAttachment, addFileAttachment, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addJavaScript, addOCGRadioGroup, addSharedObjectsToBody, addToBody, addToBody, addToBody, addToBody, addToBody, addToBody, addViewerPreference, clearTextWrap, createXmpMetadata, fillOCProperties, fitsPage, fitsPage, getAcroForm, getBoxSize, getCompressionLevel, getCurrentDocumentSize, getCurrentPageNumber, getDefaultColorspace, getDirectContent, getDirectContentUnder, getExtraCatalog, getGroup, getInfo, getInstance, getInstance, getNewObjectNumber, getOCProperties, getPageEvent, getPageNumber, getPageReference, getPageSize, getPdfIndirectReference, getPDFXConformance, getReferenceJBIG2Globals, getRootOutline, getRunDirection, getSpaceCharRatio, getStructureTreeRoot, getTabs, getUserunit, getVerticalPosition, isFullCompression, isPageEmpty, isPdfX, isRgbTransparencyBlending, isStrictImageSequence, isTagged, isUserProperties, lockLayer, open, releaseTemplate, reorderPages, setAdditionalAction, setAtLeastPdfVersion, setBoxSize, setCollection, setCompressionLevel, setCropBoxSize, setDefaultColorspace, setDuration, setEncryption, setEncryption, setEncryption, setEncryption, setEncryption, setFullCompression, setGroup, setInitialLeading, setLinearPageMode, setOpenAction, setOpenAction, setOutlines, setOutputIntents, setOutputIntents, setOutputIntents, setPageAction, setPageEmpty, setPageEvent, setPageLabels, setPageXmpMetadata, setPdfVersion, setPdfVersion, setPDFXConformance, setRgbTransparencyBlending, setRunDirection, setSigFlags, setSpaceCharRatio, setStrictImageSequence, setTabs, setTagged, setThumbnail, setTransition, setUserProperties, setUserunit, setViewerPreferences, setXmpMetadata, writeOutlinesMethods inherited from class com.lowagie.text.DocWriter
add, addTabs, flush, getISOBytes, isCloseStream, isPaused, newPage, pause, resetFooter, resetHeader, resetPageCount, resume, setCloseStream, setFooter, setHeader, setMarginMirroring, setMarginMirroringTopBottom, setMargins, setPageCount, setPageSize, write, write, writeEnd, writeEnd, writeMarkupAttributes, writeStart
-
Field Details
-
indirects
-
indirectMap
-
currentObjectNum
protected int currentObjectNum -
reader
-
acroForm
-
namePtr
protected int[] namePtr -
fieldArray
-
fieldTemplates
-
-
Constructor Details
-
PdfCopy
Constructor- Parameters:
document-os- outputstream- Throws:
DocumentException
-
-
Method Details
-
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.
-
getImportedPage
Grabs a page from the input document- Overrides:
getImportedPagein classPdfWriter- Parameters:
reader- the reader of the documentpageNumber- which page to get- Returns:
- the page
-
copyIndirect
protected PdfIndirectReference copyIndirect(PRIndirectReference in) throws 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:
IOExceptionBadPdfFormatException
-
copyDictionary
Translate a PRDictionary to a PdfDictionary. Also translate all of the objects contained in it.- Throws:
IOExceptionBadPdfFormatException
-
copyStream
Translate a PRStream to a PdfStream. The data part copies itself.- Throws:
IOExceptionBadPdfFormatException
-
copyArray
Translate a PRArray to a PdfArray. Also translate all of the objects contained in it- Throws:
IOExceptionBadPdfFormatException
-
copyObject
Translate a PR-object to a Pdf-object- Throws:
IOExceptionBadPdfFormatException
-
setFromIPage
convenience method. Given an imported page, set our "globals" -
setFromReader
convenience method. Given a reader, set our "globals" -
addPage
Add an imported page to our output- Parameters:
iPage- an imported page- Throws:
IOExceptionBadPdfFormatException
-
addPage
Adds a blank page.- Parameters:
rect- The page dimensionrotation- The rotation angle in degrees- Since:
- 2.1.5
-
copyAcroForm
Copy the acroform for an input document. Note that you can only have one, we make no effort to merge them.- Parameters:
reader- The reader of the input file that is being copied- Throws:
IOExceptionBadPdfFormatException
-
getCatalog
- Overrides:
getCatalogin classPdfWriter
-
close
public void close()Signals that theDocumentwas closed and that no otherElementswill 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:
closein interfaceDocListener- Overrides:
closein classPdfWriter- See Also:
-
add
-
addAnnotation
Description copied from interface:PdfAnnotationsUse this methods to add aPdfAnnotationor aPdfFormFieldto the document. Only the top parent of aPdfFormFieldneeds to be added.- Specified by:
addAnnotationin interfacePdfAnnotations- Overrides:
addAnnotationin classPdfWriter- Parameters:
annot- thePdfAnnotationor thePdfFormFieldto add- See Also:
-
freeReader
Description copied from class:PdfWriterUse 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:
freeReaderin classPdfWriter- Parameters:
reader- thePdfReaderto free- Throws:
IOException- on error
-
createPageStamp
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
-