HPS::Publish::DocumentKey

class HPS::Publish::DocumentKey : public HPS::Sprocket

The DocumentKey class is a smart pointer to a Publish PDF document. It allows direct interaction with a PDF document.

Public Functions

DocumentKey &AddAttachment(char const *in_filename, char const *in_description)

Adds an attachment to the document. If there is an existing attachment on the document with the given filename, it will get overwritten. This corresponds to the value that will be passed to A3DPDFDocumentAddFileAttachment.

Parameters
  • in_filename – UTF8-encoded filename of the file to be attached.

  • in_description – UTF8-encoded description of the file to be attached.

Returns

A reference to this DocumentKey.

DocumentKey &AddAttachments(size_t in_count, UTF8 const in_filenames[], UTF8 const in_descriptions[])

Adds a list of attachments to the document. If there is an existing attachment on the document with a filename which is in the given list, it will get overwritten. These correspond to values that will be passed to A3DPDFDocumentAddFileAttachment.

Parameters
  • in_count – Size of the following arrays.

  • in_filenames – Filenames of the files to be attached.

  • in_descriptions – Descriptions of the files to be attached.

Returns

A reference to this DocumentKey.

DocumentKey &AddAttachments(UTF8Array const &in_filenames, UTF8Array const &in_descriptions)

Adds a list of attachments to the document. If there is an existing attachment on the document with a filename which is in the given list, it will get overwritten. These correspond to values that will be passed to A3DPDFDocumentAddFileAttachment.

Parameters
  • in_filenames – Filenames of the files to be attached.

  • in_descriptions – Descriptions of the files to be attached.

Returns

A reference to this DocumentKey.

DocumentKey &AddIconImage(char const *in_name, ImageKit const &in_image)

Adds an icon image to the document. If there is an existing icon image on the document with the given name, it will get overwritten. This corresponds to the value that will be passed to A3DPDFDocumentAddImageAsIcon.

Parameters
  • in_name – UTF8-encoded name of the icon image to be attached.

  • in_imageImage to be attached as an icon.

Returns

A reference to this DocumentKey.

DocumentKey &AddIconImages(size_t in_count, UTF8 const in_names[], ImageKit const in_images[])

Adds icon images to the document. If there is an existing icon image on the document with a name which is in the given list, it will get overwritten. These correspond to the values that will be passed to A3DPDFDocumentAddImageAsIcon.

Parameters
  • in_count – Size of the following arrays.

  • in_names – Names of the icon images to be attached.

  • in_images – Images to be attached as icons.

Returns

A reference to this DocumentKey.

DocumentKey &AddIconImages(UTF8Array const &in_names, ImageKitArray const &in_images)

Adds icon images to the document. If there is an existing icon image on the document with a name which is in the given list, it will get overwritten. These correspond to the values that will be passed to A3DPDFDocumentAddImageAsIcon.

Parameters
  • in_names – Names of the icon images to be attached.

  • in_images – Images to be attached as icons.

Returns

A reference to this DocumentKey.

DocumentKey &AddJavaScript(char const *in_script_name, char const *in_source, Source::Type in_type = Source::Type::Code)

Adds a named JavaScript source or file to the document. If there is an existing script on the document with the given name, it will get overwritten. This corresponds to the value that will be passed to A3DPDFDocumentAddJavascriptFromString.

Parameters
  • in_script_name – UTF8-encoded script name to be added to the document.

  • in_source – UTF8-encoded JavaScript source or file (depending on the following argument) to be added to the document.

  • in_type – The types of the preceding argument. Defaults to Source::Type::Code.

Returns

A reference to this DocumentKey.

DocumentKey &AddJavaScript(size_t in_count, UTF8 const in_script_names[], UTF8 const in_sources[], Source::Type const in_types[])

Adds a list of named JavaScript sources or files to the document. If there is an existing script on the document with a name which is in the given list, it will get overwritten. These correspond to values that will be passed to A3DPDFDocumentAddJavascriptFromString.

Parameters
  • in_count – Size of the following arrays.

  • in_script_names – Script names to be added to the document.

  • in_sources – JavaScript sources and/or files (depending on the corresponding entry in the following argument) to be added to the document.

  • in_types – Types for each item in the preceding argument array.

