What it does
This node allows you to modify the metadata embedded in a PDF document. Metadata includes information such as the document’s title, language, author, subject, keywords, creator, producer, modification date, and creation date. You can insert static values or dynamically reference text strings.
Updating metadata improves document management, compliance, and accessibility, making it easier to organize, search, and interpret documents—especially in automated workflows or assistive technologies.
Use it for
- Adding or correcting metadata in your documents.
- Dynamically inserting different metadata for different documents using the same template.
How to use it
- Drag and drop the node from the Node Library into your template:
Node Library > Folder Document - Connect the node with other nodes in the Execution Flow of your template. If needed, connect Extract Text Nodes to the appropriate input ports to supply dynamic string values.
- Specify the settings in the Node Properties task pane.
Node Input
Use the Extract Text Node to retrieve specific sequences of strings from your document and pass them as dynamic input to the following input ports of this node, if needed:
- Titles
- Languages
- Authors
- Subjects
- Keywords
- Creators
- Producers
This is especially useful when metadata values such as title, author, or subject vary between documents and need to be populated automatically.
Node Output
Outputs the updated PDF metadata after processing.
Node Properties
Tip: keep or delete metadata
If you want to keep an existing metadata entry in your documents, simply leave the expression field empty.
If you want to delete a specific metadata entry without replacing it with new content, enter:
null
This will remove the entry without overwriting it.
Node Name
You can assign a custom name to the node to help identify its purpose within your template.
Title
Specify the title of the document. This is displayed in PDF viewers and used for indexing.
Expected return type: string
Example 1: Static
"Invoice"
Sets the title to "Invoice".
Example 2: Dynamic
"Invoice No. " concat titles[0]
Uses "Invoice No. " as a static text and adds the first string of the connected sequence of strings (e.g., the invoice number).
Language(s)
Define the primary language(s) of the document content using standard language codes (e.g., en, de, fr).
If you want to convert documents in different languages using the same template, you can connect a node that contains a sequence of strings as reference to the Languages input port. This reference should vary depending on the language used in the document, allowing axesFlip to determine the correct language automatically.
Expected return type: sequence of strings
Example 1: Static
If all your documents use the same language, simply enter the language code(s) as a strings in a sequence.
["en-US"]
For documents in American English.
["en","de","es"]
For multilingual documents (e.g., instruction manuals with translations) with English, German and Spanish.
Example 2: Dynamic
If your documents are in different languages, enter an expression that determines the language dynamically based on the reference strings provided by the connected Languages input node.
["Rechnung"] in languages ? ["de"] : ["en"]
If the reference sequence of strings contains the exact string "Rechnung", then use "de", else use "en".
"Rech" in languages[0] ? ["de"] : ["en"]
If the first string in the reference sequence contains the substring "Rech", then use "de", else use "en".
Example 3: Concatenated conditions
You can also concatenate ternary operators.
["Rechnung"] in languages ? ["de"] : ["Invoice"] in languages ? ["en"] : ["es"]
If the reference sequence contains the exact string "Rechnung", use "de", else if the reference sequence contains the exact string "Invoice", use "en", else use "es".
Author(s)
Specify the author(s) of the document.
Expected return type: sequence of strings
Example 1: Static
["Maxi Muster","Tessa Test"]
Adds the authors "Maxi Muster" and "Tessa Test".
Example 2: Dynamic
[authors[0]]
Uses the first string of the connected sequence of strings.
Subject
Provide a brief description or summary of the document’s topic or purpose.
Expected return type: string
Example 1: Static
"This is a summary."
Uses the static text "This is a summary.".
Example 2: Dynamic
subjects[1]
Uses the second string of the connected sequence of strings.
Keywords
List relevant keywords or tags that describe the document’s content.
Expected return type: sequence of strings
Example 1: Static
["insurance","contract","pension"]
Example 2: Dynamic
[keywords[0],keywords[1],"insurance"]
Uses the first and second string of the connected sequence of strings and the static text "insurance".
Creator
Indicate the software or tool originally used to create the document.
Expected return type: string
Example 1: Static
"Microsoft Word"
Example 2: Dynamic
creators[0]
Uses the first string of the connected sequence of strings.
Producer
Specify the software that generated the final PDF file.
Expected return type: string
Example 1: Static
"axesFlip"
Example 2: Dynamic
producers[0]
Uses the first string of the connected sequence of strings.
Modification Date
Use the variables now and utcNow to set the modification date to the current local and UTC timestamps at the time the document is processed by axesFlip.
Alternatively, you can insert a custom date-time string using one of the following XMP-compliant formats:
YYYY-MM-DDThh:mmTZDYYYY-MM-DDThh:mm:ssTZDYYYY-MM-DDThh:mm:ss.sTZD
Format breakdown:
- YYYY = four-digit year
-
MM = two-digit month (
01= January) -
DD = two-digit day of the month (
01to31) -
hh = two digit hour (
00to23) -
mm = two digit minute (
00to59) -
ss = two digit second (
00to59) - s = one or more digits representing fractional seconds
-
TZD = time zone designator (
Z,+hh:mmor-hh:mm). The time zone designator (TZD) is optional in XMP. If omitted, the time zone is considered unknown, and XMP processors should not make assumptions about it.
Available variables:
-
now: current local timestamp -
utcNow: current UTC timestamp
Expected return type: string
Example 1: current local timestamp
now
Uses the current local timestamp.
Example 2: current UTC timestamp
utcnow
Uses the current UTC timestamp.
Example 3: custom timestamp
"2025-10-27T14:31:00+01:00"
Sets the date to 27 October 2025, at 14:31:00 in the UTC+1 time zone.
Creation Date
Use the variables now and utcNow to set the creation date to the current local and UTC timestamps at the time the document is processed by axesFlip.
Available variables:
-
now: current local timestamp -
utcNow: current UTC timestamp
Expected return type: string
Examples: please refer to the examples above for Modification Date