Document Class Documentation

class Document : SystemIDisposable

Namespace:Datalogics::PDFL

Inherits from:
SystemIDisposable

Detailed Description

The underlying PDF representation of a document.

Use document objects to perform most of the functions related to pages in a PDF file, such as deleting pages, inserting blank pages, copying watermarks, creating bookmarks and thumbnails, and so on.

Constructor & Destructor Documentation

Document

Document()

Creates a new document. The only Cos object in the document will be a Catalog. After the document is created, at least one page must be added using CreatePage or InsertPages before the PDF Viewer can display or save the document.

Document

Document(string fileName)

Parameters

fileName: string

A path name to the file, specified in whatever format is correct for fileSys.

Opens the specified document. If the call fails and the exception is pdErrNeedRebuild, then call again with doRepair set to true. This allows the application to decide whether to perform the time-consuming repair operation.

Exceptions

pdErrNeedPassword
—

or other errors are raised if the file is encrypted and authProc is NULL or returns false.

pdErrNotEnoughMemoryToOpenDoc
—

or genErrNoMemory is raised if there is insufficient memory to open the document.

pdErrNeedRebuild
—

is raised if the document needs to be rebuilt and doRepair is false.

pdErrBadOutlineObj
—

is raised if the Outlines object appears to be invalid (if the value of the Outlines key in the Catalog is not a NULL or dictionary object).

pdErrBadRootObj
—

is raised if the Catalog object (as returned by CosDocGetRoot()) is not a dictionary.

pdErrBadBaseObj
—

is raised if the Pages tree appears to be invalid (if the value of the Pages key in the Catalog is not a NULL or dictionary object).

pdErrTooManyPagesForOpen
—

is raised if the document contains too many pages.

cosSynErrNoHeader
—

is raised if the document's header appears to be bad.

cosSynErrNoStartXRef
—

is raised if no end-of-file line can be located.

cosErrRebuildFailed
—

is raised if doRepair is true and rebuild failed.

Document

Document(string fileName, string password, PermissionRequestOperation perms, bool doRepair)

Parameters

fileName: string

A path name to the file.

password: string

The password to use to attempt to open the document.

perms: PermissionRequestOperation

The permissions being requested. It must be an OR of the PermissionRequestOperation values.

doRepair: bool

If true, attempt to repair the file if it is damaged. If false, do not attempt to repair the file if it is damaged.

Opens the specified document. If the document is already open, it returns a reference to the already opened Document. You must call Close() once for every successful open. If the call fails and the exception is pdErrNeedRebuild, then call again with doRepair equal to true. This allows the application to decide whether to perform the time-consuming repair operation.

Exceptions

pdErrNeedPassword
—

is raised if the file is encrypted and the password is incorrect.

pdErrNotEnoughMemoryToOpenDoc
—

or genErrNoMemory is raised if there is insufficient memory to open the document.

pdErrNeedRebuild
—

is raised if the document needs to be rebuilt and doRepair is false.

pdErrBadOutlineObj
—

is raised if the Outlines object appears to be invalid (if the value of the Outlines key in the Catalog is not a NULL or dictionary object).

pdErrBadRootObj
—

is raised if the Catalog object (as returned by CosDocGetRoot()) is not a dictionary.

pdErrBadBaseObj
—

is raised if the Pages tree appears to be invalid (if the value of the Pages key in the Catalog is not a NULL or dictionary object).

pdErrTooManyPagesForOpen
—

is raised if the document contains too many pages.

cosSynErrNoHeader
—

is raised if the document's header appears to be bad.

cosSynErrNoStartXRef
—

is raised if no end-of-file line can be located.

cosErrRebuildFailed
—

is raised if doRepair is true and rebuild failed.

Document

Document(string XPSFilename, XPSConvertParams ConversionParams)

Parameters

XPSFilename: string

The path to the XPS file to convert.

ConversionParams: XPSConvertParams

Additional parameters for XPS conversion.

Create a Document from an XPS file.

Documents are converted one at a time. In multi-threaded applications, threads that are making simultaneous calls to this method will block and execute the method sequentially.

NOTE: This method is only available on Windows or Linux.

Document

Document(System.IO.Stream stream)

Parameters

stream: System.IO.Stream

The Stream from which to read the Document.

Open a Document from a Stream.

This allows a document to be read from a Stream object. The Stream must be seekable. Suitable examples are FileStream and MemoryStream. Once passed to the Document constructor, ownership of the stream is passed to the Document. The Stream must remain open while the Document itself is open, as data will only be read as needed.

Exceptions

pdErrNeedPassword
—

or other errors are raised if the file is encrypted and authProc is NULL or returns false.

pdErrNotEnoughMemoryToOpenDoc
—

or genErrNoMemory is raised if there is insufficient memory to open the document.

pdErrNeedRebuild
—

is raised if the document needs to be rebuilt and doRepair is false.

pdErrBadOutlineObj
—

is raised if the Outlines object appears to be invalid (if the value of the Outlines key in the Catalog is not a NULL or dictionary object).

pdErrBadRootObj
—

is raised if the Catalog object (as returned by CosDocGetRoot()) is not a dictionary.

pdErrBadBaseObj
—

is raised if the Pages tree appears to be invalid (if the value of the Pages key in the Catalog is not a NULL or dictionary object).

pdErrTooManyPagesForOpen
—

is raised if the document contains too many pages.

cosSynErrNoHeader
—

is raised if the document's header appears to be bad.

cosSynErrNoStartXRef
—

is raised if no end-of-file line can be located.

Document

Document(System.IO.Stream stream, string password, PermissionRequestOperation perms, bool doRepair)

Parameters

stream: System.IO.Stream

The Stream from which to read the Document.

password: string

The password to use to attempt to open the document.

perms: PermissionRequestOperation

The permissions being requested. It must be an OR of the PermissionRequestOperation values.

doRepair: bool

If true, attempt to repair the file if it is damaged. If false, do not attempt to repair the file if it is damaged.

Open a Document from a Stream.

This allows a document to be read from a Stream object. The Stream must be seekable. Suitable examples are FileStream and MemoryStream. Once passed to the Document constructor, ownership of the stream is passed to the Document. The Stream must remain open while the Document itself is open, as data will only be read as needed.

Exceptions

pdErrNeedPassword
—

or other errors are raised if the file is encrypted and authProc is NULL or returns false.

pdErrNotEnoughMemoryToOpenDoc
—

or genErrNoMemory is raised if there is insufficient memory to open the document.

pdErrNeedRebuild
—

is raised if the document needs to be rebuilt and doRepair is false.

pdErrBadOutlineObj
—

is raised if the Outlines object appears to be invalid (if the value of the Outlines key in the Catalog is not a NULL or dictionary object).

pdErrBadRootObj
—

is raised if the Catalog object (as returned by CosDocGetRoot()) is not a dictionary.

pdErrBadBaseObj
—

is raised if the Pages tree appears to be invalid (if the value of the Pages key in the Catalog is not a NULL or dictionary object).

pdErrTooManyPagesForOpen
—

is raised if the document contains too many pages.

cosSynErrNoHeader
—

is raised if the document's header appears to be bad.

cosSynErrNoStartXRef
—

is raised if no end-of-file line can be located.

Property Documentation

Attachments

System.Collections.Generic.IList< FileAttachment > Attachments[get]

Gets all attached files from the PDF document.

Author

string Author[get, set]

The author of the PDF document.

BaseURI

string BaseURI[get, set]

The Base URI of the PDF document.

BookmarkRoot

Bookmark BookmarkRoot[get]

Gets the root of the document's bookmark tree.

The return value is valid even if the document's bookmark tree is empty (meaning that there is no Outlines key in the underlying PDF file).

Collection

Collection Collection[get]

GetCollection allows to retrieve collection from the PDF document.

CompressionLevel

int CompressionLevel[get]

The compression level of the document.

The compression level can be one of three values returned by this property:

• 0 - No compression. All objects are available without inflation.