Returns

A reference to this DocumentKey.

DocumentKey &AddJavaScript(UTF8Array const &in_script_names, UTF8Array const &in_sources, SourceTypeArray const &in_types)

Adds a list of named JavaScript sources or files to the document. If there is an existing script on the document with a name which is in the given list, it will get overwritten. These correspond to values that will be passed to A3DPDFDocumentAddJavascriptFromString.

Parameters
  • in_script_names – Script names to be added to the document.

  • in_sources – JavaScript sources and/or files (depending on the corresponding entry in the following argument) to be added to the document.

  • in_types – Types for each item in the preceding argument array.

Returns

A reference to this DocumentKey.

DocumentKey &AddPage(PageKit const &in_page)

Adds the given page to the document. This will append the page after any existing pages on the document. This corresponds to the value that will be passed to A3DPDFDocumentAppendNewPage or A3DPDFDocumentAppendPageFromPDFFileEx.

Parameters

in_pagePage to add to the document.

Returns

A reference to this DocumentKey.

DocumentKey &AddPages(PageKitArray const &in_pages)

Adds the given pages to the document. This will append the pages after any existing pages on the document. These correspond to values that will be passed to A3DPDFDocumentAppendNewPage or A3DPDFDocumentAppendPageFromPDFFileEx.

Parameters

in_pages – Pages to add to the document.

Returns

A reference to this DocumentKey.

DocumentKey &AddPages(size_t in_count, PageKit const in_pages[])

Adds the given pages to the document. This will append the pages after any existing pages on the document. These correspond to values that will be passed to A3DPDFDocumentAppendNewPage or A3DPDFDocumentAppendPageFromPDFFileEx.

Parameters
  • in_count – Size of the Following array.

  • in_pages – Pages to add to the document.

Returns

A reference to this DocumentKey.

virtual void Assign(DocumentKey const &in_that)

Share the underlying smart-pointer of the DocumentKey source.

Parameters

in_that – The DocumentKey source of the assignment.

Returns

A reference to this DocumentKey.

void Delete()

Closes the PDF document underlying this DocumentKey and frees the associated memory in Publish. This will effectively invalidate all references to the underlying PDF document (including other DocumentKey or PageControl objects which refer to the same document). This will not write the underlying PDF document out to disk.

DocumentKey()

The default constructor creates an uninitialized DocumentKey object. The Type() function will return Type::None.

DocumentKey(DocumentKey &&in_that)

The move constructor creates a DocumentKey by transferring the underlying object of the rvalue reference to this DocumentKey.

Parameters

in_kit – An rvalue reference to a DocumentKey to take the underlying object from.

DocumentKey(DocumentKey const &in_that)

The copy constructor creates a DocumentKey object that shares the underlying smart-pointer of the source DocumentKey.

Parameters

in_that – The source DocumentKey to copy.

bool Equals(DocumentKey const &in_that) const

Check if the source DocumentKey points to the same underlying impl as this DocumentKey.

Parameters

in_that – The source DocumentKey to compare to this DocumentKey.

Returns

true if the objects reference the same impl, false otherwise.

PageControl GetPageControl(size_t in_index)

Returns a control that allows the user to manipulate and query details of a page at the given index in the underlying PDF document.

Parameters

in_index – The index of the page for which to create a PageControl. The index of the first page is 0.

Returns

A PageControl object for the specified page.

PageControl const GetPageControl(size_t in_index) const

Returns a control that allows the user to manipulate and query details of a page at the given index in the underlying PDF document.

Parameters

in_index – The index of the page for which to create a PageControl. The index of the first page is 0.

Returns

A PageControl object for the specified page.

size_t GetPageCount() const

Gets the number of pages in the underlying PDF document.

inline virtual HPS::Type ObjectType() const

This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

Returns

The declared type of the object in question, which may differ from the true, underlying type.

bool operator!=(DocumentKey const &in_that) const

Check if the source DocumentKey points to a different impl than this DocumentKey.

Parameters

in_that – The source DocumentKey to compare to this DocumentKey.

Returns

true if the objects reference different impls, false otherwise.

DocumentKey &operator=(DocumentKey &&in_that)

