Summary: Nested Classes | Constants | Fields | Ctors | Methods | Inherited Methods | [Expand All]
public class

# PDFDoc

extends Doc
implements AutoCloseable

java.lang.Object
↳ | com.pdftron.sdf.Doc
| ↳ | com.pdftron.pdf.PDFDoc

## Class Overview

PDFDoc is a high-level class describing a single PDF (Portable Document Format) document. Most applications using PDFNet will use this class to open existing PDF documents, or to create new PDF documents from scratch.

The class offers a number of entry points into the document. For example:

- To access pages use pdfdoc.getPageIterator() or pdfdoc.getPage(page_num).
- To access form fields use pdfdoc.getFieldIterator(), pdfdoc.getFieldIterator(name) or pdfdoc.getField(name).
- To access document's meta-data use pdfdoc.GetDocInfo().
- To access the outline tree use pdfdoc.GetFirstBookmark().
- To access low-level Document Catalog use pdfdoc.GetRoot(). ...

The class also offers utility methods to slit and merge PDF pages, to create new pages, to flatten forms, to change security settings, etc.

## Summary

Nested Classes
enum | PDFDoc.ActionTriggerMode |
enum | PDFDoc.FlattenMode |
enum | PDFDoc.InsertBookmarkMode |
enum | PDFDoc.SignaturesVerificationStatus |

Constants
int | e_action_trigger_doc_did_print | This constant is deprecated. use `DOC_DID_PRINT` instead.
int | e_action_trigger_doc_did_save | This constant is deprecated. use `DOC_DID_SAVE` instead.
int | e_action_trigger_doc_will_close | This constant is deprecated. use `DOC_WILL_CLOSE` instead.
int | e_action_trigger_doc_will_print | This constant is deprecated. use ActionTriggerMode#DOC_will_PRINT instead.
int | e_action_trigger_doc_will_save | This constant is deprecated. use `DOC_WILL_SAVE` instead.
int | e_annots_only |
int | e_annots_only_no_links |
int | e_both |
int | e_flatten_all | This constant is deprecated. use `ALL` instead.
int | e_flatten_annots_only | This constant is deprecated. use `ANNOTS` instead.
int | e_flatten_forms_only | This constant is deprecated. use `FORMS` instead.
int | e_flatten_link_only | This constant is deprecated. use `LINK` instead.
int | e_forms_only |
int | e_insert_bookmark | This constant is deprecated. use `INSERT` instead.
int | e_none | This constant is deprecated. use `NONE` instead.

Fields
public Filter | mCustomFilter |

Public Constructors
| PDFDoc() Default constructor.
| PDFDoc(SDFDoc sdfdoc) Create a PDF document from an existing SDF/Cos document.
| PDFDoc(String filepath) Open an existing PDF document.
| PDFDoc(Filter stream) Open an existing PDF document.
| PDFDoc(byte[] buf) Open a SDF/Cos document from a memory buffer.
| PDFDoc(InputStream stream) Open an existing PDF document from an InputStream.
| PDFDoc(InputStream stream, int size) Open an existing PDF document from an InputStream.

