A PDF that leaves the vault should say what it is: PRELIMINARY, Rev C – Released, Qty 4 per assembly, or a QR code that leads back to the record. PDMPublisher Annotations place text, SOLIDWORKS property values, PDM variables, SQL query results, watermarks and QR codes on exported drawing sheets and PDFs, without touching the source SOLIDWORKS drawing. You define each annotation once, and every publish job from the SOLIDWORKS add-in or the PDM Professional task stamps it with the current values.

What annotations do
An annotation is a box of text that PDMPublisher draws onto the exported PDF at publish time. The text can be literal (INTERNAL USE ONLY), a placeholder that resolves to a document value ((Revision), a SOLIDWORKS custom property, a PDM variable such as ($Description)), or the result of a SQL query run against your own database. Each annotation has its own font, size, bold and italic settings, a position expressed as a percentage of the sheet, a sheet rule and an active flag.
Turn the Watermark switch on and PDMPublisher rotates the annotation and makes it semi-transparent so it reads as a stamp across the page instead of covering the drawing content. Turn QR code on and the evaluated value is rendered as a QR code of a given width in millimetres.
The drawing area in the editor is a positioning preview only. Adding or moving an item there does not add a SOLIDWORKS note to the source drawing, so the model and drawing files in the vault stay untouched. Annotations are applied to the PDF as part of the publish pipeline, after the SOLIDWORKS export and before merging.
Why it matters
Drawing title blocks are designed for the engineering department, not for the people who receive a PDF. A supplier needs to know whether the file is quotable or preliminary. A shop floor needs the quantity per assembly next to the drawing, not in a separate BOM. Quality needs the release state and revision visible on every page of an audit package, including the page someone printed and pinned to a machine.
Editing the title block for every export is not an option; it changes the controlled document and requires a check-out. Adding notes in a PDF editor after the fact is manual, unrepeatable and disappears the next time the drawing is republished. Annotations move that step into the publish job itself. The same profile or task that produces the PDF stamps it, using values read at that moment, so the stamp is always true for that output.
Watermarks in particular solve a control problem: a PDF exported from a file in the Under Review state can be watermarked NOT FOR PRODUCTION by the task attached to that transition, while the task on the Released transition exports the same drawing clean. The drawing never changes; only the output does.
- Release status watermarks driven by the workflow transition that runs the job.
- Revision and date stamps that stay correct because they are evaluated per publish.
- BOM quantity notes on each component drawing of a merged assembly package.
- Customer or project numbers pulled from the data card, or from an ERP database through a SQL query.
- QR codes that encode a part number, a URL or any evaluated value for scanning on the shop floor.
How it works, step by step
- You open the annotation editor: in the add-in, PDMPublisher > Annotations from the CommandManager tab, using the command arrow to pick a named Publish profile; in the task, the Annotations page of the PDMPublisher task in the PDM Administration tool.
- You add one annotation per note or watermark with Add annotation. New annotations appear on the page preview, are active by default, and can be edited, positioned, toggled or turned into a watermark.
- You type the annotation text and insert placeholders from the value menu. In the add-in the menu lists SOLIDWORKS custom properties and supported values from the active document; in the task it lists PDM variables from the vault. For database values you add a SQL value and edit its query.
- You format each annotation with its own font, size, bold and italic. The selected annotation is highlighted so you know which one you are editing.
- You position it by dragging on the preview or by entering Position X / Y (%). X is a percentage of sheet width, Y of sheet height. Copy X,Y can take the position of a selected SOLIDWORKS drawing note.
- You choose the Sheets rule: all sheets, the first sheet, or a comma-separated list of named sheets.
- You save with OK. In the add-in the collection is stored in the selected Publish profile; in the task it is stored in the task definition.
- At publish time, PDMPublisher exports each drawing to PDF, evaluates every active annotation for the document being processed, draws the text, watermark or QR code at the configured position on the matching sheets, then continues with merging, bookmarks and archiving as configured.