• 1 - Partial compression. Objects related to logical structure are stored in object streams and must be inflated.

• 2 - Full compression. All objects are compressed and must be inflated.

Creator

string Creator[get, set]

The creator of the PDF file.

DefaultOptionalContentConfig

OptionalContentConfig DefaultOptionalContentConfig[get]

Gets the default OptionalContentConfig for the document.

The OptionalContentConfig determines default settings for optional content, such as the order in which layers (i.e. OptionalContentGroup) appear in the Layers control panel. These settings are used when the document is first opened.

DeleteOnClose

bool DeleteOnClose[get, set]

The document is based on a temporary file that must be deleted when the document is closed or saved.

FileName

string FileName[get]

Get the filename associated with this Document, if it has a representation on disk.

HasSignature

bool HasSignature[get]

The document contains a Digital Signature.

InfoDict

PDFDict InfoDict[get]

The Info dictionary of the document as a PDFObject.

InstanceID

System.Byte[] InstanceID[get]

Get the instance ID for this document.

IsEmbedded

bool IsEmbedded[get, set]

The document is embedded in a compound document (OLE, OpenDoc).

IsLinearized

bool IsLinearized[get]

The document is linearized (optimized) for page-served remote (network) access. This flag is get only.

IsModified

bool IsModified[get]

The document has been modified slightly (for example, bookmarks or text annotations have been opened or closed), but not in a way that warrants saving.

This flag is get only.

IsOptimized

bool IsOptimized[get, set]

The document is optimized. If this flag is cleared, the Adobe PDF Library does not save the file optimized. You can, therefore, linearize a PDF file without optimizing it. Optimizing without linearizing is not allowed, however. This flag can only be set, never cleared.

IsPxDF

bool IsPxDF[get]

The underlying file is PxDF. This flag is get only.

Keywords

string Keywords[get, set]

The keywords of the PDF file.

LoadedFonts

System.Collections.Generic.IList< Font > LoadedFonts[get]

Enumerates all the fonts that have been encountered so far. A font is loaded when a page that uses it is processed. This typically happens when a page is drawn or its thumbnail image is created.

MajorVersion

short MajorVersion[get, set]

The major PDF version number of the document. The PDF version is specified in the header of a PDF file in the string "%PDF-xx. yy" where xx is the major version and yy is the minor version.

MajorVersionIsNewerThanCurrentLibrary

bool MajorVersionIsNewerThanCurrentLibrary[get]

The document's major version is newer than the current library version. This flag is get only.

MergedXMPKeywords

string MergedXMPKeywords[get]

A string containing a semicolon-separated list of merged XMP keyword fields.

The first such field is the entire contents of the pdf:Keywords property of the document XMP; the remaining fields are the contents of successive items in the xmp:Keywords bag of keyword items.

MinorVersion

short MinorVersion[get, set]

The minor PDF version number of the document. The PDF version is specified in the header of a PDF file in the string "%PDF-xx. yy" where xx is the major version and yy is the minor version.

Please note: Setting the minor version on a document only changes the version number in the document's file header. It willNOT actually change the PDF's contents and it willNOT alter the PDF to conform to the standard of the new minor version.

The new minor version number will appear in the file header once the document is saved.

MinorVersionIsNewerThanCurrentLibrary

bool MinorVersionIsNewerThanCurrentLibrary[get]

The document's minor version is newer than the current library version. This flag is get only.

NeedsSave

bool NeedsSave[get, set]

The document has been modified and needs to be saved.

NumPages

int NumPages[get]

Gets the number of pages in a document.

OptionalContentConfigs

System.Collections.Generic.IList< OptionalContentConfig > OptionalContentConfigs[get]

Gets all OptionalContentConfigs stored in this document.

The first will be the default OptionalContentConfig (the same value returned by DefaultOptionalContentConfig); subsequent values will be additional Configs stored in the document. Any of these can be made the default by setting it via the DefaultOptionalContentConfig property.

Any OptionalContentConfigs created via the OptionalContentConfig constructor will appear in this list.

OptionalContentContext

OptionalContentContext OptionalContentContext[get]

Gets the built-in default OptionalContentContext for the document.

This context is used by all content drawing and enumeration calls that do not take an OptionalContentContext parameter, or for which no context is specified.

OptionalContentGroups

System.Collections.Generic.IList< OptionalContentGroup > OptionalContentGroups[get]

Gets the optional-content groups for the document.

The order of the groups is not guaranteed to be the creation order, and is not the same as the display order (see PDOCConfigGetOCGOrder()).

PageLabels

System.Collections.Generic.IList< PageLabel > PageLabels[get, set]

The list of PageLabel objects used in the document.

PageLabels are always stored in page index order; if two PageLabels start on the same page index, the last PageLabel appearing in the list will be used.

Exceptions

ApplicationException
—

when a page label has an unknown numbering style

PageMode

PageMode PageMode[get, set]

The PageMode of the PDF document.

PermanentID

System.Byte[] PermanentID[get]

Get the permanent ID for this document.

PermissionFlags

PermissionFlags PermissionFlags[get]

Allows to obtain security flags for the document.

Producer

string Producer[get, set]

The producer of the PDF file.

RequiresFullSave

bool RequiresFullSave[get, set]

The document cannot be saved incrementally; when it is saved using Document.Save(), the SaveFlags.Full flag must be specified.

This flag can only be set, never cleared.

RolledBackDocuments

System.Collections.Generic.IList< RolledBackDocument > RolledBackDocuments[get]

A Document that have been previously saved Incrementally means changes were written to the end of the file leaving its original contents intact. Thus an Incrementally saved file may contain multiple entire PDF documents that represent prior incarnations of the current document. This method retrieves any such previous documents found in sequential order from the beginning of the file.

Root

PDFDict Root[get]

The Catalog of the document as a PDFObject.

StructTreeRoot

StructTreeRoot StructTreeRoot[get]

Returns the StructTreeRoot if present, nullptr otherwise.

StructureIDTree

NameTree StructureIDTree[get]

Retrieves the IDTree from the StructureTreeRoot dictionary.

StructureParentTree

NumberTree StructureParentTree[get]

Retrieves the ParentTree from the StructureTreeRoot dictionary.

Subject

string Subject[get, set]

The subject of the PDF document.

SuppressErrors

bool SuppressErrors[get, set]

Do not display errors.

Title

string Title[get, set]

The title of the PDF document.

VersionIsOlderThanCurrentLibrary

bool VersionIsOlderThanCurrentLibrary[get]

The document's version is older than the current library version. This flag is get only.

VersionString

string VersionString[get]

The PDF version of the document, which is specified in the header of a PDF file in the string "%PDF-xx.yy" where xx is the major version and yy is the minor version.

Note that this returns a string containing both the major and minor versions. For version comparisons, use MajorVersion and MinorVersion.

WasRepaired

bool WasRepaired[get]

The document was repaired when it was opened.

This flag is get only.

XMPMetadata

string XMPMetadata[get, set]

The XMP metadata associated with a document.

The XMP metadata returned always represents all the properties in the Document's Info dictionary, and can also contain properties not present in the Info dictionary. This call is preferred to GetInfo, which only returns properties that are in the Info dictionary (although the older function is supported for compatibility).

Field Documentation

AllPages

static AllPages

All pages.

BeforeFirstPage

static BeforeFirstPage

Before first page.

LastPage

static LastPage

Last page.

Member Function Documentation

ApplyRedactions

bool ApplyRedactions()

Returns:

bool

Apply redactions to the document.

ApplyRedactions

bool ApplyRedactions(Redaction redact)

Parameters

redact: Redaction

the redaction to apply, or NULL to apply all redactions in the document.

Returns:

bool

Apply redactions to the document.

CloneAsPDFADocument

PDFAConvertResult CloneAsPDFADocument(PDFAConvertType type, PDFAConvertParams parms)

Parameters

type: PDFAConvertType

The type of PDF/A conversion to perform

parms: PDFAConvertParams