Public Methods
static PDFDoc | __Create(long impl)
long | __GetHandle()
void | addFileAttachment(String file_key, FileSpec embedded_file) Associates a file attachment with the document.
void | addHighlights(String hilite) AddHighlights is used to highlight text in a document using 'Adobe's Highlight File Format' (Technical Note #5172 ).
void | addRootBookmark(Bookmark root_bookmark) Adds/links the specified Bookmark to the root level of document's outline tree.
long | addSignatureHandler(SignatureHandler signature_handler) Adds a signature handler to the signature manager.
long | addStdSignatureHandler(byte[] pkcs12_keybuffer, String pkcs12_keypass) Adds a standard (built-in) signature handler to the signature manager.
long | addStdSignatureHandler(String pkcs12_keyfile, String pkcs12_keypass) Adds a standard (built-in) signature handler to the signature manager.
int | appendTextDiff(PDFDoc doc1, PDFDoc doc2) Imports two external PDFs and highlights the differences between them.
int | appendTextDiff(PDFDoc doc1, PDFDoc doc2, TextDiffOptions options) Imports two external PDFs and highlights the differences between them.
int | appendTextDiff(Page page1, Page page2) Imports two external pages and highlights the differences between them.
void | appendVisualDiff(Page p1, Page p2, DiffOptions opts) Generates a PDF diff of the given pages by overlaying and blending them on top of each other, then appends that diff as a new page in this document.
void | close() Destructor.
DigitalSignatureField | createDigitalSignatureField()
DigitalSignatureField | createDigitalSignatureField(String in_sig_field_name) Creates an unsigned digital signature form field inside the document.
Obj | createIndirectArray() Create the indirect array.
Obj | createIndirectBool(boolean value) Create the indirect boolean.
Obj | createIndirectDict() Create the indirect dictionary
Obj | createIndirectName(String name) Create SDF/Cos indirect name Unlike direct objects, indirect objects can be referenced by more than one object (i.e.
Obj | createIndirectNull() Create the indirect null.
Obj | createIndirectNumber(double value) Create the indirect number.
Obj | createIndirectStream(FilterReader data) Create the indirect stream.
Obj | createIndirectStream(FilterReader data, Filter filter_chain) Create the indirect stream.
Obj | createIndirectStream(byte[] data) Create the indirect stream.
Obj | createIndirectStream(byte[] data, Filter filter_chain) Create the indirect stream.
Obj | createIndirectString(byte[] value) Create the indirect string from buffer
Obj | createIndirectString(String str) Create the indirect string.
FDFDoc | fdfExtract(int extractFlag) Extract form data and/or annotations to FDF
FDFDoc | fdfExtract(Annot[] annotations) Extract annotations to FDF
FDFDoc | fdfExtract(PageSet pageToExtract, int extractFlag) Extract form data and/or annotations to FDF
FDFDoc | fdfExtract() Extract form data to FDF
FDFDoc | fdfExtract(ArrayList<Annot> annot_list) Extract annotations to FDF
FDFDoc | fdfExtract(ArrayList<Annot> annot_added, ArrayList<Annot> annot_modified, ArrayList<Annot> annot_deleted) Extract annotations to FDF
void | fdfMerge(FDFDoc fdf_doc) Import form data from FDF file to PDF interactive form.
void | fdfUpdate(FDFDoc fdf_doc) Replace existing form and annotation data with those imported from the FDF file.
Field | fieldCreate(String field_name, int type, String field_value) Create a new interactive form field
Field | fieldCreate(String field_name, int type, String field_value, String def_field_value) Create a new interactive form field
Field | fieldCreate(String field_name, int type) Create a new interactive form Field.
Field | fieldCreate(String field_name, int type, Obj field_value) Create a new interactive form field
Field | fieldCreate(String field_name, int type, Obj field_value, Obj def_field_value) Create a new interactive form field
void | flattenAnnotations(boolean forms_only) Flatten all annotations in the document.
void | flattenAnnotations() Flatten all annotations in the document.
void | flattenAnnotationsAdvanced(long flags) This method is deprecated. use `flattenAnnotationsAdvanced(FlattenMode[])` instead. Flatten annotations/forms/links in the document.
void | flattenAnnotationsAdvanced(FlattenMode[] flattenModes) Flatten annotations/forms/links in the document.
void | generateThumbnails(long size) Generates thumbnail images for all the pages in this PDF document.
Obj | getAcroForm() Get the AcroForm Dictionary.
DigitalSignatureFieldIterator | getDigitalSignatureFieldIterator() Retrieves an iterator that iterates over digital signature fields.
DigitalSignatureField.DocumentPermissions | getDigitalSignaturePermissions() Retrieves the most restrictive document permissions locking level from all of the signed digital signatures in the document.
PDFDocInfo | getDocInfo() Get the document infomation
long | getDownloadedByteCount() Returns the number of bytes that have been downloaded, when `hasDownloader()` is True.
Field | getField(String field_name) Get the specified field from field name
FieldIterator | getFieldIterator(String field_name) Get specified FieldIterator from field name
FieldIterator | getFieldIterator() An interactive form (sometimes referred to as an AcroForm) is a collection of fields for gathering information interactively from the user.
String | getFileName() Get the file name.
Bookmark | getFirstBookmark() Get the first bookmark.
Config | getOCGConfig() Get the optional group configuration
Obj | getOCGs() Get the optional content groups
Action | getOpenAction() Get the open action.
Page | getPage(int page_number) Get the page object from given page number
int | getPageCount() Get the page count.
PageIterator | getPageIterator(int page_number) Get the page iterator from given page number
PageIterator | getPageIterator() Get the page iterator.
PageLabel | getPageLabel(int page_num) Get the specified page label
Obj | getPages() Get the pages.
Obj | getRoot() Get the root of the document
SDFDoc | getSDFDoc() Get the underlying SDFDoc object.
SecurityHandler | getSecurityHandler() Get the security handler.
SignatureHandler | getSignatureHandler(long signature_handler_id) Gets the associated signature handler instance from the signature manager by looking it up with the handler name.
STree | getStructTree() Get the structure tree root
long | getTotalRemoteByteCount() Returns the document's total size in bytes, when `HasDownloader()` is True.
Obj | getTrailer() Get the document's trailer.
Obj | getTriggerAction(PDFDoc.ActionTriggerMode triggerMode) Get the Action associated with the selected PDFDoc Trigger event.
Obj | getTriggerAction(int trigger) This method is deprecated. use `INCREMENTAL` instead. Get the Action associated with the selected PDFDoc Trigger event.
UndoManager | getUndoManager()
PDFDocViewPrefs | getViewPrefs() Get the view preferences
boolean | hasChangesSinceSnapshot() Call this function to determine whether the document has been modified since the last Undo/Redo snapshot was taken
boolean | hasDownloader() Indicates whether this document was created via the `PDFViewCtrl` method `OpenURLAsync`.
boolean | hasOC() Checks for optional content
boolean | hasRepairedXRef() Checks whether or not the underlying file has an XRef table that had to be repaired when the file was opened.
boolean | hasSignatures() Indicates whether this documents contains any digital signatures.
static int | highlightTextDiff(PDFDoc doc1, PDFDoc doc2, TextDiffOptions options) Highlights the differences between the external PDFs.
Page[] | importPages(Page[] pages, boolean import_bookmarks) Import given pages into current PDFDoc
Page[] | importPages(Page[] pages) The function imports a list of pages to this documents.
boolean | initSecurityHandler(Object custom_data) Initialize the security handler.
boolean | initSecurityHandler() Initializes document's SecurityHandler.
boolean | initStdSecurityHandler(String password) Initializes document's SecurityHandler using the supplied password.
boolean | initStdSecurityHandler(byte[] passwordBuffer) Initializes document's SecurityHandler using the supplied password.
void | initializeJSContext() Initializes the JS context.
void | insertPages(int insertBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, int insertFlag, ProgressMonitor monitor) This method is deprecated. use `insertPages(int, PDFDoc, int, int, InsertBookmarkMode, ProgressMonitor)` instead. Inserts a range of pages from specified PDFDoc
void | insertPages(int insertBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor) Inserts a range of pages from specified PDFDoc
void | insertPages(int insertBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, int insertFlag, ProgressMonitor monitor) This method is deprecated. use `insertPages(int, PDFDoc, PageSet, InsertBookmarkMode, ProgressMonitor)` instead. Inserts a range of pages from specified PDFDoc using PageSet
void | insertPages(int insertBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor) Inserts a range of pages from specified PDFDoc using PageSet
boolean | isEncrypted() Checks if PDFDoc is encrypted.
boolean | isLinearized() Call this function to determine whether the document is represented in linearized (fast web view) format.
boolean | isModified() Call this function to determine whether the document has been modified since it was last saved.
boolean | isTagged() Checks if current document is tagged.
void | lock() Locks the document to prevent competing threads from accessiong the document at the same time.
void | lockRead() Locks the document to prevent competing write threads (using lock()) from accessing the document at the same time.
void | mergeXFDF(Filter xfdf_contents, String user_id) Import form data from XFDF contents into this PDF.
void | mergeXFDF(Filter xfdf_contents, MergeXFDFOptions opts) Merge existing form and annotation data with those imported from the XFDF file.
void | mergeXFDFString(String xfdf_contents, MergeXFDFOptions opts) Merge existing form and annotation data with those imported from the XFDF file.
void | mergeXFDFString(String xfdf_contents, String user_id) Import form data from XFDF contents into this PDF.
void | movePages(int moveBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, int insertFlag, ProgressMonitor monitor) This method is deprecated. use `movePages(int, PDFDoc, PageSet, InsertBookmarkMode, ProgressMonitor)` instead. Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move. Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.
void | movePages(int moveBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor) Moves a range of pages from specified PDFDoc.
void | movePages(int moveBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor) Moves a range of pages from specified PDFDoc.
void | movePages(int moveBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, int insertFlag, ProgressMonitor monitor) This method is deprecated. use #movePages(int, PDFDoc, PDFDoc, int, int, InsertBookmarkMode, ProgressMonitor) instead. Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move. Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.
Page | pageCreate(Rect media_box) Create page with given media box
Page | pageCreate() Create a new, empty page in the document.
void | pageInsert(PageIterator where, Page page) Insert/Import a single page at a specific location in the page sequence.
void | pagePushBack(Page page) Adds a page to the end of a documents's page sequence.
void | pagePushFront(Page page) Adds a page to the beginning of a documents's page sequence.
void | pageRemove(PageIterator page_itr) Remove specified page
void | refreshAnnotAppearances(RefreshOptions opts) Generates the appearance stream for annotations in the document using the specified options.
void | refreshAnnotAppearances() Generates the appearance stream for annotations in the document using the default options.
void | refreshFieldAppearances() Regenerates the appearance stream for every widget annotation in the document Call this method if you modified field's value and would like to update field's appearances.
void | removePageLabel(int page_num) Removes the page label that is attached to the specified page, effectively merging the specified range with the previous page label sequence.
void | removeSecurity() Removes all security for the document.
void | removeSignatureHandler(long signature_handler_id) Removes a signature handler from the signature manager.
void | save(Filter output_filter, long flags) This method is deprecated. use `save(Filter, SDFDoc.SaveMode)` instead. Saves the document to a CustomFilter. Note: Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
void | save(OutputStream stream, SaveMode[] saveModes, ProgressMonitor progress) Saves the document to an OutputStream.
byte[] | save(SaveMode[] saveModes, ProgressMonitor progress) Saves the document to a memory buffer.
void | save(long flags) This method is deprecated. use `save()` instead. Saves the document incrementally to the same location as it was opened from. This function only works if the PDFDoc was opened using a FileDescriptorFilter. Note: If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then this save can not be used.
byte[] | save(SDFDoc.SaveMode saveMode, ProgressMonitor progress) Saves the document to a memory buffer.
byte[] | save(long flags, ProgressMonitor progress) This method is deprecated. use `save(SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to a memory buffer. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
void | save(OutputStream stream, SDFDoc.SaveMode saveMode, ProgressMonitor progress, int size) Saves the document to an OutputStream.
void | save(OutputStream stream, long flags, ProgressMonitor progress) This method is deprecated. use `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to an OutputStream. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
void | save(OutputStream stream, SDFDoc.SaveMode saveMode, ProgressMonitor progress) Saves the document to an OutputStream.
void | save(OutputStream stream, long flags, ProgressMonitor progress, int size) This method is deprecated. use `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor, int)` instead. Saves the document to an OutputStream. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.
void | save(String path, long flags, ProgressMonitor progress) This method is deprecated. use `save(String, SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to a file. If a full save is requested to the original path, the file is saved to a file system-determined temporary file, the old file is deleted, and the temporary file is renamed to path. A full save with remove unused or linearization option may re-arrange object in the cross reference table. Therefore all pointers and references to document objects and resources should be re acquired in order to continue document editing. In order to use incremental save the specified path must match original path and e_incremental flag bit should be set. Note: In a multi-threaded environment, the user is expected to acquire a write lock before attempting to save the document. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save. Note: - If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the e_incremental flag.
void | save(String path, SaveMode[] saveModes, ProgressMonitor progress) Saves the document to a file.
void | save(String path, SDFDoc.SaveMode saveMode, ProgressMonitor progress) Saves the document to a file.
void | save(Filter output_filter, SDFDoc.SaveMode saveMode) Saves the document to a CustomFilter.
void | save(OutputStream stream, SaveMode[] saveModes, ProgressMonitor progress, int size) Saves the document to an OutputStream.
void | save() Saves the document incrementally to the same location as it was opened from.
void | save(Filter output_filter, SaveMode[] saveModes) Saves the document to a file.
void | saveCustomSignature(byte[] in_signature, DigitalSignatureField in_field, Filter output_filter) Saves a custom signature Contents to a document which has been prepared to receive it.
void | saveCustomSignature(byte[] in_signature, DigitalSignatureField in_field, String in_path) Saves a custom signature Contents to a document which has been prepared to receive it.
boolean | saveIncrementalData(String path) Saves only the incremental portion of the PDFDoc to path Works like saving using `INCREMENTAL` but only writes the portion that would have been appended to path.
void | saveViewerOptimized(String path, ViewerOptimizedOptions opts) Applies optimizations to improve viewing speed and saves the document to the specified file.
byte[] | saveViewerOptimized(ViewerOptimizedOptions opts) Applies optimizations to improve viewing speed and saves the document to a memory buffer.
void | setOpenAction(Action action) Set the Action that will be triggered when the document is opened.
void | setPageLabel(int page_num, PageLabel label) Attaches a label to a page.
void | setSecurityHandler(SecurityHandler handler) The function sets a new SecurityHandler as the current security handler.
boolean | timedLock(int milliseconds) Try locking the document, waiting no longer than specified number of milliseconds.
boolean | timedLockRead(int milliseconds) Tries to obtain a read lock the document for milliseconds duration, and returns true if the lock was successfully acquired
boolean | tryLock() Try locking the document in non-blocking manner.
boolean | tryLockRead() Try obtaining a read lock on the document in non-blocking manner.
void | unlock() Unlock the document.
void | unlockRead() Removes the read lock from the document.
PDFDoc.SignaturesVerificationStatus | verifySignedDigitalSignatures(VerificationOptions in_opts) Attempts to verify all signed cryptographic digital signatures in the document, ignoring unsigned signatures.

[Expand] Inherited Methods
From class com.pdftron.sdf.Doc
long | __GetHandle()
From class java.lang.Object
boolean | equals(Object arg0)
final Class<?> | getClass()
int | hashCode()
final void | notify()
final void | notifyAll()
String | toString()
final void | wait(long arg0, int arg1)
final void | wait(long arg0)
final void | wait()
From interface java.lang.AutoCloseable
abstract void | close()

## Constants

#### public static final int e_action_trigger_doc_did_print

This constant is deprecated.
use `DOC_DID_PRINT` instead.

Triggered after printing a document

Constant Value: 21 (0x00000015)

#### public static final int e_action_trigger_doc_did_save

This constant is deprecated.
use `DOC_DID_SAVE` instead.

Triggered after saving a document

Constant Value: 19 (0x00000013)

#### public static final int e_action_trigger_doc_will_close

This constant is deprecated.
use `DOC_WILL_CLOSE` instead.

Triggered before closing a document

Constant Value: 17 (0x00000011)

#### public static final int e_action_trigger_doc_will_print

This constant is deprecated.
use ActionTriggerMode#DOC_will_PRINT instead.

Triggered before printing a document

Constant Value: 20 (0x00000014)

#### public static final int e_action_trigger_doc_will_save

This constant is deprecated.
use `DOC_WILL_SAVE` instead.

Triggered before saving a document

Constant Value: 18 (0x00000012)

#### public static final int e_annots_only

Constant Value: 1 (0x00000001)

#### public static final int e_annots_only_no_links

Constant Value: 5 (0x00000005)

#### public static final int e_both

Constant Value: 2 (0x00000002)

#### public static final int e_flatten_all

This constant is deprecated.
use `ALL` instead.

flatten all

Constant Value: 8 (0x00000008)

#### public static final int e_flatten_annots_only

This constant is deprecated.
use `ANNOTS` instead.

flatten only annots

Constant Value: 2 (0x00000002)

#### public static final int e_flatten_forms_only

This constant is deprecated.
use `FORMS` instead.

flatten only forms

Constant Value: 1 (0x00000001)

#### public static final int e_flatten_link_only

This constant is deprecated.
use `LINK` instead.

flatten only links

Constant Value: 4 (0x00000004)

#### public static final int e_forms_only

Constant Value: 0 (0x00000000)

#### public static final int e_insert_bookmark

This constant is deprecated.
use `INSERT` instead.

insert bookmark

Constant Value: 1 (0x00000001)

#### public static final int e_none

This constant is deprecated.
use `NONE` instead.

do not insert bookmark

Constant Value: 0 (0x00000000)

## Fields

#### public Filter mCustomFilter

## Public Constructors

#### public PDFDoc ()

Default constructor. Creates an empty new document.

##### Throws

PDFNetException |

#### public PDFDoc (SDFDoc sdfdoc)

Create a PDF document from an existing SDF/Cos document.

Note: the SDFDoc will become invalid. If you would like to access the low level document use GetSDFDoc

##### Parameters

sdfdoc | a pointer to the SDF document. Created PDFDoc will take the ownership of the low-level document.

##### Throws

PDFNetException |

#### public PDFDoc (String filepath)

Open an existing PDF document.

Note: Make sure to call InitSecurityHandler() after PDFDoc(...) in case a document is encrypted

##### Parameters

filepath | - pathname to the file.

##### Throws

PDFNetException |

#### public PDFDoc (Filter stream)

Open an existing PDF document.

Note: if the input stream doesn't support Seek() operation the document will load whole data stream in memory before parsing. In case of linearized PDF, the document may be parsed on-the-fly while it is being loaded in memory. Note that since StdFile implements Seek() interface, the document does not have to be fully in memory before it is used.

Note: Make sure to call InitSecurityHandler() after PDFDoc(...) for encrypted documents.

##### Parameters

stream | - input stream containing a serialized document. The input stream may be a random-access file, memory buffer, slow HTTP connection etc.

##### Throws

PDFNetException |

#### public PDFDoc (byte[] buf)

Open a SDF/Cos document from a memory buffer.

Note: the document should be fully loaded in the memory buffer.

##### Parameters

buf | - a memory buffer containing the serialized document

##### Throws

PDFNetException |

#### public PDFDoc (InputStream stream)

Open an existing PDF document from an InputStream.

Note: Make sure to call InitSecurityHandler() after FDFDoc(...) for encrypted documents.

##### Parameters

stream | - input stream containing a serialized document.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public PDFDoc (InputStream stream, int size)

Open an existing PDF document from an InputStream.

Note: Make sure to call InitSecurityHandler() after FDFDoc(...) for encrypted documents.

##### Parameters

stream | - input stream containing a serialized document.
size | - the expected size of the input stream.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

## Public Methods

#### public static PDFDoc __Create (long impl)

#### public long __GetHandle ()

#### public void addFileAttachment (String file_key, FileSpec embedded_file)

Associates a file attachment with the document. The file attachment will be displayed in the user interface of a viewer application (in Acrobat this is File Attachment tab). The function differs from Annot.CreateFileAttachment() because it associates the attachment with the whole document instead of an annotation on a specific page.

Note: Another way to associate a file attachment with the document is using SDF::NameTree: {@code SDF.NameTree names = SDF.NameTree.Create(doc, "EmbeddedFiles"); names.put(file_key, file_keysz, embedded_file.GetSDFObj());

##### Parameters

file_key | A key/name under which the attachment will be stored.
embedded_file | the embedded file

##### Throws

PDFNetException | }

#### public void addHighlights (String hilite)

AddHighlights is used to highlight text in a document using 'Adobe's Highlight File Format' (Technical Note #5172 ). The method will parse the character offset data and modify the current document by adding new highlight annotations.

##### Parameters

hilite | filename for the highlight file or a data buffer containing XML data.

#### public void addRootBookmark (Bookmark root_bookmark)

Adds/links the specified Bookmark to the root level of document's outline tree.

##### Parameters

root_bookmark | root bookmark. It must not be linked (must not be belong) to a bookmark tree.

##### Throws

PDFNetException |

#### public long addSignatureHandler (SignatureHandler signature_handler)

Adds a signature handler to the signature manager. There can only be one signature handler of a given name that can exist in the signature manager. A signature handler which name already exists in the signature manager cannot be added.

##### Parameters

signature_handler | The signature handler instance to add to the signature manager.

##### Returns

- A unique ID representing the SignatureHandler within the SignatureManager.

##### Throws

PDFNetException |

#### public long addStdSignatureHandler (byte[] pkcs12_keybuffer, String pkcs12_keypass)

Adds a standard (built-in) signature handler to the signature manager. This method will use cryptographic algorithm based on Adobe.PPKLite/adbe.pkcs7.detached filter to sign a PDF.

##### Parameters

pkcs12_keybuffer | The private key certificate store to use. (As an array of bytes).
pkcs12_keypass | The passphrase for the provided private key.

##### Returns

- A unique ID representing the SignatureHandler within the SignatureManager.

##### Throws

PDFNetException |

#### public long addStdSignatureHandler (String pkcs12_keyfile, String pkcs12_keypass)

Adds a standard (built-in) signature handler to the signature manager. This method will use cryptographic algorithm based on Adobe.PPKLite/adbe.pkcs7.detached filter to sign a PDF.

##### Parameters

pkcs12_keyfile | The private key certificate store to use.
pkcs12_keypass | The passphrase for the provided private key.

##### Returns

- A unique ID representing the SignatureHandler within the SignatureManager.

##### Throws

PDFNetException |

#### public int appendTextDiff (PDFDoc doc1, PDFDoc doc2)

Imports two external PDFs and highlights the differences between them. This function appends alternating pages from the two input documents into the current document. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

##### Parameters

doc1 | is the before document, the basis of the comparison (read-only)
doc2 | is the after document, to which the basis is compared (read-only)

##### Returns

- the total number of differences found

##### Throws

PDFNetException |

#### public int appendTextDiff (PDFDoc doc1, PDFDoc doc2, TextDiffOptions options)

Imports two external PDFs and highlights the differences between them. This function appends alternating pages from the two input documents into the current document. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

##### Parameters

doc1 | is the before document, the basis of the comparison (read-only)
doc2 | is the after document, to which the basis is compared (read-only)
options | processing options (optional)

##### Returns

- the total number of differences found

##### Throws

PDFNetException |

#### public int appendTextDiff (Page page1, Page page2)

Imports two external pages and highlights the differences between them. This function adds two new pages to the current document. The two input pages are typically coming from two different PDF files. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

##### Parameters

page1 | is the before page, the basis of the comparison (read-only)
page2 | is the after page, to which the basis is compared (read-only)

##### Returns

- the total number of differences found

##### Throws

PDFNetException |

#### public void appendVisualDiff (Page p1, Page p2, DiffOptions opts)

Generates a PDF diff of the given pages by overlaying and blending them on top of each other, then appends that diff as a new page in this document.

##### Throws

PDFNetException |

#### public void close ()

Destructor. Close PDFDoc.

##### Throws

PDFNetException |

#### public DigitalSignatureField createDigitalSignatureField ()

##### Throws

PDFNetException |

#### public DigitalSignatureField createDigitalSignatureField (String in_sig_field_name)

Creates an unsigned digital signature form field inside the document.

##### Parameters

in_sig_field_name | The fully-qualified name to give the digital signature field. If one is not provided, a unique name is created automatically.

##### Returns

- A DigitalSignatureField object representing the created digital signature field.

##### Throws

PDFNetException |

#### public Obj createIndirectArray ()

Create the indirect array.

##### Returns

- the created indirect array

##### Throws

PDFNetException |

#### public Obj createIndirectBool (boolean value)

Create the indirect boolean.

##### Returns

- the created indirect boolean

##### Throws

PDFNetException |

#### public Obj createIndirectDict ()

Create the indirect dictionary

##### Returns

- the created indirect dictionary

##### Throws

PDFNetException |

#### public Obj createIndirectName (String name)

Create SDF/Cos indirect name Unlike direct objects, indirect objects can be referenced by more than one object (i.e. indirect objects they can be shared).

##### Returns

- the created indirect name

##### Throws

PDFNetException |

#### public Obj createIndirectNull ()

Create the indirect null.

##### Returns

- the created indirect null

##### Throws

PDFNetException |

#### public Obj createIndirectNumber (double value)

Create the indirect number.

##### Returns

- the created indirect number

##### Throws

PDFNetException |

#### public Obj createIndirectStream (FilterReader data)

Create the indirect stream.

##### Returns

- the created indirect stream

##### Throws

PDFNetException |

#### public Obj createIndirectStream (FilterReader data, Filter filter_chain)

Create the indirect stream.

##### Returns

- the created indirect stream

##### Throws

PDFNetException |

#### public Obj createIndirectStream (byte[] data)

Create the indirect stream.

##### Returns

- the created indirect stream

##### Throws

PDFNetException |

#### public Obj createIndirectStream (byte[] data, Filter filter_chain)

Create the indirect stream.

##### Returns

- the created indirect stream

##### Throws

PDFNetException |

#### public Obj createIndirectString (byte[] value)

Create the indirect string from buffer

##### Parameters

value | input buffer

##### Returns

- the created indirect string

##### Throws

PDFNetException |

#### public Obj createIndirectString (String str)

Create the indirect string.

##### Parameters

str | value of the indirect string

##### Returns

- the created indirect string

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract (int extractFlag)

Extract form data and/or annotations to FDF

##### Parameters

extractFlag | specifies extract options

##### Returns

- a pointer to the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract (Annot[] annotations)

Extract annotations to FDF

##### Parameters

annotations | specifies the array of annotations

##### Returns

- the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract (PageSet pageToExtract, int extractFlag)

Extract form data and/or annotations to FDF

##### Parameters

pageToExtract | the set of pages for which to extract interactive data
extractFlag | specifies extract options

##### Returns

- a pointer to the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract ()

Extract form data to FDF

##### Returns

- a pointer to the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract (ArrayList<Annot> annot_list)

Extract annotations to FDF

##### Parameters

annot_list | specifies the array of annotations

##### Returns

- a pointer to the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public FDFDoc fdfExtract (ArrayList<Annot> annot_added, ArrayList<Annot> annot_modified, ArrayList<Annot> annot_deleted)

Extract annotations to FDF

##### Parameters

annot_added | specifies the array of added annotations
annot_modified | specifies the array of modified annotations
annot_deleted | specifies the array of deleted annotations

##### Returns

- a pointer to the newly created FDF file with an interactive data.

##### Throws

PDFNetException |

#### public void fdfMerge (FDFDoc fdf_doc)

Import form data from FDF file to PDF interactive form.

##### Parameters

fdf_doc | - a pointer to the FDF file

##### Throws

PDFNetException |

#### public void fdfUpdate (FDFDoc fdf_doc)

Replace existing form and annotation data with those imported from the FDF file. It will make annotations in the FDF match those in the PDF. Since this method avoids updating annotations unnecessarily it works well with incremental save and can sometimes preserve annotation appearances, but it requires that the annotations intended to be in the final document be in the provided FDF file.

Note: Some PDF viewers (like Chrome) cannot display annotations that don't already have an appearance, so it is often desirable to call PDFDoc.RefreshAnnotAppearances after this method to ensure these annotations can still be displayed in those applications.

Note: This method is not suitable for realtime collaboration.

##### Parameters

fdf_doc | - a pointer to the FDF file

##### Throws

PDFNetException |

#### public Field fieldCreate (String field_name, int type, String field_value)

Create a new interactive form field

##### Parameters

field_name | name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
type | field type (e.g. Field::e_text, Field::e_button, etc.)

##### Returns

- the field

##### Throws

PDFNetException |

#### public Field fieldCreate (String field_name, int type, String field_value, String def_field_value)

Create a new interactive form field

##### Parameters

field_name | name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
type | field type (e.g. Field::e_text, Field::e_button, etc.)

##### Returns

- the new form Field.

##### Throws

PDFNetException |

#### public Field fieldCreate (String field_name, int type)

Create a new interactive form Field.

##### Parameters

field_name | name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
type | field type (e.g. Field::e_text, Field::e_button, etc.)

##### Returns

- the new form Field.

##### Throws

PDFNetException |

#### public Field fieldCreate (String field_name, int type, Obj field_value)

Create a new interactive form field

##### Parameters

field_name | name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
type | field type (e.g. Field::e_text, Field::e_button, etc.)

##### Returns

- the new form Field.

##### Throws

PDFNetException |

#### public Field fieldCreate (String field_name, int type, Obj field_value, Obj def_field_value)

Create a new interactive form field

##### Parameters

field_name | name of the field (e.g. "employee.name.first"). field_name must be either a unique name or equal to an existing terminal field name.
type | field type (e.g. Field::e_text, Field::e_button, etc.)

##### Returns

- the new form Field.

##### Throws

PDFNetException |

#### public void flattenAnnotations (boolean forms_only)

Flatten all annotations in the document.

##### Parameters

forms_only | if false flatten all annotations, otherwise flatten only form fields.

##### Throws

PDFNetException |

#### public void flattenAnnotations ()

Flatten all annotations in the document.

##### Throws

PDFNetException |

#### public void flattenAnnotationsAdvanced (long flags)

This method is deprecated.
use `flattenAnnotationsAdvanced(FlattenMode[])` instead. Flatten annotations/forms/links in the document.

##### Parameters

flags | - A bit field composed of an OR of the following values: `e_flatten_forms_only` `e_flatten_annots_only` `e_flatten_link_only` `e_flatten_all`

##### Throws

PDFNetException |

#### public void flattenAnnotationsAdvanced (FlattenMode[] flattenModes)

Flatten annotations/forms/links in the document.

##### Parameters

flattenModes | An array of flatten modes (See `PDFDoc.FlattenMode`).

##### Throws

PDFNetException |

#### public void generateThumbnails (long size)

Generates thumbnail images for all the pages in this PDF document.

##### Parameters

size | The maximum dimension (width or height) that thumbnails will have.

##### Throws

PDFNetException |

#### public Obj getAcroForm ()

Get the AcroForm Dictionary.

##### Returns

- the AcroForm dictionary located in "/Root" or NULL if dictionary is not present.

##### Throws

PDFNetException |

#### public DigitalSignatureFieldIterator getDigitalSignatureFieldIterator ()

Retrieves an iterator that iterates over digital signature fields.

##### Returns

- An iterator that iterates over digital signature fields.

##### Throws

PDFNetException |

#### public DigitalSignatureField.DocumentPermissions getDigitalSignaturePermissions ()

Retrieves the most restrictive document permissions locking level from all of the signed digital signatures in the document.

##### Returns

- An enumerated value representing the most restrictive document permission level found in the document.

##### Throws

PDFNetException |

#### public PDFDocInfo getDocInfo ()

Get the document infomation

##### Returns

- The class representing document information metadata. (i.e. entries in the document information dictionary).

##### Throws

PDFNetException |

#### public long getDownloadedByteCount ()

Returns the number of bytes that have been downloaded, when `hasDownloader()` is True.

##### Returns

- The number bytes downloaded.

##### Throws

PDFNetException | if 'hasDownloader()` returns False, calling this method will result in an exception.

#### public Field getField (String field_name)

Get the specified field from field name

##### Parameters

field_name | - name of the field (e.g. "employee.name.first").

##### Returns

- the new form Field.

##### Throws

PDFNetException |

#### public FieldIterator getFieldIterator (String field_name)

Get specified FieldIterator from field name

##### Parameters

field_name | - name of the field (e.g. "employee.name.first").

##### Returns

- a FieldIterator referring to an interactive Field or to invalid field if the field name was not found. If a given field name was not found itr.HasNext() will return false. For example:

##### Throws

PDFNetException | `FieldIterator itr = pdfdoc.getFieldIterator("name"); if (itr.hasNext()) { string name = itr.current().getName());` else { ...field was not found... } }

