CHAPTER 1. Basics

Cpdf.fromFile(String, String)

Loads a PDF file from a given file. Supply a user password (possibly blank) in
case the file is encrypted. It won't be decrypted, but sometimes the password
is needed just to load the file.

Cpdf.fromFileLazy(String, String)

Loads a PDF from a file, doing only minimal parsing. The objects will be read
and parsed when they are actually needed. Use this when the whole file won't be
required. Also supply a user password (possibly blank) in case the file is
encrypted. It won't be decrypted, but sometimes the password is needed just to
load the file.

Cpdf.fromMemory(Byte[], String)

Loads a file from memory given any user password.

Cpdf.fromMemoryLazy(IntPtr, Int32, String)

Loads a file from memory, given a pointer and a length, and the user password,
but lazily like fromFileLazy. The caller must use AllocHGlobal / Marshal.Copy /
FreeHGlobal itself. It must not free the memory until the PDF is also gone.

Cpdf.startEnumeratePDFs

Cpdf.enumeratePDFsKey(Int32)

Cpdf.enumeratePDFsInfo(Int32)

Cpdf.endEnumeratePDFs

To enumerate the list of currently allocated PDFs, call startEnumeratePDFs
which gives the number, n, of PDFs allocated, then enumeratePDFsInfo and
enumeratePDFsKey with index numbers from 0...(n - 1). Call endEnumeratePDFs to
clean up.

Cpdf.ptOfCm(Double)

Converts a figure in centimetres to points (72 points to 1 inch)

Cpdf.ptOfMm(Double)

Converts a figure in millimetres to points (72 points to 1 inch)

Cpdf.ptOfIn(Double)

Converts a figure in inches to points (72 points to 1 inch)

Cpdf.cmOfPt(Double)

Converts a figure in points to centimetres (72 points to 1 inch)

Cpdf.mmOfPt(Double)

Converts a figure in points to millimetres (72 points to 1 inch)

Cpdf.inOfPt(Double)

Converts a figure in points to inches (72 points to 1 inch)

Cpdf.parsePagespec(Cpdf.Pdf, String)

Parses a page specification with reference to a given PDF (the PDF is supplied
so that page ranges which reference pages which do not exist are rejected).

Cpdf.validatePagespec(String)

Validates a page specification so far as is possible in the absence of the
actual document. Result is true if valid.

Cpdf.stringOfPagespec(Cpdf.Pdf, List{Int32})

Builds a page specification from a page range. For example, the range
containing 1, 2, 3, 6, 7, 8 in a document of 8 pages might yield "1-3, 6-end"

Cpdf.blankRange

Creates a range with no pages in.

Cpdf.range(Int32, Int32)

Builds a range from one page to another inclusive. For example, range(3, 7)
gives the range 3, 4, 5, 6, 7

Cpdf.all(Cpdf.Pdf)

The range containing all the pages in a given document.

Cpdf.even(List{Int32})

Makes a range which contains just the even pages of another range.

Cpdf.odd(List{Int32})

Makes a range which contains just the odd pages of another range.

Cpdf.rangeUnion(List{Int32}, List{Int32})

Makes the union of two ranges giving a range containing the pages in range a
and range b.

Cpdf.difference(List{Int32}, List{Int32})

Makes the difference of two ranges, giving a range containing all the pages in
a except for those which are also in b.

Cpdf.removeDuplicates(List{Int32})

Deduplicates a range, making a new one.

Cpdf.rangeLength(List{Int32})

Gives the number of pages in a range.

Cpdf.rangeGet(List{Int32}, Int32)

Gets the page number at position n in a range, 
where n runs from 0 to rangeLength - 1.

Cpdf.rangeAdd(List{Int32}, Int32)

Adds the page to a range, if it is not already
there.

Cpdf.isInRange(List{Int32}, Int32)

Returns true if the page is in the range, 
false otherwise.

Cpdf.pages(Cpdf.Pdf)

Returns the number of pages in a PDF.

Cpdf.pagesFast(String, String)

Returns the number of pages in a given PDF, with given user password. It tries
to do this as fast as possible, without loading the whole file.

Cpdf.toFile(Cpdf.Pdf, String, Boolean, Boolean)

Writes the file to a given filename. If linearize is true, it will be
linearized if a linearizer is available. If make_id is true, it will be given a
new ID.

Cpdf.toFileExt(Cpdf.Pdf, String, Boolean, Boolean, Boolean, Boolean, Boolean)

Writes the file to a given filename. If make_id is true, it will be given a new
ID.  If preserve_objstm is true, existing object streams will be preserved. If
generate_objstm is true, object streams will be generated even if not
originally present. If compress_objstm is true, object streams will be
compressed (what we usually want). WARNING: the pdf argument will be invalid
after this call, and should be not be used again.

Cpdf.toMemory(Cpdf.Pdf, Boolean, Boolean)

Writes a PDF file and returns as an array of bytes.

Cpdf.isEncrypted(Cpdf.Pdf)

Returns true if a documented is encrypted, false otherwise.

Cpdf.decryptPdf(Cpdf.Pdf, String)

Attempts to decrypt a PDF using the given user password. An exception is raised
if the decryption fails.

Cpdf.decryptPdfOwner(Cpdf.Pdf, String)

Attempts to decrypt a PDF using the given owner password. Raises an exception
if the decryption fails.

Cpdf.Permission

Permissions

Cpdf.Permission.NoEdit

Cannot edit the document

Cpdf.Permission.NoPrint

Cannot print the document

Cpdf.Permission.NoCopy

Cannot copy the document

Cpdf.Permission.NoAnnot

Cannot annotate the document

Cpdf.Permission.NoForms

Cannot edit forms in the document

Cpdf.Permission.NoExtract

Cannot extract information

Cpdf.Permission.NoAssemble

Cannot assemble into a bigger document

Cpdf.Permission.NoHqPrint

Cannot print high quality

Cpdf.EncryptionMethod

Encryption methods

Cpdf.EncryptionMethod.Pdf40bit

40 bit RC4 encryption

Cpdf.EncryptionMethod.Pdf128bit

128 bit RC4 encryption

Cpdf.EncryptionMethod.Aes128bitfalse

128 bit AES encryption, do not encrypt metadata

Cpdf.EncryptionMethod.Aes128bittrue

128 bit AES encryption, encrypt metadata

Cpdf.EncryptionMethod.Aes256bitfalse

Deprecated. Do not use for new files

Cpdf.EncryptionMethod.Aes256bittrue

Deprecated. Do not use for new files

Cpdf.EncryptionMethod.Aes256bitisofalse

256 bit AES encryption, do not encrypt metadata

Cpdf.EncryptionMethod.Aes256bitiosotrue

256 bit AES encryption, encrypt metadata

Cpdf.toFileEncrypted(Cpdf.Pdf, Cpdf.EncryptionMethod, List{Cpdf.Permission},
String, String, Boolean, Boolean, String)

Writes a file as encrypted.

Cpdf.toFileEncryptedExt(Cpdf.Pdf, Cpdf.EncryptionMethod, List{Cpdf.Permission},
String, String, Boolean, Boolean, Boolean, Boolean, Boolean, String)

Writes a file as encrypted with extra parameters. WARNING: the pdf argument
will be invalid after this call, and should not be used again.

Cpdf.hasPermission(Cpdf.Pdf, Cpdf.Permission)

Returns true if the given permission
(restriction) is present.

Cpdf.encryptionKind(Cpdf.Pdf)

Returns the encryption method currently in use on
a document.