A PDFAConvertParams object specifying options for the conversion

Returns:

PDFAConvertResult

A PDFAConvertResult object containing the Document and SaveFlags.

Create a PDF/A compliant version of this Document.

The returned Document will be compliant with the PDF/A standard. You can save it using any of the standard Save() methods.

The PDFAConvertResult object contains both the Document and the SaveFlags you should use when saving the Document. You MUST use these exact flags to save the returned Document or it will no longer be PDF/A compliant.

The returned Document will have its MajorVersion and MinorVersion set to values required for PDF/A compliance. These will not be visible until after you save the Document.

If this Document could not be converted to PDF/A, the PDFADocument field in the PDFAConvertResult object will be null or a LibraryException will be thrown.

A LibraryException message should be checked to see if setting a PDFAConvertParams property will allow conversion to succeed. For example, if the message is "Unembeddable font in annotation", then try setting the RemoveAllAnnotations property to true and then call CloneAsPDFADocument().

CloneAsPDFXDocument

PDFXConvertResult CloneAsPDFXDocument(PDFXConvertType type, PDFXConvertParams parms)

Parameters

type: PDFXConvertType

The type of PDF/X conversion to perform

parms: PDFXConvertParams

A PDFXConvertParams object specifying options for the conversion

Returns:

PDFXConvertResult

A PDFXConvertResult object containing the Document and SaveFlags.

Create a PDF/X compliant version of this Document.

The returned Document will be compliant with the PDF/X standard. You can save it using any of the standard Save() methods.

The PDFXConvertResult object contains both the Document and the SaveFlags you should use when saving the Document. You MUST use these exact flags to save the returned Document or it will no longer be PDF/X compliant.

The returned Document will have its MajorVersion and MinorVersion set to values required for PDF/X compliance. These will not be visible until after you save the Document.

If this Document could not be converted to PDF/X, the PDFXDocument field in the PDFXConvertResult object will be null.

Close

void Close()

Returns:

void

Closes a document and releases its resources. Changes are not saved. You must use Save to save any modifications before calling Close.

Exceptions

pdErrUnableToCloseDueToRefs
—

is raised if there are any outstanding references to objects in the document, and the document will still be valid (its resources will not be released).

genErrBadUnlock
—

is raised if the document's open count is less than one.

ColorConvertPages

bool ColorConvertPages(ColorConvertParams params_)

Parameters

Returns:

bool

True if color conversion occurred. False if nothing was color converted.

Convert the colors (in place) in a Document as specified by by the params block by applying an ICC profile to the objects contained in the Document.

ConvertToExcel

static bool ConvertToExcel(string inputPDFFileFilePath, string outputOfficeFilePath)

Parameters

inputPDFFileFilePath: string

The PDF file path to convert.

outputOfficeFilePath: string

The output Office file path.

Returns:

bool

true if the conversion was successful, false if an error occurred.

This function converts a PDF file to a Microsoft Excel Office file (.xlsx).

NOTE: This method is only available on Windows 32/64-bit and Linux 64-bit.

ConvertToPowerPoint

static bool ConvertToPowerPoint(string inputPDFFileFilePath, string outputOfficeFilePath)

Parameters

inputPDFFileFilePath: string

The PDF file path to convert.

outputOfficeFilePath: string

The output Office file path.

Returns:

bool

true if the conversion was successful, false if an error occurred.

This function converts a PDF file to a Microsoft PowerPoint Office file (.pptx).

NOTE: This method is only available on Windows 32/64-bit and Linux 64-bit.

ConvertToWord

static bool ConvertToWord(string inputPDFFileFilePath, string outputOfficeFilePath)

Parameters

inputPDFFileFilePath: string

The PDF file path to convert.

outputOfficeFilePath: string

The output Office file path.

Returns:

bool

true if the conversion was successful, false if an error occurred.

This function converts a PDF file to a Microsoft Word Office file (.docx).

NOTE: This method is only available on Windows 32/64-bit and Linux 64-bit.

ConvertXFAFieldsToAcroFormFields

uint ConvertXFAFieldsToAcroFormFields()

Returns:

uint

the number of output pages created in the converted document

Convert a XFA document into a document with only AcroForms.

XFA content is not widely supported by PDF processors, converting this content transforms XFA fields into AcroForm fields which are more widely suppored by PDF processors All XFA fields are removed.

https://www.datalogics.com/pdf-form-functions.

CountXMPMetadataArrayItems

int CountXMPMetadataArrayItems(string namespaceName, string path)

Parameters

namespaceName: string

The XML namespace URI for the schema in which the property is to be found.

path: string

The name of the simple property .

Returns:

int

number of array items in the property array.

Returns the number of array items in a property array associated with a Document.

CreateCollection

void CreateCollection()

Returns:

void

CreateCollection allows to create new collection in the PDF document. It replaces any existing collection.

CreateNameTree

NameTree CreateNameTree(string nameTreeName)

Parameters

nameTreeName: string

The name of the NameTree to create.

Returns:

NameTree

The retrieved or newly created NameTree.

Retrieves the name tree inside the Names dictionary with the specified key name, or creates it if it does not exist.

CreatePage

Page CreatePage(int afterPageNum, Rect mediaBox)

Parameters

afterPageNum: int

The page number after which the new page is inserted. The first page is 0. Use Document.BeforeFirstPage to insert the new page at the beginning of a document.

mediaBox: Rect

A rectangle specifying the page's media box, specified in user space coordinates.

Returns:

Page

The newly created page.

Creates and acquires a new Page. The page is inserted into the document at the specified location.

CreateStructTreeRoot

StructTreeRoot CreateStructTreeRoot()

Returns:

StructTreeRoot

Creates a StructTreeRoot in the catalog; throws std.logic_error if one already exists. Also sets /MarkInfo {/Marked true} in the catalog.

DeletePages

void DeletePages(int firstPage, int lastPage)

Parameters

firstPage: int

The page number of the first page to delete. The first page is 0.

lastPage: int

The page number of the last page to delete.

Returns:

void

Deletes the specified pages.

DeletePages

void DeletePages(int firstPage, int lastPage, PageDeleteFlags deleteFlags)

Parameters

firstPage: int

The page number of the first page to delete. The first page is 0.

lastPage: int

The page number of the last page to delete.

deleteFlags: PageDeleteFlags

One of the DeleteFlags.

Returns:

void

Deletes the specified pages with option to parse Structure Tree.

Dispose

void Dispose()

Returns:

void

EmbedFonts

void EmbedFonts()

Returns:

void

Embed unembedded fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

With no flags, fonts marked as embedded or subsettable will be embedded.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, use the version of this call that takes a list of Font objects and a set of flags for embedding. Passing the list of new Fonts and the DontScanDocument flag will directly embed the fonts in the list without scanning the document.

EmbedFonts

void EmbedFonts(EmbedFlags flags)

Parameters

flags: EmbedFlags

One of the EmbedFlags

Returns:

void

Embed unembedded fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, use the version of this call that takes a list of Font objects and a set of flags for embedding. Passing the list of new Fonts and the DontScanDocument flag will directly embed the fonts in the list without scanning the document.

EmbedFonts

void EmbedFonts(EmbedFlags flags, ProgressMonitor progressMonitor, CancelProc cancelProc, ReportProc reportProc)

Parameters

flags: EmbedFlags

One of the EmbedFlags

progressMonitor: ProgressMonitor

a ProgressMonitor that will receive progress information, may be null

cancelProc: CancelProc

a CancelProc, which can return true to cancel the operation, may be null

reportProc: ReportProc

a ReportProc, which will be called with warnings about fonts that do not embed, may be null

Returns:

void

Embed unembedded fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, use the version of this call that takes a list of Font objects and a set of flags for embedding. Passing the list of new Fonts and the DontScanDocument flag will directly embed the fonts in the list without scanning the document.

EmbedFonts

Parameters

fonts: System.Collections.Generic.IList< Font >

the fonts to embed in the document.