#### public FieldIterator getFieldIterator ()

An interactive form (sometimes referred to as an AcroForm) is a collection of fields for gathering information interactively from the user. A PDF document may contain any number of fields appearing on any combination of pages, all of which make up a single, global interactive form spanning the entire document. The following methods are used to access and manipulate Interactive form fields (sometimes referred to as AcroForms).

##### Returns

- an iterator to the first Field in the document. The list of all Fields present in the document can be traversed as follows:

##### Throws

PDFNetException | `FieldIterator itr = pdfdoc.getFieldIterator(); for(; itr.hasNext(); itr.next()) { Field field = itr.current(); string s = field.getName();` //For a full sample, please refer to 'InteractiveForms' sample project. }

#### public String getFileName ()

Get the file name.

##### Returns

- The filename of the document if the document is loaded from disk, or empty string if the document is not yet saved or is loaded from a memory buffer.

##### Throws

PDFNetException |

#### public Bookmark getFirstBookmark ()

Get the first bookmark.

##### Returns

- - the first Bookmark from the document's outline tree. If the Bookmark tree is empty the underlying SDF/Cos Object is null and returned Bookmark is not valid (i.e. Bookmark::IsValid() returns false).

##### Throws

PDFNetException |

#### public Config getOCGConfig ()

Get the optional group configuration

