# `set` Set document properties, viewer preferences, and page labels ## Usage > pdftl `` `set` `...` `output` `` ## Details The `set` operation allows you to modify document-level properties, viewer preferences, logical page labels, and open actions without altering page content. You can provide one or more `key=value` pairs. ### Document Metadata (Auto-syncs Info Dict & XMP Stream) Updates standard metadata properties. pdftl automatically synchronizes these values across both the legacy `/Info` dictionary and the modern PDF 2.0 XMP stream. * **title**: The document's title. * **author**: The name of the person who created the document. * **subject**: The subject of the document. * **keywords**: Comma-separated keywords associated with the document. * **creator**: The application that originally created the document. * **producer**: The tool used to convert the document to PDF. * **creationdate**: Document creation timestamp (ISO 8601 or PDF `D:...` date). * **moddate**: Document modification timestamp (ISO 8601 or PDF `D:...` date). ### Supported Properties * **lang**: The language identifier of the document (e.g., `en-US`). Important for accessibility. * **layout**: The page layout to use when opened. *(SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight, TwoPageLeft, TwoPageRight)* * **mode**: The document view mode when opened. *(UseNone, UseOutlines, UseThumbs, FullScreen, UseOC, UseAttachments)* ### Viewer Preferences (Booleans) These control how the PDF reader UI is presented: * **hide_toolbar**: `true` or `false` * **hide_menubar**: `true` or `false` * **hide_windowui**: `true` or `false` * **fit_window**: `true` or `false` * **center_window**: `true` or `false` * **display_title**: `true` or `false` (Displays the Document Title instead of filename) ### Open Action (`open_action`) Determines the page and zoom level the PDF viewer initially opens to. Syntax: `PageNum[,ViewType,Arg1,Arg2...]` * `open_action=5` (Opens to page 5, leaving the zoom level up to the viewer) * `open_action=2,XYZ,null,null,2.5` (Opens to page 2, zoomed in 2.5x) * `open_action=5,XYZ` (Opens to page 5, trailing nulls are automatically appended) * `open_action=1,Fit` (Opens to page 1, fitting it to the window) * `open_action=""` (Removes the open action entirely) ### Page Labels (`pagelabels`) Logical page labels determine how page numbers are displayed in the PDF viewer (e.g., i, ii, iii, 1, 2, 3, A-1). Syntax: A comma-separated list of rules. Rule format: `[ (Prefix) ][Style][StartNum]` * **StartPage**: 1-indexed physical page number. * **Prefix**: Optional text prefix enclosed in parentheses. * **Style**: Optional numbering style: `r` (roman), `R` (ROMAN), `a` (letters), `A` (LETTERS), `D` (Arabic). * **StartNum**: Optional starting number (defaults to 1). To completely remove custom page labels, use `pagelabels=""`. ## Examples > Set the document title/author, and tell the viewer to display the Title instead of the filename. ``` pdftl in.pdf set title="Q3 Report" author="Jane Doe" display_title=true output out.pdf ``` > Set language to US English and force the PDF to open in a two-column view with bookmarks open. ``` pdftl in.pdf set lang=en-US layout=TwoColumnRight mode=UseOutlines output out.pdf ``` > Force the PDF to automatically open to Page 5 at a 2.5x zoom level. ``` pdftl in.pdf set open_action=5,XYZ,null,null,2.5 output out.pdf ``` > Set complex page labels: pages 1-4 as roman numerals, pages 5-7 as arabic starting at 1, and pages 8 onwards as arabic prefixed with 'A-' and starting at 8. ``` pdftl in.pdf set 'pagelabels=1r,5D,8(A-)D8' output out.pdf ``` **Tags**: metadata, properties, viewer *Source: pdftl.operations.set_props* *Read online: [https://pdftl.readthedocs.io/en/stable/operations/set.html](https://pdftl.readthedocs.io/en/stable/operations/set.html)* *Type: Operation*