Returns:

void

Embed specified fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

The fonts passed to this function must be fonts actually used in the current document. These fonts may be obtained by using the GetFonts or GetLoadedFonts functions, or obtained from a TextRun. Fonts created by name will not work in this context.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, use the version of this call that takes a list of Font objects and a set of flags for embedding. Passing the list of new Fonts and the DontScanDocument flag will directly embed the fonts in the list without scanning the document.

EmbedFonts

Parameters

fonts: System.Collections.Generic.IList< Font >

The list of fonts to embed. See restrictions above.

flags: EmbedFlags

One of the EmbedFlags

Returns:

void

Embed specified fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

The fonts passed to this function must be fonts actually used in the current document. These fonts may be obtained by using the GetFonts or GetLoadedFonts functions, or obtained from a TextRun. Fonts created by name will not work in this context.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, pass the list of new Fonts and the DontScanDocument flag. This will directly embed the fonts in the list without scanning the document.

EmbedFonts

void EmbedFonts(System.Collections.Generic.IList< Font > fonts, EmbedFlags flags, ProgressMonitor progressMonitor, CancelProc cancelProc, ReportProc reportProc)

Parameters

fonts: System.Collections.Generic.IList< Font >

The list of fonts to embed. See restrictions above.

flags: EmbedFlags

One of the EmbedFlags

progressMonitor: ProgressMonitor

a ProgressMonitor that will receive progress information, may be null

cancelProc: CancelProc

a CancelProc, which can return true to cancel the operation, may be null

reportProc: ReportProc

a ReportProc, which will be called with warnings about fonts that do not embed, may be null

Returns:

void

Embed specified fonts in a document.

To keep the changes the document must be saved. Fonts on the user's system that match the original font definition will be embedded. For the Times-Roman and Helvetica and corresponding styles, if displayed with a font alias, then the font alias will be embedded in the file. If the font has information that indicates the font cannot be embedded for print and preview, then the font will not be embedded in the document.

The fonts passed to this function must be fonts actually used in the current document. These fonts may be obtained by using the GetFonts or GetLoadedFonts functions, or obtained from a TextRun. Fonts created by name will not work in this context.

By default, the font embedding process scans the entire document for font usage information when subsetting fonts. For documents with large numbers of fonts or pages, this can take a long time. In cases where new Font objects are created and used to set text, it's not necessary to scan the entire document; instead, pass the list of new Fonts and the DontScanDocument flag. This will directly embed the fonts in the list without scanning the document.

EmbedOCRFonts

void EmbedOCRFonts()

Returns:

void

Embed fonts that were used in creating OCR text.

This is also done automatically when saving.

EnumIndirectPDFObjects

bool EnumIndirectPDFObjects(PDFObjectEnumProc enumProc)

Parameters

enumProc: PDFObjectEnumProc

A user-supplied callback to call for each indirect object in dP. Enumeration ends when enumProc returns false or all indirect objects have been enumerated. The value parameter returned in enumProc is always null.

Returns:

bool

true if all of the calls to enumProc returned true. It returns false as soon as a call to enumProc returns false.

Enumerates all the indirect objects of this document.

The objects are enumerated in no particular order. Successive enumerations of the same Document are not guaranteed to enumerate objects in the same order.

This method does not enumerate invalid objects, which include objects that are defined as null, objects that are not defined at all (those having no cross-reference entry), and objects that are on the free list.

This re-raises any exception that proc raises.

EnumResources

void EnumResources(int startPage, int endPage, ResourceType resourceType, PDFObjectEnumProc enumProc)

Parameters

startPage: int

The first page in the range of pages.

endPage: int

The last page in the range of pages.

resourceType: ResourceType

Resource type to enumerate.

enumProc: PDFObjectEnumProc

A user-supplied callback to call once for each resource of the specified type. NOTE: The resource is the first parameter of the callback, the second is unused.

Returns:

void

Enumerates the specified type of Page Resource, for a specified range of Pages.

This method enumerates resources in each page's Resources dictionary (ColorSpace, Font, ExtGState, etc.).

ExportAcroFormsData

bool ExportAcroFormsData(string fileName, AcroFormExportType exportType)

Parameters

fileName: string

The path on disk of the file the AcroForms data is exported to.

exportType: AcroFormExportType

The format type the AcroForm data should be exported to. The supported types are XFDF, FDF, and XML.

Returns:

bool

true indicates exporting succeeded and false indicates an error occurred

Export the AcroForms data.

AcroForms data is exported into a format that can later be imported into another AcroForms document.

https://www.datalogics.com/pdf-form-functions.

ExportAsPostScript