##### Returns

- the default optional-content configuration for the document from the OCProperties D entry.

##### Throws

PDFNetException |

#### public Obj getOCGs ()

Get the optional content groups

##### Returns

- the Obj array that contains optional-content groups (OCGs) for the document, or NULL if the document does not contain any OCGs. The order of the groups is not guaranteed to be the creation order, and is not the same as the display order.

##### Throws

PDFNetException |

#### public Action getOpenAction ()

Get the open action.

Note: if the document does not nave associated action the returned Action will be null (i.e. Action.IsValid() returns false)

##### Returns

- Action that is triggered when the document is opened. The returned action can be either a destination or some other kind of Action (see Section 8.5, 'Actions' in PDF Reference Manual).

##### Throws

PDFNetException |

#### public Page getPage (int page_number)

Get the page object from given page number

##### Parameters

page_number | - the page number in document's page sequence. Page numbers in document's page sequence are indexed from 1.

##### Returns

- a Page corresponding to a given page number, or null (invalid page) if the document does not contain the given page number.

##### Throws

PDFNetException | `Page page = pdfdoc.GetPage(page_num); if (page == null) return; // Page not found`

#### public int getPageCount ()

Get the page count.

##### Returns

- the number of pages in the document.

##### Throws

PDFNetException |

#### public PageIterator getPageIterator (int page_number)

