Topics   All   Mac OS X (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server (Not)   Client   Old   Guides   Examples
New in version: 6.2   6.3   6.4   6.5   7.0   7.1   7.2   7.3   7.4   7.5    Statistic  

PDFKit.SetPDFAttribute

Sets a PDF attribute.

Component Version macOS Windows Server FileMaker Cloud FileMaker iOS SDK
PDFKit 2.3 Yes No Yes, macOS only No No

MBS( "PDFKit.SetPDFAttribute"; PDF; Key; Value )

Parameters

Parameter Description Example value
PDF A PDF reference from PDFKit.Open or other functions. $ref
Key Which information to set. This can be one of the following: Title, Subject, Author, Creator, Producer, Keywords, CreationDate or ModificationDate. "Title"
Value The new value for this key. Either a text for text value or a timestamp for a date. "new value"

Result

Returns "OK" on success or an error message.

Description

Sets a PDF attribute.
While you can pass here a container value or an URL to a PDF file, you should really pass a reference value. Because once you changed the PDF attribute, you want to save the PDF with a call to PDFKit.GetDocument.
New keys in v5.4: OwnerPassword, UserPassword, EncryptionKeyLength, AllowsPrinting and AllowsCopying.

KeyDescription
TitleThe document's title. Optional; if present, the value of this key must be a text.
AuthorThe name of the person who created this document. Optional; if present, the value of this key must be a text.
SubjectThe subject of a document. Optional; if present, the value of this key must be a text.
KeywordsThe keywords for this document. This key is optional. Must be the keywords with comma separated.
CreatorThe name of the application that created the original data used to create this document. Optional; if present, the value of this key must be a text.
OwnerPasswordThe "owner password" of the PDF document. If this key is specified, the document will be encrypted using the value as the owner password; otherwise, the document will not be encrypted. The value of this key must be a text which can be represented in ASCII encoding; only the first 32 bytes will be used for the password. There is no default value for this key. If the value of this key cannot be represented in ASCII, the document will not be created and the creation function will fail.
UserPasswordThe "user password" of the PDF document. If the document is encrypted, then the value of this key will be the user password for the document; if unspecified, the user password will be the empty string. The value of this key must be a text which can be represented in ASCII encoding; only the first 32 bytes will be used for the password. If the value of this key cannot be represented in ASCII, the document will not be created and the creation function will fail.
EncryptionKeyLengthSpecifies the encryption key length in bits; see Table 3.18 "Entries common to all encryption dictionaries", PDF Reference: Adobe PDF version 1.5 (4th ed.) for more info. Optional; if present, the value of this key must be a number with value which is a multiple of 8 between 40 and 128, inclusive. If this key is absent or invalid, the encryption key length defaults to 40 bits.
AllowsPrintingUsed to specify whether the document allows printing when unlocked with the user password. The value of this key must be a boolean. The default value of this key is 1 (true).
AllowsCopyingUsed to specify whether the document allows copying when unlocked with the user password. The value of this key must be a boolean. The default value of this key is 1 (true).

If you need more control about encryption, restrictions or metadata, you may want to checkout our DynaPDF functions in the plugin.

Your changes are only done in memory, so please remember to write modified pdf back to disk, e.g. by using PDFKit.WriteToPath. Or use PDFKit.GetPDFDocument to get a PDF for storing in a container.

Examples

Set title to a PDF:

MBS("PDFKit.SetPDFAttribute"; $ref; "title"; "The new title for this PDF file." )

Rotate page and set title:

# open PDF from container
Set Variable [$ref; Value:MBS("PDFKit.OpenContainer"; combine pdf::result)]
# Set title for PDF
Set Variable [$result; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "Title"; combine pdf::title)]
# Rotate first page by 90°
Set Variable [$result; Value:MBS("PDFKit.SetPDFPageRotation"; $ref; 0; 90)]
# save document to container
Set Field [combine pdf::result; MBS("PDFKit.GetPDFDocument"; $ref; "result.pdf")]
# free memory
Set Variable [$result; Value:MBS("PDFKit.Release"; $ref)]

Create PDF with passwords:

Set Variable [$ref; Value:MBS("PDFKit.OpenContainer"; combine pdf::test1)]
Set Variable [$r; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "OwnerPassword"; "owner")]
Set Variable [$r; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "UserPassword"; "test")]
Set Variable [$r; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "EncryptionKeyLength"; 128)]
Set Variable [$r; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "AllowsPrinting"; 0)]
Set Variable [$r; Value:MBS("PDFKit.SetPDFAttribute"; $ref; "AllowsCopying"; 0)]
Set Field [combine pdf::result; MBS("PDFKit.GetPDFDocument"; $ref; "result.pdf")]
Set Variable [$result; Value:MBS("PDFKit.Release"; $ref)]

See also

Example Databases


PDFKit.SetIgnoreCombineErrors   -   PDFKit.SetPDFPageDisplayAnnotation

Feedback: Report problem or ask question.




Links
MBS Xojo tutorial videos