Every control in the annotation editor
The editor is the same in both products apart from where placeholder values come from. The labels below are the add-in’s; the task page groups the same settings as Add Annotation, Annotation Text, SQL Query Placeholders, Text Formatting, Watermark, Active, Position and Sheets.
| Control | What it does | Notes / default |
|---|---|---|
| Add annotation | Adds a new annotation box to the selected profile or task. | Use one annotation per note or watermark. New annotations are active by default. |
| Annotation text | Literal text plus placeholders evaluated during publishing. | Value menu lists SOLIDWORKS custom properties and active-document values (add-in) or PDM variables (task). |
| SQL value / Edit SQL Query | Adds a value fetched from SQL Server; the pencil icon opens the query editor with connection string, query, Test Query and Output. | Query uses ($SQL-Filename), ($SQL-Part), ($SQL-Assembly) or ($SQL-Drawing). |
| Font and size | Selects the typeface and point size for this annotation. | Font list shows installed fonts; size list offers preset points from 8 to 100. |
| Bold / Italic | Applies emphasis to the annotation text. | Per annotation. |
| Watermark | Renders the annotation as a watermark: rotated and semi-transparent. | Use for review copies, preliminary documents, internal use or release status. |
| Show annotation (Active) | Includes the annotation during export. Clear it to keep the definition without publishing it. | On by default. State is saved in the profile. |
| QR code | Renders the evaluated annotation value as a QR code. | Add-in editor control. |
| Width (mm) | Sets the QR code or annotation width in millimetres. | Default shown as 50 mm. |
| Drawing background | Controls the drawing background used by the positioning preview. | Preview only; does not affect output. |
| Show placeholders | Shows placeholder names in the preview instead of evaluated values. | Useful to check which placeholder sits where. |
| Copy X,Y | Copies the position of the selected SOLIDWORKS drawing note into the X and Y fields. | Add-in; requires a drawing note selected in SOLIDWORKS. |
| Position X / Y (%) | Positions the annotation as a percentage of sheet width and height. | Default 50 / 50 (sheet center). Drag on the preview as an alternative. |
| Sheets | Chooses which drawing sheets receive the annotation. | All sheets, First sheet or These sheets. |
| Names separated by comma | Limits a These sheets selection to the listed sheet names. | Example: Sheet1, Flat Pattern. |
| Import… / Export… | Saves or loads the annotation collection as an .edmtdf file. | Import replaces the current collection for the selected profile. |
| OK / Cancel | Saves the profile changes or closes without saving. | Profile changes are kept only after OK. |
Placeholders in annotation text
Annotation text uses the same placeholder engine as filenames and export locations. Built-in placeholders are shown in the >... menu; PDM variables use the ($VariableName) form and are listed in the PDM Variables submenu. In the add-in, SOLIDWORKS custom properties of the active document are offered directly. The table lists the tokens most often used in stamps and watermarks; the SQL placeholders are separate because they are replaced inside the query before it runs, not in the visible text.
| Placeholder | Meaning | Example |
|---|---|---|
(FileNameWithoutExtension) | Source filename without extension. | Bracket |
(Revision) | Current PDM revision; empty when the file has none. | B |
(Version) | Current PDM file version number. | 12 |
(State) | Current PDM workflow state. | Released |
(ConfigurationName) | Configuration being exported; @ becomes At. | Default |
(BOMQuantity) | Quantity calculated from the selected BOM template and reference data. | 4 |
(TopAssemblyName) | Top-level file that launched the job, without extension. | Speaker |
(Date) | Date on the processing host, short format with - separators. | 8-13-2026 |
(User) / (LaunchingUser) | PDM user processing the task / PDM user who launched it. | TaskHostUser / jsmith |
($VariableName) | PDM data card variable for the configuration being processed. | ($ProjectNumber) → P-24017 |
($SQL-Filename) | In a SQL query: current filename with its extension. | Bracket.sldprt |
($SQL-Part) | In a SQL query: filename changed to .sldprt. | Bracket.sldprt |
($SQL-Assembly) | In a SQL query: filename changed to .sldasm. | Full_Grill_Assembly.sldasm |
($SQL-Drawing) | In a SQL query: filename changed to .slddrw. | Bracket.slddrw |
Worked examples. Text
Rev (Revision) - (State) - (Date)rendersRev B - Released - 8-13-2026. TextQTY (BOMQuantity) per (TopAssemblyName)rendersQTY 4 per Speakeron each component drawing of a merged package. A SQL value with querySELECT ProjectNumber FROM FileProperties WHERE FileName = '($SQL-Filename)'runs asWHERE FileName = 'Bracket.sldprt'and prints the returned project number.
SQL query placeholders
When the value you need lives in a database rather than on the data card, add a SQL value to the annotation and select the pencil icon to open Edit SQL Query. Enter a SQL Server connection string, for example Server=localhost;Database=TestPDMSql;Trusted_Connection=True;, then a query that includes the placeholder matching the record in your database. Use ($SQL-Assembly) when the row is keyed by the assembly filename even if the annotation lands on an exported drawing.
Select Test Query and confirm the expected value appears under Output. The test dialog has no publish-job file context, so replace the placeholder with a real filename while testing, then put the placeholder back before saving. In the add-in, the placeholder is evaluated for the active document or the reference currently being published. Reusable connections can also be kept under PDMPublisher > Settings > External Sources, where Add, Edit / Test and Delete maintain named SQL Server sources shared by property, formula, filename and annotation menus.
Use a database account with only the permissions needed to read the annotation data. Credentials stay local and are not included in exported settings or PIN shares; re-enter them after importing a configuration on another computer, and never place passwords in query text, profile names, formulas or annotations.
Set it up in the SOLIDWORKS add-in
- Open the drawing, part or assembly in SOLIDWORKS. For a drawing, the active document supplies the custom properties offered in the value menu.
- On the PDMPublisher CommandManager tab select Annotations. Use the command arrow to choose the Publish profile whose annotations you want to edit.
- Select Add annotation. A new box appears on the preview.
- Type the text and insert placeholders or a SQL value from the value menu. Select Show placeholders if you want the preview to show token names instead of values.
- Set font, size, Bold and Italic. Enable Watermark for a rotated, semi-transparent stamp, or QR code with a Width (mm) for a scannable code.
- Drag the box or enter Position X / Y (%). To match an existing note, select that note in the SOLIDWORKS drawing and use Copy X,Y.
- Choose Sheets:
All sheets,First sheetorThese sheetswith names separated by comma. - Repeat for each note. Clear Show annotation on any annotation you want to keep but not publish right now.
- Select OK. Then publish with PDMPublisher > Publish using the same profile, with
PDFselected in File formats. Check the result in Publishing results and open the PDF.