Get the page iterator from given page number

##### Parameters

page_number | the input page number

##### Returns

- the page iterator

##### Throws

PDFNetException |

#### public PageIterator getPageIterator ()

Get the page iterator.

##### Returns

- an iterator to the first page in the document. Use the Next() method on the returned iterator to traverse all pages in the document. For example:

##### Throws

PDFNetException | `PageIterator itr = pdfdoc.getPageIterator(); while (itr.hasNext()) { // Read every page Page page = itr.current(); // ... itr.next()` For full sample code, please take a look at ElementReader, PDFPageTest and PDFDraw sample projects. }

#### public PageLabel getPageLabel (int page_num)

Get the specified page label

##### Parameters

page_num | The page number. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.

##### Returns

- the PageLabel that is in effect for the given page. If there is no label object in effect, this method returns an invalid page label object.

##### Throws

PDFNetException |

#### public Obj getPages ()

Get the pages.

##### Returns

- - A dictionary representing the root of the low level page-tree

##### Throws

PDFNetException |

#### public Obj getRoot ()

Get the root of the document

##### Returns

- - A dictionary representing the Cos root of the document (/Root entry within the trailer dictionary)

##### Throws

PDFNetException |

#### public SDFDoc getSDFDoc ()

Get the underlying SDFDoc object.

##### Returns

- document's SDF/Cos document

#### public SecurityHandler getSecurityHandler ()

Get the security handler.

Note: InitSecurityHandler() should be called before GetSecurityHandler() in order to initialize the handler.

Note: Returned security handler can be modified in order to change the security settings of the existing document. Changes to the current handler will not invalidate the access to the original file and will take effect during document Save().

Note: If the security handler is modified, document will perform a full save even if `INCREMENTAL` was given in Save() method.

##### Returns

- Currently selected SecurityHandler; if there is no security handler selected, returns null.

#### public SignatureHandler getSignatureHandler (long signature_handler_id)

Gets the associated signature handler instance from the signature manager by looking it up with the handler name. The returned signature handler instance is still owned by the signature manage if found.

##### Parameters

signature_handler_id | The name of the signature handler to get.

##### Returns

- The signature handler instance if found, otherwise null.

##### Throws

PDFNetException |

#### public STree getStructTree ()

Get the structure tree root

##### Returns

- The document's logical structure tree root.

##### Throws

PDFNetException |

#### public long getTotalRemoteByteCount ()

Returns the document's total size in bytes, when `HasDownloader()` is True.

##### Returns

- The total number of bytes in the remote document.

##### Throws

PDFNetException | if 'hasDownloader()` returns False, calling this method will result in an exception.

#### public Obj getTrailer ()

Get the document's trailer.

##### Returns