void ExportAsPostScript(PrintUserParams userParams, PrintCancelProc printCancelProc, PrintProgressProc printProgressProc, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

printCancelProc: PrintCancelProc

A PrintCancelProc, which can return true to cancel printing, may be null.

printProgressProc: PrintProgressProc

A PrintProgressProc, may be null.

path: string

The output file to be created.

Returns:

void

Exports a PDF document or pages from a PDF document as PostScript allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

ExportAsPostScript

void ExportAsPostScript(PrintUserParams userParams, PrintCancelProc printCancelProc, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

printCancelProc: PrintCancelProc

A PrintCancelProc, which can return true to cancel printing, may be null.

path: string

The output file to be created.

Returns:

void

Exports a PDF document or pages from a PDF document as PostScript allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

ExportAsPostScript

void ExportAsPostScript(PrintUserParams userParams, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

path: string

The output file to be created.

Returns:

void

Exports a PDF document or pages from a PDF document as PostScript allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

ExportXFAFormsData

bool ExportXFAFormsData(string fileName, XFAFormExportType exportType)

Parameters

fileName: string

The path on disk of the file the XFA form data is exported to.

exportType: XFAFormExportType

The format type the XFA data should be exported to. The supported types are XDP, XML, and XFD.

Returns:

bool

true indicates exporting succeeded and false indicates an error occurred

Export the XFA Forms data.

XFA forms data is exported into a format that can later be imported into another XFA document.

https://www.datalogics.com/pdf-form-functions.

FindBookmark

Bookmark FindBookmark(string title)

Parameters

title: string

The title of the bookmark for which to search.

Returns:

Bookmark

The bookmark within the document's bookmark tree that has the supplied title. Returns NULL if there is no bookmark with the supplied title.

Find bookmark by its title, searching within the document's entire bookmark tree.

FindBookmark

Bookmark FindBookmark(string title, int maxDepth)

Parameters

title: string

The title of the bookmark for which to search.

maxDepth: int

If supplied (with a value greater than or equal to 0), declares the number of levels below this bookmark to search. (If omitted, the entire subtree is searched.)

Returns:

Bookmark

The bookmark within the document's bookmark tree that has the supplied title. Returns NULL if there is no bookmark with the supplied title.

Find bookmark by its title, searching within the document's bookmark tree to a depth determined by maxDepth (e.g., 0 = root bookmark only and not any of its children, 1 = search one level below root bookmark level, etc. Omit to search entire bookmark tree.)

FindLabelForPageNum

string FindLabelForPageNum(int pageIndex)

Parameters

pageIndex: int

Index of a page in the Document

Returns:

string

The label string for the page

Fetch the label string for a page index, using the current page labels.

FindPDFObjectByID

PDFObject FindPDFObjectByID(int ID)

Parameters

ID: int

The object ID number to look up.

Returns:

PDFObject

The PDFObject with the specified ID, or null if no such object exists.

Retrieves an indirect PDFObject by its ID number.

Note that direct PDFObjects cannot be retrieved by ID.

FindPageNumForLabel

int FindPageNumForLabel(string label)

Parameters

label: string

The label string to look up

Returns:

int

The index of the corresponding page, or -1 if the label could not be matched

Look up a page index based on a label string.

FlattenAcroFormFields

void FlattenAcroFormFields()

Returns:

void

Flatten a AcroForms document.

Interactive AcroForm fields are flattened into static PDF page content. All AcroForm fields are removed.

NOTE: This method is part of the APDFL Forms Extension that is available separately from APDFL. For more information, please see https://www.datalogics.com/pdf-form-functions.

FlattenNonFormAnnotations

void FlattenNonFormAnnotations()

Returns:

void

Flatten a Non-Form (no AcroForm, no XFA) document's Annotations.

Annotations are flattened into static PDF page content.

NOTE: This method is part of the APDFL Forms Extension that is available separately from APDFL. For more information, please see https://www.datalogics.com/pdf-form-functions.

FlattenOptionalContent

bool FlattenOptionalContent()

Returns:

bool

true if the document was successfully flattened, false otherwise.

Flattens optional content in the document.

Every page in the document will be replaced with a version that has no optional content. The new version of the page will contain only what was visible on the page when the call was made. All other optional content information will be removed from the document.

The document's default optional content context will be used to determine visibility of optional content.

FlattenOptionalContent

bool FlattenOptionalContent(OptionalContentContext occ)

Parameters

occ: OptionalContentContext

The optional content context in which content is checked for visibility.

Returns:

bool

true if the document was successfully flattened, false otherwise.

Flattens optional content in the document.

Every page in the document will be replaced with a version that has no optional content. The new version of the page will contain only what was visible on the page when the call was made. All other optional content information will be removed from the document.

FlattenTransparency

int FlattenTransparency()

Returns:

int

The number of pages that were flattened.

Flattens all transparencies in the document. To flatten specific pages, see Document.FlattenTransparency(params, firstPage, lastPage)

Documents are flattened one at a time. In multi-threaded applications, threads that are making simultaneous calls to this method will block and execute the method sequentially.

FlattenTransparency

int FlattenTransparency(FlattenTransparencyParams params_)

Parameters

Returns:

int

The number of pages that were flattened.

Flattens all transparencies in the document. To flatten specific pages, see Document.FlattenTransparency(params, firstPage, lastPage)

Documents are flattened one at a time. In multi-threaded applications, threads that are making simultaneous calls to this method will block and execute the method sequentially.

FlattenTransparency

int FlattenTransparency(FlattenTransparencyParams params_, int firstPage, int lastPage)

Parameters

firstPage: int

The first page of the range of pages to flatten.

lastPage: int

The last page of the range of pages to flatten.

Returns:

int

The number of pages that were flattened.

Flattens transparencies in the document that occur on pages within the specified range. When performing flattening on multiple pages, this method is more efficient than making multiple Page.FlattenTransparency() calls.

Documents are flattened one at a time. In multi-threaded applications, threads that are making simultaneous calls to this method will block and execute the method sequentially.

FlattenXFAFormFields

uint FlattenXFAFormFields()

Returns:

uint

the number of output pages created in the flattened document.

Flatten a XFA Document (Static or Dynamic).

XFA content is not widely supported by PDF processors, flattening this content transforms into static PDF page content that is part of typical PDF files that can easily be understood by PDF processors. All XFA fields are removed.

https://www.datalogics.com/pdf-form-functions.

FlattenXFAFormFieldsAsIfPrinted

uint FlattenXFAFormFieldsAsIfPrinted()

Returns:

uint

the number of output pages created in the flattened document.

Flatten a XFA Document (Static or Dynamic) as if it was Printed.

XFA content is not widely supported by PDF processors, flattening this content transforms into static PDF page content that is part of typical PDF files that can easily be understood by PDF processors. All XFA fields are removed.

The Flattened appearance will take into consideration how the document should appear when printed.

https://www.datalogics.com/pdf-form-functions.

FromWebUrl

static Document FromWebUrl(string url, WebToPDFConvertParams params_, WebConvertInfo info_out)

Parameters

url: string
info_out: WebConvertInfo

Returns:

Document

Render a URL (http/https or file://) into a Document. CallsCWebToPDFLifecycle.EnsureReady() first; rethrowsCWebConvertError on any plugin failure. info_out is populated on success.

Returns a heap-allocated CDocument (same pattern as the PDF/A and PDF/X clone paths) so the Document.Impl adopting ctor can take ownership without invokingCDocument's copy ctor, which is known to error in post-terminate teardown states. The caller owns the returned pointer.

The returned CDocument carries the backing temp PDF's lifetime: it is removed in CDocumentImpl.Dispose() right after the file handle closes necessary on Windows where APDFL's open handle holds an exclusive lock and preventsremove() from succeeding before the document is destroyed.

On platforms where the WebToPDF plugin is not supported this throws CWebConvertError(Category.PluginUnavailable, ...) immediately (translated toWebConvertError(Category.PluginUnavailable) by the api layer).

GetFonts

System.Collections.Generic.IList< Font > GetFonts(int firstPage, int lastPage)

Parameters

firstPage: int

The page number of the first page for which fonts are enumerated. The first page is 0.

lastPage: int

The page number of the last page for which fonts are enumerated.

Returns:

System.Collections.Generic.IList< Font >

A list of Font objects found in the specified page range.

Get all the fonts in the specified page range.

This may take a considerable amount of time for a large page range.

GetInfo

string GetInfo(string infoname)

Parameters

infoname: string

The name of metadata which value will be obtained.

Returns:

string

The value of the metadata obtained from the PDF file.

Gets the value of metadata information in a PDF file.

GetNameTree

NameTree GetNameTree(string nameTreeName)

Parameters

nameTreeName: string

The name of the NameTree to get.

Returns:

NameTree

The retrieved NameTree.

Retrieves the name tree inside the Names dictionary with the specified key name.

GetPage

Page GetPage(int pageNumber)

Parameters

pageNumber: int

The page number of the page to acquire. The first page is 0.

Returns:

Page

The requested Page object.

Gets a Page from a document.

Exceptions

genErrBadParm

GetXMPMetadataArrayItem

string GetXMPMetadataArrayItem(string namespaceName, string path, int index)

Parameters

namespaceName: string

The XML namespace URI for the schema in which the property is to be found.

path: string

The name of the desired simple property.

index: int

The index in the metadata property array associated with the property.

Returns:

string

a string containing the XML text of the value of the specified property in the XMP metadata associated with the Document, or an empty string if no such property is found.

Gets the value of an XMP metadata array item, associated with a document, based on an index.

GetXMPMetadataProperty

string GetXMPMetadataProperty(string namespaceName, string path)

Parameters

namespaceName: string

The XML namespace URI for the schema in which the property is to be found.

path: string

The name of the desired simple property. Note that XMP properties can have an XML substructure; this method can only retrieve values from simple textual properties.

Returns:

string

A string containing the XML text of the value of the specified property, or an empty string if no such property is found.

Gets the value of an XMP metadata property associated with a document.

It returns the XML text of the value of the specified property in the XMP metadata associated with the Document. The XMP metadata can represent all properties in the Document object's Info dictionary, as well as other properties.

ImportAcroFormsData

bool ImportAcroFormsData(string fileName, AcroFormImportType importType)

Parameters

fileName: string

The path on disk of the AcroFormsdata file to be imported.

importType: AcroFormImportType

The format type the data type should be imported to. The supported types are XFDF, FDF, and XML.

Returns:

bool

true indicates importing succeeded and false indicates an error occurred

Import the AcroForms data.

AcroForms data is imported from a supported format into the AcroForms document so its existing fields can be populated for example.

https://www.datalogics.com/pdf-form-functions.

ImportXFAFormsData

bool ImportXFAFormsData(string fileName)

Parameters

fileName: string

The path on disk of the XFA form data file to be imported, the supported types of data that can be imported are XDP, XML, and XFD.

Returns:

bool

true indicates importing succeeded and false indicates an error occurred

Import the XFA Forms data.

XFA forms data is imported from a supported format into the XFA document so its existing fields can be populated for example.

https://www.datalogics.com/pdf-form-functions.

InsertPages

void InsertPages(int mergeAfterThisPage, Document doc2, int startPage, int numPages, PageInsertFlags insertFlags)

Parameters

mergeAfterThisPage: int

The page number in doc after which pages from doc2 are inserted. The first page is 0. If Document.BeforeFirstPage is used, the pages are inserted before the first page in doc. Use Document.LastPage to insert pages after the last page in doc.

doc2: Document

The document containing the pages that are inserted into doc.

startPage: int

The page number of the first page in doc2 to insert into doc. The first page is 0.

numPages: int

The number of pages in doc2 to insert into doc. Use Document.AllPages to insert all pages from doc2 into doc.

insertFlags: PageInsertFlags

Flags that determine what additional information is copied from doc2 into doc. It is an OR of the following constants: PageInsertFlags.Bookmarks, PageInsertFlags.Threads, PageInsertFlags.All

Returns:

void

Inserts numPages pages from doc2 into doc. All annotations, and anything else associated with the page (such as a thumbnail image) are copied from the doc2 pages to the new pages in doc. This method does not insert pages if doc equals doc2.

The insertFlags parameter controls whether bookmarks and threads are inserted along with the specified pages. Setting this parameter to PageInsertFlags.All has two effects:

• The parameters indicating which pages to insert are ignored: all the pages of doc2 are inserted.

• In addition to inserting the pages themselves, it also merges other document data from doc2 into doc:

• Named destinations from doc2 (of PDF 1.1 and later) are copied into doc. If there are named destinations in doc2 with the same name as some named destination in doc, the ones in doc retain their names and the copied named destinations are given new names based on the old ones, with distinguishing digits added. Actions and bookmarks referring to the old names are made to refer to the new names after being copied into doc.

• If it is also the case that mergeAfterThisPage denotes the last page of the document, then document metadata is merged, and the optional content properties are merged in a more symmetrical manner than would otherwise be the case.

Document logical structure from doc2 is copied into doc. If less than the whole of doc2 is being inserted, only those structure elements having content on the copied pages, and the ancestors of those elements, are copied into the logical structure tree of doc. The top-level children of the structure tree root of doc2 are copied as new top-level children of the structure tree root of doc; a structure tree root is created in doc if there was none before. The role maps of the two structure trees are merged, with name conflicts resolved in favor of the role mappings present in doc. Attribute objects having scalar values, or values that are arrays of scalar values, are copied. Class map information from doc2 is also merged into that for doc.

Exceptions

pdErrOpNotPermitted
—

is raised unless doc is editable and doc2 is not encrypted or the owner opened it.

pdErrCantUseNewVersion
—

is raised if doc2 is a newer major version than PDFL understands.

pdErrTooManyPagesForInsert
—

is raised if the insertion would result in a document with too many pages.

genErrBadParm
—

is raised if mergeAfterThisPage is an invalid page number or doc has no pages.

genErrNoMemory
—

is raised if there is insufficient memory to perform the insertion.

pdErrWhileRecoverInsertPages
—

is raised if an error occurs while trying to recover from an error during inserting.

InsertPages

void InsertPages(int mergeAfterThisPage, Document doc2, int startPage, int numPages, PageInsertFlags insertFlags, ProgressMonitor progressMonitor, CancelProc cancelProc)

Parameters

mergeAfterThisPage: int

The page number in doc after which pages from doc2 are inserted. The first page is 0. If Document.BeforeFirstPage is used, the pages are inserted before the first page in doc. Use Document.LastPage to insert pages after the last page in doc.

doc2: Document

The document containing the pages that are inserted into doc.

startPage: int

The page number of the first page in doc2 to insert into doc. The first page is 0.

numPages: int

The number of pages in doc2 to insert into doc. Use Document.AllPages to insert all pages from doc2 into doc.

insertFlags: PageInsertFlags

Flags that determine what additional information is copied from doc2 into doc. It is an OR of the following constants: PageInsertFlags.Bookmarks, PageInsertFlags.Threads, PageInsertFlags.All

progressMonitor: ProgressMonitor

a ProgressMonitor that will receive progress information, may be null

cancelProc: CancelProc

a CancelProc, which can return true to cancel the operation, may be null

Returns:

void

Inserts numPages pages from doc2 into doc. All annotations, and anything else associated with the page (such as a thumbnail image) are copied from the doc2 pages to the new pages in doc. This method does not insert pages if doc equals doc2.

The insertFlags parameter controls whether bookmarks and threads are inserted along with the specified pages. Setting this parameter to PageInsertFlags.All has two effects:

• The parameters indicating which pages to insert are ignored: all the pages of doc2 are inserted.

• In addition to inserting the pages themselves, it also merges other document data from doc2 into doc:

• Named destinations from doc2 (of PDF 1.1 and later) are copied into doc. If there are named destinations in doc2 with the same name as some named destination in doc, the ones in doc retain their names and the copied named destinations are given new names based on the old ones, with distinguishing digits added. Actions and bookmarks referring to the old names are made to refer to the new names after being copied into doc.

• If it is also the case that mergeAfterThisPage denotes the last page of the document, then document metadata is merged, and the optional content properties are merged in a more symmetrical manner than would otherwise be the case.

Document logical structure from doc2 is copied into doc. If less than the whole of doc2 is being inserted, only those structure elements having content on the copied pages, and the ancestors of those elements, are copied into the logical structure tree of doc. The top-level children of the structure tree root of doc2 are copied as new top-level children of the structure tree root of doc; a structure tree root is created in doc if there was none before. The role maps of the two structure trees are merged, with name conflicts resolved in favor of the role mappings present in doc. Attribute objects having scalar values, or values that are arrays of scalar values, are copied. Class map information from doc2 is also merged into that for doc.

Exceptions

pdErrOpNotPermitted
—

is raised unless doc is editable and doc2 is not encrypted or the owner opened it.

pdErrCantUseNewVersion
—

is raised if doc2 is a newer major version than PDFL understands.

pdErrTooManyPagesForInsert
—

is raised if the insertion would result in a document with too many pages.

genErrBadParm
—

is raised if mergeAfterThisPage is an invalid page number or doc has no pages.

genErrNoMemory
—

is raised if there is insufficient memory to perform the insertion.

pdErrWhileRecoverInsertPages
—

is raised if an error occurs while trying to recover from an error during inserting.

IsDynamicXFA

bool IsDynamicXFA()

Returns:

bool

true indicates the Document is Dynamic XFA, false indicates it is not

Indicates if the document is Dynamic XFA.

Dynamic XFA documents can change in appearance in response to changes in the data. They don't contain a meaningful PDF representation. Such XFA content is not widely supported by PDF processors.

https://www.datalogics.com/pdf-form-functions.

IsStaticXFA

bool IsStaticXFA()

Returns:

bool

true indicates the Document is Static XFA, false indicates it is not

Indicates if the document is Static XFA.

Static XFA documents have a fixed appearance and layout. They usually contain a meaningful PDF representation. Such XFA content is not widely supported by PDF processors.

https://www.datalogics.com/pdf-form-functions.

MergeXMPKeywords

void MergeXMPKeywords()

Returns:

void

Causes a string produced as by PDDocGetMergedXAPKeywords() to be stored as the new value of the pdf:Keywords property, and the former value of the pdf:Keywords property to be stored as an item in the xmp:Keywords bag of keyword items.

The algorithm used to compute merged keywords lists detects the case in which the keywords lists have already been merged and makes no changes to the XMP metadata in this case.

MovePage

void MovePage(int moveToAfterThisPage, int pageToMove)

Parameters

moveToAfterThisPage: int

The new location of the page to move. The first page is 0. It may either be a page number, or the constant Document.BeforeFirstPage.

pageToMove: int

The page number of the page to move.

Returns:

void

Moves one page in a document.

Exceptions

genErrBadParm
—

is raised if moveAfterThisPage or pageToMove is invalid. Other exceptions may be raised as well.

PermRequest

bool PermRequest(PermissionRequestOperation requestedperm)

Parameters

requestedperm: PermissionRequestOperation

The document permission which to check

Returns:

bool

a boolean if the permission is set in the document.

Tests if a permission is set on a document

PermRequest

bool PermRequest(string password, PermissionRequestOperation perms)

Parameters

password: string

The document password which authorizes the change. Note - if this argument is set to a NULL (""), then the return will be an indicator of whether or not the requested permission is already set in this document, with no changes made to the PDF document.

perms: PermissionRequestOperation

the permissions on the PDF file which is to be set or checked.

Returns:

bool

a boolean if the permission change is successful or if the permission was set.

Request the permissions to be changed on a PDF document. This takes effect immediately

Print

void Print(PrintUserParams userParams)

Parameters

userParams: PrintUserParams

Parameters to control printing.

Returns:

void

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

PrintToFile

void PrintToFile(PrintUserParams userParams, PrintCancelProc printCancelProc, PrintProgressProc printProgressProc, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

printCancelProc: PrintCancelProc

A PrintCancelProc, which can return true to cancel printing, may be null.

printProgressProc: PrintProgressProc

A PrintProgressProc, may be null.

path: string

The output file to be created.

Returns:

void

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

PrintToFile

void PrintToFile(PrintUserParams userParams, PrintCancelProc printCancelProc, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

printCancelProc: PrintCancelProc

A PrintCancelProc, which can return true to cancel printing, may be null.

path: string

The output file to be created.

Returns:

void

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

PrintToFile

void PrintToFile(PrintUserParams userParams, string path)

Parameters

userParams: PrintUserParams

Parameters to control printing.

path: string

The output file to be created.

Returns:

void

Prints a PDF document or pages from a PDF document allowing the caller to specify options such as page size, rotation, and shrink-to-fit.

The output is placed in the specified file.

Exceptions

cosErrWriteError
pdErrOpNotPermitted
genErrBadParm

RemoveCollection

void RemoveCollection()

Returns:

void

RemoveCollection Removes a collection dictionary from a document.

RemoveDuplicateOCG

void RemoveDuplicateOCG()

Returns:

void

Removes duplicate optional content group from the document. This does not remove any content associated with the duplicate group,

RemoveNameTree

void RemoveNameTree(string nameTreeName)

Parameters

nameTreeName: string

The name of the NameTree to remove.

Returns:

void

Removes the name tree inside the Names dictionary with the specified key name. It does nothing if no object with that name exists.

RemoveOCG

void RemoveOCG(OptionalContentGroup ocg)

Parameters

ocg: OptionalContentGroup

The optional content group to remove.

Returns:

void

Removes the specified optional content group from the document. This does not remove any content associated with the specified group, only the group itself.

ReplacePages

void ReplacePages(int startPage, Document doc2, int startPageDoc2, int numPages, bool mergeTextAnnots)

Parameters

startPage: int

The first page number in doc to replace. The first page is 0.

doc2: Document

The document from which pages are copied into doc.

startPageDoc2: int

The page number of the first page in doc2 to copy. The first page is 0.

numPages: int

The number of pages to replace.

mergeTextAnnots: bool

If true, text annotations from doc2 are appended if they are different than all existing annotations on the page in doc. No other types of annotations are copied.

Returns:

void

Replaces the specified range of pages in one document with pages from another. The contents, resources, size and rotation of the pages are replaced. The bookmarks are not copied, because they are attached to the document, not to individual pages.

Exceptions

pdErrOpNotPermitted
—

is raised unless doc is editable and doc2 is not encrypted or the owner opened it.

pdErrCantUseNewVersion
—

is raised if doc2 is a newer major version than PDFL understands.

genErrBadParm
—

is raised if an invalid startPage or numPages is specified.

genErrNoMemory
—

is raised if there is insufficient memory to perform the insertion.

Save

void Save(SaveFlags flags, System.IO.Stream stream)

Parameters

flags: SaveFlags

A bit field composed of an OR of the SaveFlags values.

stream: System.IO.Stream

The Stream to which the file is saved.

Returns:

void

Saves a Document to a Stream.

The save is always performed as a full, copy save. The Document remains open with the original file.

If the document was created with Document(), at least one page must be added using CreatePage() or InsertPages() before the Document can be saved.

A full save with linearization optimizes the PDF file. During optimization, all objects in a PDF file are rearranged, many of them acquiring not only a new file position, but also a new Cos object number.

If SaveFlags.CloseAfterSave flag has been specified the document will be closed immediately after save and it won't be valid anymore. If one needs this document outside of the stream it has been saved to, one has to reopen the document and recreate all the dependent objects such as Page, Image etc.

If both SaveFlags.FULL and SaveFlags.COPY are used during saving partially or fully compressed document to the stream that SaveFlags.CLOSE_AFTER_SAVE must be specified.

It is advisable to call EmbedFonts before saving a document, in case any fonts were created automatically to support Unicode text.

Exceptions

pdErrAfterSave
—

is raised if the save was completed successfully, but there were problems cleaning up afterwards. The document is no longer consistent and cannot be changed. It must be closed and reopened.

pdErrOpNotPermitted
—

is raised if saving is not permitted. Saving is permitted if either edit or editNotes (see PermissionFlags) is allowed, or you are doing a full save and saveAs is allowed.

pdErrAlreadyOpen
—

is raised if SaveFlags.Full is used, and the file specified by newPath is already open.

Save

void Save(SaveFlags saveFlags)

Parameters

saveFlags: SaveFlags

A bit field composed of an OR of the SaveFlags values.

Returns:

void

Saves a document to disk. 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 the save file name.

A full save with linearization optimizes the PDF file. During optimization, all objects in a PDF file are rearranged, many of them acquiring not only a new file position, but also a new PDFObject number. At the end of the save operation, PDFL flushes its information of the PD layer and below to synchronize its in-memory state with the new disk file just written.

If the document has a signature, it will be saved incrementally regardless of the full save flag. This is required to preserve the exact contents of the document at the time of signing.

Exceptions

pdErrAfterSave
—

is raised if the save was completed successfully, but there were problems cleaning up afterwards. The document is no longer consistent and cannot be changed. It must be closed and reopened.

pdErrOpNotPermitted
—

is raised if saving is not permitted. Saving is permitted if either edit or editNotes (see PermissionFlags) is allowed, or you are doing a full save and saveAs is allowed.

pdErrAlreadyOpen
—

is raised if SaveFlags.Full is used, and the file is already open.

Save

void Save(SaveFlags saveFlags, ProgressMonitor progressMonitor, CancelProc cancelProc)

Parameters

saveFlags: SaveFlags

A bit field composed of an OR of the SaveFlags values.

progressMonitor: ProgressMonitor

a ProgressMonitor that will receive progress information, may be null

cancelProc: CancelProc

a CancelProc, which can return true to cancel the operation, may be null

Returns:

void

Saves a document to disk. 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 the save file name.

A full save with linearization optimizes the PDF file. During optimization, all objects in a PDF file are rearranged, many of them acquiring not only a new file position, but also a new PDFObject number. At the end of the save operation, PDFL flushes its information of the PD layer and below to synchronize its in-memory state with the new disk file just written.

If the document has a signature, it will be saved incrementally regardless of the full save flag. This is required to preserve the exact contents of the document at the time of signing.

Exceptions

pdErrAfterSave
—

is raised if the save was completed successfully, but there were problems cleaning up afterwards. The document is no longer consistent and cannot be changed. It must be closed and reopened.

pdErrOpNotPermitted
—

is raised if saving is not permitted. Saving is permitted if either edit or editNotes (see PermissionFlags) is allowed, or you are doing a full save and saveAs is allowed.

pdErrAlreadyOpen
—

is raised if SaveFlags.Full is used, and the file is already open.

Save

void Save(SaveFlags saveFlags, string newPath)

Parameters

saveFlags: SaveFlags

A bit field composed of an OR of the SaveFlags values.

newPath: string

The path to which the file is saved. A path must be specified when either SaveFlags.Full or SaveFlags.Copy are used for saveFlags. If SaveFlags.Incremental is specified in saveFlags, then newPath should be NULL. If SaveFlags.Full is specified and newPath is the same as the file's original path, the new file is saved to a file system-determined temporary path, then the old file is deleted and the new file is renamed to newPath.

Returns:

void

Saves a document to disk. 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 newPath.

If the document was created with Document, at least one page must be added using CreatePage() orInsertPages() before a PDF Viewer can save the document.

A full save with linearization optimizes the PDF file. During optimization, all objects in a PDF file are rearranged, many of them acquiring not only a new file position, but also a new PDFObject number. At the end of the save operation, PDFL flushes its information of the PD layer and below to synchronize its in-memory state with the new disk file just written.

If the document has a signature, it will be saved incrementally regardless of the full save flag. This is required to preserve the exact contents of the document at the time of signing.

Exceptions

pdErrAfterSave
—

is raised if the save was completed successfully, but there were problems cleaning up afterwards. The document is no longer consistent and cannot be changed. It must be closed and reopened.

pdErrOpNotPermitted
—

is raised if saving is not permitted. Saving is permitted if either edit or editNotes (see PermissionFlags) is allowed, or you are doing a full save and saveAs is allowed.

pdErrAlreadyOpen
—

is raised if SaveFlags.Full is used, and the file specified by newPath is already open.

Save

void Save(SaveFlags saveFlags, string newPath, ProgressMonitor progressMonitor, CancelProc cancelProc)

Parameters

saveFlags: SaveFlags

A bit field composed of an OR of the SaveFlags values.

newPath: string

The path to which the file is saved. A path must be specified when either SaveFlags.Full or SaveFlags.Copy are used for saveFlags. If SaveFlags.Incremental is specified in saveFlags, then newPath should be NULL. If SaveFlags.Full is specified and newPath is the same as the file's original path, the new file is saved to a file system-determined temporary path, then the old file is deleted and the new file is renamed to newPath.

progressMonitor: ProgressMonitor

a ProgressMonitor that will receive progress information, may be null

cancelProc: CancelProc

a CancelProc, which can return true to cancel the operation, may be null

Returns:

void

Saves a document to disk. 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 newPath.

If the document was created with Document, at least one page must be added using CreatePage() orInsertPages() before a PDF Viewer can save the document.

A full save with linearization optimizes the PDF file. During optimization, all objects in a PDF file are rearranged, many of them acquiring not only a new file position, but also a new PDFObject number. At the end of the save operation, PDFL flushes its information of the PD layer and below to synchronize its in-memory state with the new disk file just written.

If the document has a signature, it will be saved incrementally regardless of the full save flag. This is required to preserve the exact contents of the document at the time of signing.

Exceptions

pdErrAfterSave
—

is raised if the save was completed successfully, but there were problems cleaning up afterwards. The document is no longer consistent and cannot be changed. It must be closed and reopened.

pdErrOpNotPermitted
—

is raised if saving is not permitted. Saving is permitted if either edit or editNotes (see PermissionFlags) is allowed, or you are doing a full save and saveAs is allowed.

pdErrAlreadyOpen
—

is raised if SaveFlags.Full is used, and the file specified by newPath is already open.

Secure

void Secure(PermissionFlags permissions, string ownerPassword, string userPassword)

Parameters

permissions: PermissionFlags

an "OR" of the types of PDF document specified by Permissions:

ownerPassword: string

optional PDF document owner password; pass null if not used.

userPassword: string

optional PDF document user password; pass null if not used.

Returns:

void

Secure the PDF document securely with password(s).

If the document has a security handler, it is retained. If the document does not have a security handler, it is assigned the "Standard" security handler with a 16-bit encryption key length. Access permissions as well as owner and user passwords are assigned to the PDF document. This method by default encrypts PDF's content as well as its metadata. To make selective encryption use appropriate overload of Secure() method.

The document must be saved for the changes to take effect. A full save is required.

Secure

void Secure(PermissionFlags permissions, string ownerPassword, string userPassword, EncryptionType encryptionType)

Parameters

permissions: PermissionFlags

an "OR" of the types of PDF document specified by Permissions:

ownerPassword: string

optional PDF document owner password; pass null if not used.

userPassword: string

optional PDF document user password; pass null if not used.

encryptionType: EncryptionType

Encryption type to be used for securing the document.

Returns:

void

Secure the PDF document securely with password(s).

The security handler used for the document depends on the encryption type specified. Access permissions as well as owner and user passwords are assigned to the PDF document. This method by default encrypts PDF's content as well as its metadata. To make selective encryption use appropriate overload of Secure() method.

The document must be saved for the changes to take effect. A full save is required.

Secure

void Secure(PermissionFlags permissions, string ownerPassword, string userPassword, EncryptionType encryptionType, bool encryptMetadata)

Parameters

permissions: PermissionFlags

an "OR" of the types of PDF document specified by Permissions:

ownerPassword: string

optional PDF document owner password; pass null if not used.

userPassword: string

optional PDF document user password; pass null if not used.

encryptionType: EncryptionType

Encryption type to be used for securing the document.

encryptMetadata: bool

A flag that indicates whether document metadata will be encrypted.

Returns:

void

Secure the PDF document securely with password(s).

The security handler used for the document depends on the encryption type specified. Access permissions as well as owner and user passwords are assigned to the PDF document. This method allows selective encryption. Depending on encryptMetadata parameter, it may or may not encrypt PDF's metadata.

The document must be saved for the changes to take effect. A full save is required.

SetInfo

void SetInfo(string infoname, string infovalue)

Parameters

infoname: string

The name of metadata to be set

infovalue: string

The value for metadata which will be set

Returns:

void

Sets metadata information in a PDF document.

SetXMPMetadataArrayItem

void SetXMPMetadataArrayItem(string namespaceName, string namespacePrefix, string path, int index, string newValue)

Parameters

namespaceName: string

The XML namespace URI for the schema in which the property is to be found.

namespacePrefix: string

A brief string to be used as an abbreviation when creating the XML representation of the property. This string must not be empty.

path: string

The name of the simple property to be modified.

index: int

The index in the metadata property array associated with the property.

newValue: string

The new XML text value for the property.

Returns:

void

Sets the value of an XMP metadata array item, associated with a document, based on an index.

SetXMPMetadataProperty

void SetXMPMetadataProperty(string namespaceName, string namespacePrefix, string path, string newValue)

Parameters

namespaceName: string

The XML namespace URI for the schema in which the property is to be found.

namespacePrefix: string

A brief string to be used as an abbreviation when creating the XML representation of the property. This string must not be empty.

path: string

The name of the simple property to be modified.

newValue: string

The new XML text value for the property.

Returns:

void

Sets the value of an XMP metadata property associated with a document. The XMP metadata represents all the properties in pdDoc object's Info dictionary, and can also contain properties that are not in the Info dictionary.

Unsecure

void Unsecure()

Returns:

void

Remove security handler from the PDF document.

If the document has a security handler, it is removed. If the document does not have a security handler, this method does nothing.

To remove the security handler, you must hold the PermissionRequestOperation.Secure permission, which you can obtain via Document.PermRequest. This call will throw an ApplicationException if you do not hold the Secure permission.

The document must be saved for the changes to take effect. A full save is required.

Exceptions

ApplicationException
—

if you do not hold the PermissionRequestOperation.Secure permission.

Watermark

void Watermark(Page page, WatermarkParams watermarkParams)

Parameters

page: Page

The page to be added as a watermark.

watermarkParams: WatermarkParams

Structure specifying how the watermark should be added to the document.

Returns:

void

Adds a Page as a watermark to a page range in the given document.

Watermark

void Watermark(WatermarkTextParams watermarkTextParams, WatermarkParams watermarkParams)

Parameters

watermarkTextParams: WatermarkTextParams

Structure describing the text-based watermark to be added.

watermarkParams: WatermarkParams

Structure specifying how the watermark should be added to the document.

Returns:

void

Adds a text-based watermark to a page range in the given document.