The move assignment operator transfers the underlying object of the rvalue reference to this DocumentKey.

Parameters

in_kit – An rvalue reference to a DocumentKey to take the underlying object from.

Returns

A reference to this DocumentKey.

DocumentKey &operator=(DocumentKey const &in_that)

Share the underlying smart-pointer of the DocumentKey source.

Parameters

in_that – The DocumentKey source of the assignment.

Returns

A reference to this DocumentKey.

bool operator==(DocumentKey const &in_that) const

Check if the source DocumentKey points to the same underlying impl as this DocumentKey.

Parameters

in_that – The source DocumentKey to compare to this DocumentKey.

Returns

true if the objects reference the same impl, false otherwise.

DocumentKey &RemoveAllPages()

Removes all pages from the underlying PDF document.

Returns

A reference to this DocumentKey.

DocumentKey &RemovePage(size_t in_index)

Removes the page at the given index from the underlying PDF document.

Parameters

in_index – The index of the page to remove from the underlying PDF document. The index of the first page is 0.

Returns

A reference to this DocumentKey.

DocumentKey &RemovePages(size_t in_count, size_t const in_indices[])

Removes the pages at the given indices from the underlying PDF document.

Parameters
  • in_count – Size of the following array.

  • in_indices – The indices of pages to remove from the underlying PDF document. The index of the first page is 0.

Returns

A reference to this DocumentKey.

DocumentKey &RemovePages(size_t in_start, size_t in_count)

Removes the specified number of pages starting at the given index from the underlying PDF document.

Parameters
  • in_start – The first index at which to start to removing pages from the underlying PDF document. The index of the first page is 0.

  • in_count – The number of pages to remove from the underlying PDF document.

Returns

A reference to this DocumentKey.

DocumentKey &RemovePages(SizeTArray const &in_indices)

Removes the pages at the given indices from the underlying PDF document.

Parameters

in_indices – The indices of pages to remove from the underlying PDF document. The index of the first page is 0.

Returns

A reference to this DocumentKey.

DocumentKey &SetInformation(char const *in_title, char const *in_author, char const *in_subject, char const *in_creator)

Sets the title, author, subject and creator for this document. These corresponds to the values that will be passed to A3DPDFDocumentInformationData::m_pcTitle, A3DPDFDocumentInformationData::m_pcAuthor, A3DPDFDocumentInformationData::m_pcSubject, and A3DPDFDocumentInformationData::m_pcCreator (respectively).

Parameters
  • in_title – UTF8-encoded title string to set on the document.

  • in_author – UTF8-encoded author string to set on the document.

  • in_subject – UTF8-encoded subject string to set on the document.

  • in_creator – UTF8-encoded creator string to set on the document.

Returns

A reference to this DocumentKey.

DocumentKey &SetPasswords(char const *in_user_password, char const *in_owner_password)

Sets the passwords for this document. This corresponds to the value that will be passed to A3DPDFDocumentSetPassword.

Parameters
  • in_user_password – UTF8-encoded password string required when opening, modifying or printing the document. If an empty string is specified, no password will be required.

  • in_owner_password – UTF8-encoded password string required when changing security features of document. If an empty string is specified, no password will be required.

Returns

A reference to this DocumentKey.

DocumentKey &SetPermissions(PermissionTypeArray const &in_permissions)

Sets document permissions. This correspond to the values that will be passed to A3DPDFDocumentSetDocumentPermissions.

Parameters

in_permissions – The permissions to be set on the document.

Returns

A reference to this DocumentKey.

DocumentKey &SetPermissions(size_t in_count, Permission::Type const in_permissions[])

Sets document permissions. This correspond to the values that will be passed to A3DPDFDocumentSetDocumentPermissions.

Parameters
  • in_count – Size of the following array.

  • in_permissions – The permissions to be set on the document.

Returns

A reference to this DocumentKey.

virtual ~DocumentKey()

Releases a reference to this DocumentKey. When the last reference goes out of scope, the underlying PDF document will be closed and any associated memory will be released by Publish if necessary. This will not write the underlying PDF document out to disk.

Public Static Attributes

static const HPS::Type staticType = HPS::Type::PublishDocumentKey