- - A dictionary representing the Cos root of the document (document's trailer)

##### Throws

PDFNetException |

#### public Obj getTriggerAction (PDFDoc.ActionTriggerMode triggerMode)

Get the Action associated with the selected PDFDoc Trigger event.

##### Parameters

triggerMode | the type of trigger event to get (See `PDFDoc.ActionTriggerMode`)

##### Returns

- The Action Obj if present, otherwise NULL

##### Throws

PDFNetException |

#### public Obj getTriggerAction (int trigger)

This method is deprecated.
use `INCREMENTAL` instead. Get the Action associated with the selected PDFDoc Trigger event.

##### Parameters

trigger | the type of trigger event to get

##### Returns

- The Action Obj if present, otherwise NULL

##### Throws

PDFNetException |

#### public UndoManager getUndoManager ()

##### Returns

- The UndoManager object (one-to-one mapped to document)

##### Throws

PDFNetException |

#### public PDFDocViewPrefs getViewPrefs ()

Get the view preferences

##### Returns

- Viewer preferences for this document. PDFDocViewPrefs is a high-level utility class that can be used to control the way the document is to be presented on the screen or in print.

##### Throws

PDFNetException |

#### public boolean hasChangesSinceSnapshot ()

Call this function to determine whether the document has been modified since the last Undo/Redo snapshot was taken

##### Returns

- - true if document was modified, false otherwise

##### Throws

PDFNetException |

#### public boolean hasDownloader ()

Indicates whether this document was created via the `PDFViewCtrl` method `OpenURLAsync`.

##### Returns

- True if the document was created via the `PDFViewCtrl` method `OpenURLAsync`; False otherwise.

##### Throws

PDFNetException |

#### public boolean hasOC ()

Checks for optional content

##### Returns

- true if the optional content (OC) feature is associated with the document. The document is considered to have optional content if there is an OCProperties dictionary in the document's catalog, and that dictionary has one or more entries in the OCGs array.

##### Throws

PDFNetException |

#### public boolean hasRepairedXRef ()

Checks whether or not the underlying file has an XRef table that had to be repaired when the file was opened. If the document had an invalid XRef table when opened, PDFNet will have repaired the XRef table for its working representation of the document. Note: If this function returns true, it is not possible to incrementally save the document (see http://www.pdftron.com/kb_corrupt_xref)

##### Returns

- - true if document was found to be corrupted, and was repaired, during opening and has not been saved since.

##### Throws

PDFNetException |

#### public boolean hasSignatures ()

Indicates whether this documents contains any digital signatures.

##### Returns

- True if a field or signature dictionary is found.

#### public static int highlightTextDiff (PDFDoc doc1, PDFDoc doc2, TextDiffOptions options)

Highlights the differences between the external PDFs. The highlights are added directly to the inputs. This function directly adds the highlights to the two input documents. Note: Each contiguous block of change is considered a single difference. A deletion immediately followed by an insertion is considered a single edit.

##### Parameters

doc1 | is the before document, the basis of the comparison
doc2 | is the after document, to which the basis is compared
options | processing options (optional)

##### Returns

- the total number of differences found

##### Throws

PDFNetException |

#### public Page[] importPages (Page[] pages, boolean import_bookmarks)

Import given pages into current PDFDoc

##### Parameters

pages | pages to import
import_bookmarks | whether to import bookmarks

##### Returns

- imported pages

##### Throws

PDFNetException |

#### public Page[] importPages (Page[] pages)

The function imports a list of pages to this documents. Although a list of pages can be imported using repeated calls to PageInsert(), PageImport will not import duplicate copies of resources that are shared across pages (such as fonts, images, colorspaces etc). Therefore this method is recommended when a page import list consists of several pages that share the same resources.

##### Parameters

pages | A list of pages to import. All pages should belong to the same source document.

##### Returns

- a list of imported pages. Note that imported pages are not placed in the document page sequence. This can be done using methods such as PageInsert(), PagePushBack(), etc.

##### Throws

PDFNetException |

#### public boolean initSecurityHandler (Object custom_data)

Initialize the security handler.

##### Parameters

custom_data | specify custom data that should be passed in SecurityHandler::Initialize() callback.

##### Returns

- true, if successful

##### Throws

PDFNetException |

#### public boolean initSecurityHandler ()

Initializes document's SecurityHandler. This version of InitSecurityHandler() works with Standard and Custom PDF security and can be used in situations where the password is obtained dynamically via user feedback. See EncTest sample for example code. This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted. If the security handler was successfully initialized it can be later obtained using GetSecurityHandler() method.

##### Returns

- true if the SecurityHandler was successfully initialized (this may include authentication data collection, verification etc.), false otherwise.

##### Throws

PDFNetException |

#### public boolean initStdSecurityHandler (String password)

Initializes document's SecurityHandler using the supplied password. This version of InitSecurityHandler() assumes that document uses Standard security and that a password is specified directly. This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted. If the security handler was successfully initialized, it can be later obtained using GetSecurityHandler() method.

##### Parameters

password | Specifies the password used to open the document without any user feedback. If you would like to dynamically obtain the password, you need to derive a custom class from StdSecurityHandler() and use InitSecurityHandler() without any parameters. See EncTest sample for example code.

##### Returns

- true if the given password successfully unlocked the document, false otherwise.

##### Throws

PDFNetException |

#### public boolean initStdSecurityHandler (byte[] passwordBuffer)

Initializes document's SecurityHandler using the supplied password. This version of InitSecurityHandler() assumes that document uses Standard security and that a password is specified directly. This function should be called immediately after an encrypted document is opened. The function does not have any side effects on documents that are not encrypted. If the security handler was successfully initialized, it can be later obtained using GetSecurityHandler() method.

##### Parameters

passwordBuffer | Specifies the password used to open the document without any user feedback. If you would like to dynamically obtain the password, you need to derive a custom class from StdSecurityHandler() and use InitSecurityHandler() without any parameters. See EncTest sample for example code.

##### Returns

- true if the given password successfully unlocked the document, false otherwise.

##### Throws

PDFNetException |

#### public void initializeJSContext ()

Initializes the JS context.

##### Throws

PDFNetException |

#### public void insertPages (int insertBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, int insertFlag, ProgressMonitor monitor)

This method is deprecated.
use `insertPages(int, PDFDoc, int, int, InsertBookmarkMode, ProgressMonitor)` instead. Inserts a range of pages from specified PDFDoc

##### Parameters

insertBeforeThisPage | the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
sourceDoc | source PDFDoc to insert from
startPage | start of the page number to insert
endPage | end of the page number to insert
insertFlag | specifies insert options
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void insertPages (int insertBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor)

Inserts a range of pages from specified PDFDoc

##### Parameters

insertBeforeThisPage | the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
sourceDoc | source PDFDoc to insert from
startPage | start of the page number to insert
endPage | end of the page number to insert
insertBookmarkMode | specifies insert bookmark option (See `PDFDoc.InsertBookmarkMode`)
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void insertPages (int insertBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, int insertFlag, ProgressMonitor monitor)

This method is deprecated.
use `insertPages(int, PDFDoc, PageSet, InsertBookmarkMode, ProgressMonitor)` instead. Inserts a range of pages from specified PDFDoc using PageSet

##### Parameters

insertBeforeThisPage | the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
sourceDoc | source PDFDoc to insert from
sourcePageSet | a collection of the page number to insert
insertFlag | specifies insert options
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void insertPages (int insertBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor)

Inserts a range of pages from specified PDFDoc using PageSet

##### Parameters

insertBeforeThisPage | the destination of the insertion. If less than or equal to 1, the pages are added to the beginning of the document. If larger than the number of pages in the destination document, the pages are appended to the document.
sourceDoc | source PDFDoc to insert from
sourcePageSet | a collection of the page number to insert
insertBookmarkMode | specifies insert option (See `PDFDoc.InsertBookmarkMode`)
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public boolean isEncrypted ()

Checks if PDFDoc is encrypted.

##### Returns

- true if the document is/was originally encrypted false otherwise.

##### Throws

PDFNetException |

#### public boolean isLinearized ()

Call this function to determine whether the document is represented in linearized (fast web view) format.

Note: Any changes to the document can invalidate linearization. The function will return 'true' only if the original document is linearized and if it is not modified.

In order to provide good performance over relatively slow communication links, PDFNet can generate PDF documents with linearized objects and hint tables that can allow a PDF viewer application to download and view one page of a PDF file at a time, rather than requiring the entire file (including fonts and images) to be downloaded before any of it can be viewed.

To save a document in linearized (fast web view) format you only need to pass `LINEARIZED` mode in the Save. method.

##### Returns

- - true if document is stored in fast web view format, false otherwise.

##### Throws

PDFNetException |

#### public boolean isModified ()

Call this function to determine whether the document has been modified since it was last saved.

##### Returns

- - true if document was modified, false otherwise

##### Throws

PDFNetException |

#### public boolean isTagged ()

Checks if current document is tagged.

##### Returns

- true if this document is marked as Tagged PDF, false otherwise.

#### public void lock ()

Locks the document to prevent competing threads from accessiong the document at the same time. Threads attempting to access the document will wait in suspended state until the thread that owns the lock calls doc.Unlock().

##### Throws

PDFNetException |

#### public void lockRead ()

Locks the document to prevent competing write threads (using lock()) from accessing the document at the same time. Other reader threads however, will be allowed to access the document. Threads attempting to obtain write access to the document will wait in suspended state until the thread that owns the lock calls doc.unlockRead(). Note: To avoid deadlocks obtaining a write lock while holding a read lock is not permitted and will throw an exception. If this situation is encountered please either unlock the read lock before the write lock is obtained or acquire a write lock (rather than read lock) in the first place.

##### Throws

PDFNetException |

#### public void mergeXFDF (Filter xfdf_contents, String user_id)

Import form data from XFDF contents into this PDF.

##### Parameters

xfdf_contents | - Input Filter which provides the xfdf contents
user_id | - The id of the user who is permitting the modifications. This serves to restrict the modifications made to the document, as only annotations with the same user_id can be modified. An empty string allows all modifications.

##### Throws

PDFNetException |

#### public void mergeXFDF (Filter xfdf_contents, MergeXFDFOptions opts)

Merge existing form and annotation data with those imported from the XFDF file. It will replace annotations from pdfdocument with matching annotations from XFDF. In order for the annotations to be considered matching, "name" of the xfdf annotation needs to match "NM" of that in pdf. XFDF annotations that don't have a match in the pdf document will be added. For regular xfdf files, no deletions will be made This method also supports command form of xfdf, for those files, deletions will be performed for annotations in "delete" section Since this method avoids updating annotations unnecessarily it works well with incremental save. Note: This method is suitable for realtime collaboration.

##### Parameters

xfdf_contents | - Input Filter which provides the xfdf contents
opts | - MergeXFDFOptions object for finer control

##### Throws

PDFNetException |

#### public void mergeXFDFString (String xfdf_contents, MergeXFDFOptions opts)

Merge existing form and annotation data with those imported from the XFDF file. It will replace annotations from pdfdocument with matching annotations from XFDF. In order for the annotations to be considered matching, "name" of the xfdf annotation needs to match "NM" of that in pdf. XFDF annotations that don't have a match in the pdf document will be added. For regular xfdf files, no deletions will be made This method also supports command form of xfdf, for those files, deletions will be performed for annotations in "delete" section Since this method avoids updating annotations unnecessarily it works well with incremental save. Note: This method is suitable for realtime collaboration.

##### Parameters

xfdf_contents | - xfdf contents in string form or the path to the xfdf file
opts | - MergeXFDFOptions object for finer control

##### Throws

PDFNetException |

#### public void mergeXFDFString (String xfdf_contents, String user_id)

Import form data from XFDF contents into this PDF.

##### Parameters

xfdf_contents | - xfdf contents in string form
user_id | - The id of the user who is permitting the modifications. This serves to restrict the modifications made to the document, as only annotations with the same user_id can be modified. An empty string allows all modifications.

##### Throws

PDFNetException |

#### public void movePages (int moveBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, int insertFlag, ProgressMonitor monitor)

This method is deprecated.
use `movePages(int, PDFDoc, PageSet, InsertBookmarkMode, ProgressMonitor)` instead. Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.

##### Parameters

moveBeforeThisPage | the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of document.
sourceDoc | source PDFDoc to move from
sourcePageSet | a collection of the page number to move
insertFlag | specifies insert options
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void movePages (int moveBeforeThisPage, PDFDoc sourceDoc, PageSet sourcePageSet, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor)

Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.

##### Parameters

moveBeforeThisPage | the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of document.
sourceDoc | source PDFDoc to move from
sourcePageSet | a collection of the page number to move
insertBookmarkMode | specifies insert option (See `PDFDoc.InsertBookmarkMode`)
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void movePages (int moveBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, PDFDoc.InsertBookmarkMode insertBookmarkMode, ProgressMonitor monitor)

Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.

##### Parameters

moveBeforeThisPage | the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of document.
sourceDoc | source PDFDoc to move from
startPage | start of the page number to move
endPage | end of the page number to move
insertBookmarkMode | specifies insert option (See `PDFDoc.InsertBookmarkMode`)
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void movePages (int moveBeforeThisPage, PDFDoc sourceDoc, int startPage, int endPage, int insertFlag, ProgressMonitor monitor)

This method is deprecated.
use #movePages(int, PDFDoc, PDFDoc, int, int, InsertBookmarkMode, ProgressMonitor) instead. Moves a range of pages from specified PDFDoc. Pages are deleted from source document after move.

Note: MovePages function does not save sourceDoc. It merely delete pages in memory. For permanent changes, PDFDoc::Save should be used to save sourceDoc after function exists.

##### Parameters

moveBeforeThisPage | the destination of the move. If less than or equal to 1, the pages are moved to the beginning of the document. If larger than the number of pages in the destination document, the pages are moved to the end of document.
sourceDoc | source PDFDoc to move from
startPage | start of the page number to move
endPage | end of the page number to move
insertFlag | specifies insert options
monitor | A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public Page pageCreate (Rect media_box)

Create page with given media box

##### Parameters

media_box | the input media box

##### Returns

- a new, empty page with given media box

##### Throws

PDFNetException |

#### public Page pageCreate ()

Create a new, empty page in the document. You can use PageWriter to fill the page with new content. Finally the page should be inserted at specific place within document page sequence using PageInsert/PagePushFront/PagePushBack methods.

Note: the new page still does not belong to document page sequence and should be subsequently placed at a specific location within the sequence.

##### Returns

- A new, empty page.

##### Throws

PDFNetException |

#### public void pageInsert (PageIterator where, Page page)

Insert/Import a single page at a specific location in the page sequence.

Note: Invalidates all PageIterators pointing to the document.

##### Parameters

where | - The location in the page sequence indicating where to insert the page. The page is inserted before the specified location.
page | - A page to insert.

##### Throws

PDFNetException |

#### public void pagePushBack (Page page)

Adds a page to the end of a documents's page sequence.

Note: Invalidates all PageIterators pointing to the document.

##### Parameters

page | - a page to append to the document

##### Throws

PDFNetException |

#### public void pagePushFront (Page page)

Adds a page to the beginning of a documents's page sequence.

##### Parameters

page | - a page to prepend to the document Invalidates all PageIterators pointing to the document.

##### Throws

PDFNetException |

#### public void pageRemove (PageIterator page_itr)

Remove specified page

##### Parameters

page_itr | - the PageIterator to the page that should be removed A PageIterator for the given page can be obtained using PDFDoc::Find(page_num) or using direct iteration through document's page sequence.

##### Throws

PDFNetException |

#### public void refreshAnnotAppearances (RefreshOptions opts)

Generates the appearance stream for annotations in the document using the specified options. A common use case is to generate appearances only for missing annotations, which can be accomplished using the default options.

##### Throws

PDFNetException |

#### public void refreshAnnotAppearances ()

Generates the appearance stream for annotations in the document using the default options. A common use case is to generate appearances only for missing annotations, which can be accomplished using the default options.

##### Throws

PDFNetException |

#### public void refreshFieldAppearances ()

Regenerates the appearance stream for every widget annotation in the document Call this method if you modified field's value and would like to update field's appearances.

##### Throws

PDFNetException |

#### public void removePageLabel (int page_num)

Removes the page label that is attached to the specified page, effectively merging the specified range with the previous page label sequence.

##### Parameters

page_num | The page from which the page label is removed. Because PDFNet indexes pages starting from 1, page_num must be larger than 0.

##### Throws

PDFNetException |

#### public void removeSecurity ()

Removes all security for the document.

#### public void removeSignatureHandler (long signature_handler_id)

Removes a signature handler from the signature manager.

##### Parameters

signature_handler_id | The unique id of the signature handler to remove.

##### Throws

PDFNetException |

#### public void save (Filter output_filter, long flags)

This method is deprecated.
use `save(Filter, SDFDoc.SaveMode)` instead. Saves the document to a CustomFilter.

Note: Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

output_filter | A output_filter filter where the document should be saved to.
flags | - A bit field composed of an OR of the following values: `e_incremental` `e_remove_unused` `e_hex_strings` `e_omit_xref` `e_linearized` `e_compatibility`

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (OutputStream stream, SaveMode[] saveModes, ProgressMonitor progress)

Saves the document to an OutputStream. See `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor)`

##### Throws

IOException |
PDFNetException |

#### public byte[] save (SaveMode[] saveModes, ProgressMonitor progress)

Saves the document to a memory buffer. See `save(SDFDoc.SaveMode, ProgressMonitor)`

##### Throws

PDFNetException |

#### public void save (long flags)

This method is deprecated.
use `save()` instead. Saves the document incrementally to the same location as it was opened from. This function only works if the PDFDoc was opened using a FileDescriptorFilter.

Note: If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then this save can not be used.

##### Parameters

flags | - [REMOVE] Must be `e_incremental`

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public byte[] save (SDFDoc.SaveMode saveMode, ProgressMonitor progress)

Saves the document to a memory buffer.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

saveMode | - save mode (See `SDFDoc.SaveMode`).
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Returns

- buffer containing the serialized version of the document.

##### Throws

PDFNetException |

#### public byte[] save (long flags, ProgressMonitor progress)

This method is deprecated.
use `save(SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to a memory buffer.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

flags | - A bit field composed of an OR of the following values: `e_incremental` `e_remove_unused` `e_hex_strings` `e_omit_xref` `e_linearized` `e_compatibility`
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Returns

- buffer containing the serialized version of the document.

##### Throws

PDFNetException |

#### public void save (OutputStream stream, SDFDoc.SaveMode saveMode, ProgressMonitor progress, int size)

Saves the document to an OutputStream. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

stream | An OutputStream where the document should be serialized.
saveMode | - save mode (See `SDFDoc.SaveMode`).
progress | - A pointer to the progress interface. NULL if progress tracking is not required.
size | The expected size of the output stream.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (OutputStream stream, long flags, ProgressMonitor progress)

This method is deprecated.
use `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to an OutputStream.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

stream | An OutputStream where the document should be serialized.
flags | - A bit field composed of an OR of the following values: `e_incremental` `e_remove_unused` `e_hex_strings` `e_omit_xref` `e_linearized` `e_compatibility`
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (OutputStream stream, SDFDoc.SaveMode saveMode, ProgressMonitor progress)

Saves the document to an OutputStream.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

stream | An OutputStream where the document should be serialized.
saveMode | - save mode (See `SDFDoc.SaveMode`).
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (OutputStream stream, long flags, ProgressMonitor progress, int size)

This method is deprecated.
use `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor, int)` instead. Saves the document to an OutputStream. Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

stream | An OutputStream where the document should be serialized.
flags | - A bit field composed of an OR of the following values: `e_incremental` `e_remove_unused` `e_hex_strings` `e_omit_xref` `e_linearized` `e_compatibility`
progress | - A pointer to the progress interface. NULL if progress tracking is not required.
size | The expected size of the output stream.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (String path, long flags, ProgressMonitor progress)

This method is deprecated.
use `save(String, SDFDoc.SaveMode, ProgressMonitor)` instead. Saves the document to a file. If a full save is requested to the original path, the file is saved to a file system-determined temporary file, the old file is deleted, and the temporary file is renamed to path. A full save with remove unused or linearization option may re-arrange object in the cross reference table. Therefore all pointers and references to document objects and resources should be re acquired in order to continue document editing. In order to use incremental save the specified path must match original path and e_incremental flag bit should be set.

Note: In a multi-threaded environment, the user is expected to acquire a write lock before attempting to save the document.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

Note: - If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the e_incremental flag.

##### Parameters

path | - The full path name to which the file is saved.
flags | - A bit field composed of an OR of the following values: `e_incremental` `e_remove_unused` `e_hex_strings` `e_omit_xref` `e_linearized` `e_compatibility`
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void save (String path, SaveMode[] saveModes, ProgressMonitor progress)

Saves the document to a file. See `save(String, SDFDoc.SaveMode, ProgressMonitor)`

##### Throws

PDFNetException |

#### public void save (String path, SDFDoc.SaveMode saveMode, ProgressMonitor progress)

Saves the document to a file. If a full save is requested to the original path, the file is saved to a file system-determined temporary file, the old file is deleted, and the temporary file is renamed to path. A full save with remove unused or linearization option may re-arrange object in the cross reference table. Therefore all pointers and references to document objects and resources should be re acquired in order to continue document editing. In order to use incremental save the specified path must match original path and `INCREMENTAL` should be given.

Note: In a multi-threaded environment, the user is expected to acquire a write lock before attempting to save the document.

Note: - Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

Note: - If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then it can not be saved using the `INCREMENTAL` mode.

##### Parameters

path | - The full path name to which the file is saved.
saveMode | - save mode (See `SDFDoc.SaveMode`).
progress | - A pointer to the progress interface. NULL if progress tracking is not required.

##### Throws

PDFNetException |

#### public void save (Filter output_filter, SDFDoc.SaveMode saveMode)

Saves the document to a CustomFilter.

Note: Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

output_filter | A output_filter filter where the document should be saved to.
saveMode | - save mode (See `SDFDoc.SaveMode`).

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (OutputStream stream, SaveMode[] saveModes, ProgressMonitor progress, int size)

Saves the document to an OutputStream. See `save(OutputStream, SDFDoc.SaveMode, ProgressMonitor, int)`

##### Throws

IOException |
PDFNetException |

#### public void save ()

Saves the document incrementally to the same location as it was opened from.

Note: If the original pdf has a corrupt xref table (see HasRepairedXref or http://www.pdftron.com/kb_corrupt_xref), then this save can not be used.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void save (Filter output_filter, SaveMode[] saveModes)

Saves the document to a file. See `save(Filter, SDFDoc.SaveMode)`

##### Throws

IOException |
PDFNetException |

#### public void saveCustomSignature (byte[] in_signature, DigitalSignatureField in_field, Filter output_filter)

Saves a custom signature Contents to a document which has been prepared to receive it. No changes should be made to document in meantime. The output goes into a Filter.

Note: This method ignores e_incremental flag. Save will modify the PDFDoc object's internal representation. As such, the user should acquire a write lock before calling save.

##### Parameters

in_signature | The signature Contents to write
in_field | The signature field to which to write
output_filter | The output filter where to write data

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void saveCustomSignature (byte[] in_signature, DigitalSignatureField in_field, String in_path)

Saves a custom signature Contents to a document which has been prepared to receive it. No changes should be made to document in meantime. The output goes into a file at the provided path.

##### Parameters

in_signature | The signature Contents to write
in_field | The signature field to which to write
in_path | The full path name to which the file is saved.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public boolean saveIncrementalData (String path)

Saves only the incremental portion of the PDFDoc to path Works like saving using `INCREMENTAL` but only writes the portion that would have been appended to path.

##### Parameters

path | - The full path name to which the incremental data is saved.

##### Throws

| PDFNetException
IOException | Signals that an I/O exception has occurred.
PDFNetException |

#### public void saveViewerOptimized (String path, ViewerOptimizedOptions opts)

Applies optimizations to improve viewing speed and saves the document to the specified file. The main optimizations used are linearization and embedding thumbnails for the first page and any complex pages.

##### Parameters

path | The full path name to which the file is saved.
opts | The optimization options

##### Throws

PDFNetException | - if the file can't be opened for saving or if there is a problem during Save an Exception object will be thrown.

#### public byte[] saveViewerOptimized (ViewerOptimizedOptions opts)

Applies optimizations to improve viewing speed and saves the document to a memory buffer. The main optimizations used are linearization and embedding thumbnails for the first page and any other pages that are slow to render.

##### Parameters

opts | The optimization options

##### Returns

- The buffer containing the serialized version of the document.

##### Throws

PDFNetException | if the file can't be opened for saving or if there is a problem during Save an Exception object will be thrown.

#### public void setOpenAction (Action action)

Set the Action that will be triggered when the document is opened.

##### Parameters

action | A new Action that will be triggered when the document is opened. An example of such action is a GoTo Action that takes the user to a given location in the document.

##### Throws

PDFNetException |

#### public void setPageLabel (int page_num, PageLabel label)

Attaches a label to a page. This establishes the numbering scheme for that page and all following it, until another page label is encountered. This label allows PDF producers to define a page numbering system other than the default.

##### Parameters

page_num | The number of the page to label. If page_num is less than 1 or greater than the number of pages in the document, the method does nothing.
label | page label input PageLabel

##### Throws

PDFNetException |

#### public void setSecurityHandler (SecurityHandler handler)

The function sets a new SecurityHandler as the current security handler.

Note: Setting a new security handler will not invalidate the access to the original file and will take effect during document Save().

Note: If the security handler is modified, document will perform a full save even if `INCREMENTAL` was given in Save() method.

##### Parameters

handler | the new security handler

#### public boolean timedLock (int milliseconds)

Try locking the document, waiting no longer than specified number of milliseconds.

##### Parameters

milliseconds | maximum time to wait

##### Returns

- true if the document is locked for multi-threaded access, false otherwise.

##### Throws

PDFNetException |

#### public boolean timedLockRead (int milliseconds)

Tries to obtain a read lock the document for milliseconds duration, and returns true if the lock was successfully acquired

##### Parameters

milliseconds | maximum time to wait

##### Returns

- true if the document is locked for multi-threaded access, false otherwise.

##### Throws

PDFNetException |

#### public boolean tryLock ()

Try locking the document in non-blocking manner.

##### Returns

- true if the document is locked for multi-threaded access, false otherwise.

##### Throws

PDFNetException |

#### public boolean tryLockRead ()

Try obtaining a read lock on the document in non-blocking manner.

##### Returns

- true if the document is locked for multi-threaded access, false otherwise.

##### Throws

PDFNetException |

#### public void unlock ()

Unlock the document.

##### Throws

PDFNetException |

#### public void unlockRead ()

Removes the read lock from the document.

##### Throws

PDFNetException |

#### public PDFDoc.SignaturesVerificationStatus verifySignedDigitalSignatures (VerificationOptions in_opts)

Attempts to verify all signed cryptographic digital signatures in the document, ignoring unsigned signatures.

##### Returns

- an enumeration value representing the state of the document's signatures

##### Throws

PDFNetException |