Set it up in the PDM Professional task
- In the SOLIDWORKS PDM Administration tool, open your PDMPublisher task under Tasks, or create one with New Task… and select PDMPublisher on the Add-in page.
- On the Options page make sure
pdfis selected in File Formats; annotations are applied to exported PDF documents. - Open the Annotations page. The annotation table below the toolbar lists the annotations for this task and selects the one you are editing.
- Select Add Annotation, enter the Annotation Text and insert PDM variables from the menu. For database values, add a SQL value and configure its query with the
($SQL-...)placeholders. - Set Text Formatting, enable Watermark where needed, set Position by dragging or with X/Y percentages, and choose the Sheets rule.
- Leave Active on for annotations that should print; clear it to keep an annotation on standby.
- Click OK to save the task. Attach it to the workflow transition whose output should carry the stamp, run it from the right-click Tasks menu, or schedule it.
A common pattern is two tasks: one on the transition into a review state with a PRELIMINARY watermark, and one on the transition into Released without it. The source drawing is the same; only the task’s annotations differ.
Recipes
- Preliminary watermark. Text
PRELIMINARY - NOT FOR PRODUCTION, font size 72, Bold, Watermark on, Position X 50 / Y 50, SheetsAll sheets. Attach the task to the transition into the review state. - Release stamp on the first sheet. Text
Released Rev (Revision) on (Date) by (LaunchingUser), size 12, Watermark off, X 85 / Y 5, SheetsFirst sheet. Run on the Released transition. - Quantity note for merged packages. Text
Qty (BOMQuantity) in (TopAssemblyName), size 14, X 90 / Y 95, SheetsAll sheets. Combine with Merge exported PDFs into one master PDF and a BOM Template with the RefCount column in the task. - QR code back to the record. Text
($Document Number)or a URL built from it, QR code on, Width (mm) 25, X 5 / Y 5, SheetsFirst sheet.
Tips, limits and troubleshooting
- Annotation does not appear. Check that Show annotation (Active) is on, that
PDFis selected in File formats, and that the Sheets rule matches the sheet names actually exported. Named-sheet rules are case-sensitive to what the drawing contains; use Show placeholders and the log to verify. - Placeholder prints empty. An empty or unavailable PDM variable evaluates to an empty string. Confirm the value on the data card for the configuration being processed; for a drawing with an empty value, PDMPublisher may read the variable from the matching part or assembly.
- SQL value returns nothing. A successful connection does not guarantee every document returns a row. Test with a representative filename in Edit SQL Query and define what the annotation should show when the result is empty.
- Annotation lands in the wrong place on some sheets. X and Y are percentages of the sheet size, so mixed sheet sizes place the stamp proportionally. Use separate annotations with
These sheetsrules when sheets need different positions. - Imported annotations replaced my collection. Import replaces the annotations currently shown for the selected profile. Export the existing set or the whole profile to a
.pdmpublisherprofilefile first. - Credentials missing after import. SQL connection secrets are not exported, uploaded or shared through PINs. Re-enter them on the destination computer.
- Community Edition. Annotations are available in the free add-in; the Community limits apply to formats (PDF, DXF, STEP) and to 5 references per run.
- Logs. In the add-in, open PDMPublisher > Logs, filter by Warnings and use Save… before contacting support. In the task, enable Vault Activity Logs and use Open Log File from the Task Details tab.
Availability
Available in PDMPublisher for SOLIDWORKS (the add-in) and PDMPublisher for PDM Professional (the task). Annotation controls are shared by the SOLIDWORKS add-in and the PDM Professional task. The add-in reads property values from the active document and stores annotations in the selected Publish profile; the task reads PDM variables from the vault task context and stores annotations in the task definition.
Documentation and related features
- Publishing Annotations in the SOLIDWORKS add-in
- Add Annotation (task and add-in reference)
- Merge multiple drawings into one PDF
- PDF bookmarks
- SOLIDWORKS drawing documents
- Conditional assembly processing
- External sources and formulas
- Publishing profiles and company settings
- Run as a SOLIDWORKS PDM task
Frequently asked questions
How do I add a watermark to a SOLIDWORKS drawing PDF automatically?
Open PDMPublisher > Annotations (add-in) or the task’s Annotations page, add an annotation with the watermark text, enable Watermark, position it and choose the sheets. Every PDF published with that profile or task is stamped.
Can the watermark text change with the PDM workflow state?
Yes. Use the (State) placeholder in the text, or configure different tasks on different transitions, for example a PRELIMINARY watermark on the review transition and none on the Released transition.
Does an annotation modify my SOLIDWORKS drawing?
No. The editor’s drawing area is a positioning preview only. Annotations are drawn onto the exported PDF; the source drawing is not changed.
Can I put a SOLIDWORKS custom property or PDM variable on the PDF?
Yes. The value menu lists SOLIDWORKS custom properties from the active document in the add-in and PDM variables in the task, plus built-in placeholders such as (Revision), (Date) and (BOMQuantity).
How do I get annotation text from an external database?
Add a SQL value to the annotation, open Edit SQL Query, enter the SQL Server connection string and a query using ($SQL-Filename), ($SQL-Part), ($SQL-Assembly) or ($SQL-Drawing), then Test Query.
Can PDMPublisher add a QR code to a PDF?
Yes. In the add-in’s Annotations editor, enable QR code on an annotation and set Width (mm). The evaluated annotation value is rendered as the QR code.
How do I apply an annotation only to the first sheet?
Set the annotation’s Sheets rule to First sheet. Use These sheets with names separated by comma for specific sheets, or All sheets for every page.