@shuji-bonji/pdf-writer-mcp 0.7.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,123 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.9.1] - 2026-07-17
6
+
7
+ Clause-by-clause audit of the v0.9.0 incremental writer against ISO 32000-2,
8
+ performed with pdf-spec-mcp. Two gaps were found and fixed:
9
+
10
+ ### Fixed
11
+
12
+ - **§14.4 (file identifiers)**: the second `/ID` byte string *shall* change
13
+ on every update, but v0.9.0 copied the `/ID` array unchanged. It is now
14
+ recomputed as an MD5 of the file contents — content-based, so
15
+ `SOURCE_DATE_EPOCH` reproducibility is unaffected; the first element
16
+ stays permanent as required.
17
+
18
+ ### Added
19
+
20
+ - **§12.8.2.2 (DocMDP) guard**: annotations are only a permitted change at
21
+ P=3 (default when P is absent is 2). `preserveSignatures` now refuses
22
+ certified documents with P=1 (document final) or P=2 (form fill-in only)
23
+ with a `SIGNED_PDF` error — the incremental update would be byte-legal,
24
+ but validators would flag it as a disallowed change.
25
+ `findDocMdpPermission()` walks the AcroForm dictionaries directly
26
+ (pdf-lib's `getForm()` would create an AcroForm on documents without one).
27
+
28
+ ### Audit notes
29
+
30
+ - Confirmed conforming: §7.5.6 (append-only, changed-objects-only xref,
31
+ `/Prev`, per-update `%%EOF`), §7.5.5 (`/Size` = highest object number + 1
32
+ — the basis of `reserveExistingObjectNumbers`), §7.5.8.1 (files using
33
+ cross-reference streams shall not use `xref`/`trailer` keywords — hence
34
+ the style-following writer).
35
+ - Known remaining gap (tracked as B-7b): §7.5.6 requires carrying over
36
+ *all* previous-trailer entries; pdf-lib only surfaces
37
+ Root/Encrypt/Info/ID, so rare keys (hybrid `XRefStm`, second-class names)
38
+ are dropped.
39
+ - Re-verified after the fixes: 251 tests, `qpdf --check` clean for both
40
+ xref styles, and the really-signed fixture still reports
41
+ `verify_signatures: VALID`.
42
+
43
+ ## [0.9.0] - 2026-07-17
44
+
45
+ First Tier C milestone: **signature-preserving incremental updates** (ADR-11).
46
+
47
+ ### Added
48
+
49
+ - **`add_annotation` `preserveSignatures: true`** — add an annotation to a
50
+ digitally signed PDF **without invalidating its signatures**. Instead of
51
+ pdf-lib's full-file rewrite, the new `services/incremental.ts` appends an
52
+ ISO 32000-1 §7.5.6 incremental update: the original bytes are byte-for-byte
53
+ untouched (so every signature's `/ByteRange` still verifies), and only the
54
+ new/changed objects plus a cross-reference section are appended.
55
+
56
+ - Follows the original file's xref style — classic table *and*
57
+ cross-reference stream (PDF 1.5+) are both supported; mixing styles in
58
+ one file is a spec violation.
59
+ - Objects are serialised with pdf-lib's own `copyBytesInto` (no hand-rolled
60
+ tokenizer); offsets are exact by construction (`original length +
61
+ relative position`).
62
+ - Minimal diff: when `/Annots` is an indirect array only that array is
63
+ redefined, leaving the page object untouched.
64
+ - Tagged PDFs are rejected (`UNSUPPORTED_PDF_FEATURE`) for now — nesting
65
+ the annotation into the structure tree rewrites structure objects this
66
+ first milestone does not track.
67
+ - The `SIGNED_PDF` guard error now suggests `retry_with_preserveSignatures`
68
+ ahead of `allowBreakingSignatures`.
69
+ - Results carry `incremental: true`.
70
+
71
+ **Measured acceptance** (Issue #2's milestone): a really-signed PDF
72
+ (CMS/ETSI.CAdES.detached) annotated with `preserveSignatures` still
73
+ verifies — pdf-verify-mcp reports `verify_signatures: VALID` (digest
74
+ match, cryptographically verified) and `verify_integrity: 2 revisions,
75
+ 1 legal incremental update`. `qpdf --check` is clean for both xref styles.
76
+
77
+ ### Fixed (during development, never released broken)
78
+
79
+ - Incremental object numbering could collide with object-stream containers:
80
+ pdf-lib does not register the container stream / old xref stream as
81
+ indirect objects, so `largestObjectNumber` under-reports on
82
+ `useObjectStreams` files and a new annotation would reuse the container's
83
+ number (qpdf: "supposed object stream N is not a stream"). Fixed by
84
+ `reserveExistingObjectNumbers()`, which reads the active trailer's `/Size`
85
+ before allocating. Pinned by a regression test.
86
+
87
+ ## [0.8.0] - 2026-07-17
88
+
89
+ ### Added
90
+
91
+ - **`tag_form_fields`** — repair the form inside an already-tagged PDF so it
92
+ conforms to PDF/UA-1 (B-6). A tagged PDF that merely *contains* an AcroForm
93
+ fails validation; this tool retrofits the three requirements:
94
+
95
+ - **7.18.4-1**: every Widget annotation is nested in a `Form` structure
96
+ element (`OBJR` + `/StructParent` + ParentTree registration — the same
97
+ machinery `add_annotation` uses for `Annot` elements, now generalised in
98
+ `struct-append.ts`).
99
+ - **7.18.3-1**: pages carrying widgets get `/Tabs /S`.
100
+ - **7.18.1-3**: every field gets a `/TU` (alternate name). Pass `labels`
101
+ with human-readable names (`{"user.name": "氏名"}`); fields without a
102
+ label fall back to the field name and are reported via `warnings`,
103
+ because screen readers announce `/TU` and "user.name" reads poorly.
104
+
105
+ Idempotent: widgets that already have `/StructParent` are skipped, so
106
+ running it twice never duplicates structure elements. Untagged documents
107
+ are rejected (`INVALID_ARGUMENT`) — creating a structure tree from scratch
108
+ is the create tools' job (`tagged: true`) or future Tier C `ensure_tagged`.
109
+ Handles both widget forms pdf-lib produces (`/Kids` children) and merged
110
+ field/widget dictionaries from other producers.
111
+
112
+ **Measured with veraPDF** (`--flavour ua1`): a tagged PDF with an untagged
113
+ form fails exactly 7.18.1-3 / 7.18.3-1 / 7.18.4-1; after `tag_form_fields`
114
+ it is **COMPLIANT (106/106)**.
115
+
116
+ - **Warning for `tagged: true` with the standard font** — found while
117
+ verifying the above: Helvetica is never embedded, so a tagged PDF built
118
+ without `fontPath` always fails PDF/UA-1 7.21.4.1-1. The create tools now
119
+ warn that the output will not validate and point at `fontPath` /
120
+ `PDF_WRITER_FONT`.
121
+
5
122
  ## [0.7.0] - 2026-07-17
6
123
 
7
124
  コードレビュー(2026-07-17)と TASKS.md E 系(コード衛生・family 整合)への
package/README.ja.md CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  ## ツール
14
14
 
15
+ > **ファイルパスはすべて絶対パスで指定してください**(v0.7.0〜)。相対パスと `..` を含むパスは拒否されます — 相対パスは MCP ホストの作業ディレクトリ基準で解決されるため、意図しない場所を指します。対象は `inputPath` / `inputPaths` / `outputPath` / `outputDir` / `fontPath` / `attachmentPath`。100MB を超える入力 PDF も拒否されます。
16
+
15
17
  ### 生成
16
18
 
17
19
  | ツール | 役割 |
@@ -48,18 +50,19 @@ PDF/UA はタイトルを要求するため、`tagged: true` では `title` が
48
50
  | `reorder_pages` | 全ページの順列による並べ替え |
49
51
  | `rotate_pages` | 時計回りに回転(90/180/270)。既存の回転に加算 |
50
52
  | `add_bookmarks` | しおり(アウトライン)の設定。`children` で入れ子にでき、既存のしおりは置換 |
51
- | `add_annotation` | 付箋(`text`)/ ハイライト(`highlight`)/ 矩形(`square`)の注釈を追加。タグ付き PDF では `Annot` 構造要素に内包され PDF/UA 準拠を維持する(`alt` で説明を渡す) |
53
+ | `add_annotation` | 付箋(`text`)/ ハイライト(`highlight`)/ 矩形(`square`)の注釈を追加。タグ付き PDF では `Annot` 構造要素に内包され PDF/UA 準拠を維持する(`alt` で説明を渡す)。`preserveSignatures: true` で**署名済み PDF の署名を保持したまま**追加できる — ISO 32000 の増分更新として末尾追記し、元のバイト列に一切触れない(タグ無し文書のみ) |
52
54
  | `attach_file` | ファイルを埋め込む(`/Names /EmbeddedFiles` + catalog `/AF` + `/AFRelationship`)。PDF/A-3 が要求する形式で、機械可読データを文書に同梱する |
53
55
  | `stamp_page_numbers` | ページ番号を刻む(`{n}` / `{total}`、6 箇所の配置、`pages`、`startAt`)。タグ付き PDF では Artifact になるため準拠を維持する |
54
56
  | `fill_form` | AcroForm に値を記入する。日本語は埋め込みフォントで描画。同時にフラット化も可能 |
55
57
  | `flatten_form` | フォームを静的な内容に焼き込む。タグ付き PDF は既定で拒否(PDF/UA が壊れるため) |
58
+ | `tag_form_fields` | タグ付き PDF 内のフォームを PDF/UA-1 準拠へ修復する。Widget を `Form` 構造要素に内包(7.18.4-1)、`/Tabs S` を設定(7.18.3-1)、代替名 `/TU` を付与(7.18.1-3)。`labels` で人間可読な名前を渡す。冪等なので何度実行しても安全 |
56
59
  | `add_watermark` | 斜めの透かしを重ねる("社外秘" / "DRAFT")。既定で本文の背面。タグ付き PDF では Artifact になる |
57
60
 
58
61
  共通オプション: `outputPath` / `returnBase64` / `allowBreakingSignatures`。
59
62
 
60
63
  ページ指定は `"1,3-5,8-"` 形式(1 始まり。`-3` は先頭から 3 ページまで、`8-` は 8 ページから最終まで)。指定順を保持し、重複は除去します。
61
64
 
62
- > **署名について**: pdf-lib は保存時にファイル全体を再構築するため、編集すると既存の電子署名は必ず無効化されます。`/ByteRange` を含む PDF は既定でエラーとし、`allowBreakingSignatures: true` を指定したときのみ続行します。署名を保持する増分更新はロードマップ参照。
65
+ > **署名について**: pdf-lib は保存時にファイル全体を再構築するため、通常の編集では既存の電子署名は必ず無効化されます。`/ByteRange` を含む PDF は既定でエラーとし、`allowBreakingSignatures: true` で破壊的に続行するか、`add_annotation` に限り `preserveSignatures: true`(v0.9.0)で**署名を保持したまま**増分更新で追加できます。実測: 実署名(CMS)PDF への追加後も pdf-verify-mcp は署名 **VALID** + 追記分を合法な増分リビジョン 1 件と報告します。
63
66
 
64
67
  ## インストール
65
68
 
@@ -118,6 +121,31 @@ PDF/UA はタイトルを要求するため、`tagged: true` では `title` が
118
121
 
119
122
  編集ツールは `font` を除いた同じ形を返します。`split_pdf` は `{ files: [...], count }` を返します。
120
123
 
124
+ ## エラー応答(v0.7.0)
125
+
126
+ エラーは `pdf-reader-mcp` と同じ契約の構造化形式で返します。プログラム判定用の安定した `code` に加え、LLM エージェントがそのまま行動できる `next_actions` を含みます。writer 固有のガードはすべて「明示フラグを足せば再試行できる」形で表現されます:
127
+
128
+ ```jsonc
129
+ {
130
+ "error": "\"/in/signed.pdf\" appears to be digitally signed (/ByteRange found). …",
131
+ "code": "SIGNED_PDF",
132
+ "retryable": true,
133
+ "next_actions": [
134
+ {
135
+ "action": "retry_with_allowBreakingSignatures",
136
+ "reason": "署名を無効化してよい場合のみ…",
137
+ "example": { "allowBreakingSignatures": true }
138
+ }
139
+ ]
140
+ }
141
+ ```
142
+
143
+ コード一覧: `INVALID_ARGUMENT` / `DOC_NOT_FOUND` / `FONT_NOT_FOUND` / `INVALID_PDF` / `ENCRYPTED_PDF` / `UNSUPPORTED_PDF_FEATURE`(XFA)/ `FILE_TOO_LARGE` / `INTERNAL_ERROR`、および writer 固有ガードの `SIGNED_PDF`(`allowBreakingSignatures`)/ `TAGGED_PDF`(`allowBreakingTags`)/ `FONT_REQUIRED`(`fontPath`)/ `MISSING_GLYPH`(`onMissingGlyph`)。
144
+
145
+ ## 決定論的出力(v0.7.0)
146
+
147
+ 環境変数 `SOURCE_DATE_EPOCH`(UNIX 秒。[reproducible-builds.org](https://reproducible-builds.org/docs/source-date-epoch/) の慣習)を設定すると、CreationDate / ModificationDate / XMP の日時が固定され、**同一入力から同一バイト列**が得られます。差分検証・キャッシュ・再現テストに有用です。不正な値は黙殺せずエラーになります。
148
+
121
149
  ## テキスト抽出
122
150
 
123
151
  生成される PDF はテキストの選択・コピー・全文検索・スクリーンリーダ読み上げが可能です。埋め込みサブセットフォントでも pdf-lib が ToUnicode CMap を出力するためで、この性質は回帰テスト(`extract.test.ts` / `render.test.ts`)で担保しています。
@@ -151,8 +179,12 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
151
179
  - [x] 編集系 Tier A 第2波 — しおり・注釈(v0.4.0)
152
180
  - [x] タグ付き PDF / PDF/UA-1 — veraPDF で準拠を確認(v0.5.0)
153
181
  - [x] タグ付き出力での注釈の `Annot` タグ内包(v0.5.1)
154
- - [x] 編集系 Tier B — 添付ファイル(v0.6.0)
155
- - [ ] 編集系 Tier B フォーム記入 / フラット化、透かし、ページ番号スタンプ
182
+ - [x] 編集系 Tier B — 添付ファイル・フォーム記入 / フラット化・透かし・ページ番号スタンプ(v0.6.0)
183
+ - [x] コード衛生・family 整合McpServer + Zod、構造化エラー、絶対パス強制、stdout ガード、tool annotations、決定論的出力(v0.7.0)
184
+ - [x] `tag_form_fields` — タグ付き PDF 内フォームの PDF/UA 修復。veraPDF で COMPLIANT を確認(v0.8.0)
185
+ - [x] Tier C 第1弾 — `add_annotation` の署名保持増分更新。実署名(CMS)で pdf-verify-mcp の VALID を確認(v0.9.0)
186
+ - [ ] Tier C 続き — タグ付き文書の増分更新・他ツールへの展開、`ensure_tagged`、`edit_text`
187
+ - [ ] 出力パイプライン Skill(write → pdf-reader で読み戻し → pdf-verify で品質ゲート)
156
188
  - [ ] 画像の代替テキスト(`Figure` + `/Alt`)
157
189
  - [ ] `.ttc` からのフェイス自動抽出
158
190
  - [ ] 見出し用と本文用のフォント分け(太字フェイス埋め込み)
package/README.md CHANGED
@@ -12,6 +12,8 @@ Part of the PDF family alongside [pdf-reader-mcp](https://github.com/shuji-bonji
12
12
 
13
13
  ## Tools
14
14
 
15
+ > **All file paths must be absolute** (since v0.7.0). Relative paths and paths containing `..` are rejected — a relative path would resolve against the MCP host's working directory, which is not the directory you think it is. This applies to `inputPath`, `inputPaths`, `outputPath`, `outputDir`, `fontPath` and `attachmentPath`. Input PDFs larger than 100 MB are also rejected.
16
+
15
17
  ### Creation
16
18
 
17
19
  | Tool | Purpose |
@@ -48,18 +50,19 @@ PDF/UA mandates a document title, so `tagged: true` requires `title`. `lang` (BC
48
50
  | `reorder_pages` | Reorder by an explicit permutation of all pages |
49
51
  | `rotate_pages` | Rotate clockwise (90/180/270), accumulating over existing rotation |
50
52
  | `add_bookmarks` | Set the outline (bookmarks); nestable via `children`, replaces any existing outline |
51
- | `add_annotation` | Add a sticky note (`text`), `highlight`, or `square` annotation to a page. On tagged PDFs the annotation is nested in an `Annot` element and stays PDF/UA conformant — pass `alt` to describe it |
53
+ | `add_annotation` | Add a sticky note (`text`), `highlight`, or `square` annotation to a page. On tagged PDFs the annotation is nested in an `Annot` element and stays PDF/UA conformant — pass `alt` to describe it. With `preserveSignatures: true`, a **signed PDF keeps its signatures**: the annotation is appended as an ISO 32000 incremental update, leaving the original bytes untouched (untagged documents only) |
52
54
  | `attach_file` | Embed a file (`/Names /EmbeddedFiles` + catalog `/AF` + `/AFRelationship`) — the PDF/A-3 shape for bundling machine-readable data with a document |
53
55
  | `stamp_page_numbers` | Stamp page numbers (`{n}` / `{total}`, six positions, `pages`, `startAt`). Becomes an artifact on tagged PDFs, so conformance holds |
54
56
  | `fill_form` | Fill AcroForm fields. Japanese values via an embedded font; can flatten in the same pass |
55
57
  | `flatten_form` | Flatten a form into static content. Refuses tagged PDFs by default (breaks PDF/UA) |
58
+ | `tag_form_fields` | Repair the form inside a tagged PDF for PDF/UA-1: nest widgets in `Form` structure elements (7.18.4-1), set `/Tabs S` (7.18.3-1), add `/TU` alternate names (7.18.1-3). Pass `labels` with human-readable names; idempotent, so safe to re-run |
56
59
  | `add_watermark` | Overlay a diagonal watermark ("社外秘" / "DRAFT"). Behind the body content by default; artifact on tagged PDFs |
57
60
 
58
61
  Shared options: `outputPath`, `returnBase64`, `allowBreakingSignatures`.
59
62
 
60
63
  Page specs use `"1,3-5,8-"` (1-based; `-3` means up to page 3, `8-` means page 8 to the end). Order is preserved and duplicates are removed.
61
64
 
62
- > **Signatures**: pdf-lib rewrites the whole file on save, so editing always invalidates existing signatures. PDFs containing `/ByteRange` are rejected by default; pass `allowBreakingSignatures: true` to proceed anyway. Signature-preserving incremental updates are on the roadmap.
65
+ > **Signatures**: pdf-lib rewrites the whole file on save, so editing normally invalidates existing signatures. PDFs containing `/ByteRange` are rejected by default; pass `allowBreakingSignatures: true` to proceed destructively — or, for `add_annotation`, pass `preserveSignatures: true` (v0.9.0) to append an incremental update that keeps every signature valid. Measured: after annotating a really-signed PDF, pdf-verify-mcp reports the signature **VALID** and the added bytes as one legal incremental revision.
63
66
 
64
67
  ## Install
65
68
 
@@ -118,6 +121,31 @@ Characters absent from the font (e.g. ✔ U+2714, which Noto Sans JP does not in
118
121
 
119
122
  Editing tools return the same shape without `font`; `split_pdf` returns `{ files: [...], count }`.
120
123
 
124
+ ## Errors (v0.7.0)
125
+
126
+ Errors are structured, following the same contract as `pdf-reader-mcp`: a stable `code` for programs, plus `next_actions` an LLM agent can act on. Writer-specific guards are all expressed as *retryable with an explicit flag*:
127
+
128
+ ```jsonc
129
+ {
130
+ "error": "\"/in/signed.pdf\" appears to be digitally signed (/ByteRange found). …",
131
+ "code": "SIGNED_PDF",
132
+ "retryable": true,
133
+ "next_actions": [
134
+ {
135
+ "action": "retry_with_allowBreakingSignatures",
136
+ "reason": "Only if invalidating the signature is acceptable…",
137
+ "example": { "allowBreakingSignatures": true }
138
+ }
139
+ ]
140
+ }
141
+ ```
142
+
143
+ Codes: `INVALID_ARGUMENT`, `DOC_NOT_FOUND`, `FONT_NOT_FOUND`, `INVALID_PDF`, `ENCRYPTED_PDF`, `UNSUPPORTED_PDF_FEATURE` (XFA), `FILE_TOO_LARGE`, `INTERNAL_ERROR`, and the writer guards `SIGNED_PDF` (`allowBreakingSignatures`), `TAGGED_PDF` (`allowBreakingTags`), `FONT_REQUIRED` (`fontPath`), `MISSING_GLYPH` (`onMissingGlyph`).
144
+
145
+ ## Deterministic output (v0.7.0)
146
+
147
+ Set the `SOURCE_DATE_EPOCH` environment variable (UNIX seconds, per the [reproducible-builds.org](https://reproducible-builds.org/docs/source-date-epoch/) convention) to pin `CreationDate`, `ModificationDate` and XMP timestamps. The same input then yields byte-identical output — useful for diffing, caching, and reproducible tests. Invalid values raise an error rather than being ignored.
148
+
121
149
  ## Text extraction
122
150
 
123
151
  Generated PDFs are selectable, copyable, searchable, and screen-reader accessible: pdf-lib emits a ToUnicode CMap even for embedded subset fonts. This is covered by regression tests (`extract.test.ts`, `render.test.ts`).
@@ -151,8 +179,12 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
151
179
  - [x] Editing Tier A wave 2 — bookmarks and annotations (v0.4.0)
152
180
  - [x] Tagged PDF / PDF/UA-1 — verified by veraPDF (v0.5.0)
153
181
  - [x] Annotations nested in `Annot` tags on tagged output (v0.5.1)
154
- - [x] Editing Tier B — file attachments (v0.6.0)
155
- - [ ] Editing Tier Bform filling/flattening, watermarks, page-number stamping
182
+ - [x] Editing Tier B — file attachments, form filling/flattening, watermarks, page-number stamping (v0.6.0)
183
+ - [x] Code hygiene / family alignment McpServer + Zod, structured errors, absolute-path enforcement, stdout guard, tool annotations, deterministic output (v0.7.0)
184
+ - [x] `tag_form_fields` — PDF/UA repair for forms in tagged PDFs, verified COMPLIANT by veraPDF (v0.8.0)
185
+ - [x] Tier C first milestone — signature-preserving incremental updates for `add_annotation`, verified by pdf-verify-mcp against a real CMS signature (v0.9.0)
186
+ - [ ] Tier C continued — incremental updates for tagged PDFs and more tools, `ensure_tagged`, `edit_text`
187
+ - [ ] Publish-pipeline skill (write → read back with pdf-reader → gate with pdf-verify)
156
188
  - [ ] Images with alt text (`Figure` + `/Alt`)
157
189
  - [ ] Automatic face extraction from `.ttc`
158
190
  - [ ] Separate faces for headings and body (bold face embedding)
package/dist/errors.d.ts CHANGED
@@ -56,6 +56,7 @@ export declare function invalidArg(message: string): PdfWriterError;
56
56
  export declare function toStructuredError(error: unknown): WriterServiceError;
57
57
  /** よく使う next_actions のプリセット(writer のガード解除フラグ群) */
58
58
  export declare const NEXT_ACTIONS: {
59
+ readonly preserveSignatures: () => NextAction;
59
60
  readonly allowBreakingSignatures: () => NextAction;
60
61
  readonly allowBreakingTags: () => NextAction;
61
62
  readonly provideFontPath: () => NextAction;
package/dist/errors.js CHANGED
@@ -47,6 +47,12 @@ export function toStructuredError(error) {
47
47
  }
48
48
  /** よく使う next_actions のプリセット(writer のガード解除フラグ群) */
49
49
  export const NEXT_ACTIONS = {
50
+ preserveSignatures: () => ({
51
+ action: 'retry_with_preserveSignatures',
52
+ reason: '署名を保持したまま、増分更新(元バイト列に触れない末尾追記)で編集できます。' +
53
+ '現在は add_annotation のみ・タグ無し文書のみ対応。"preserveSignatures": true を足して再試行してください',
54
+ example: { preserveSignatures: true },
55
+ }),
50
56
  allowBreakingSignatures: () => ({
51
57
  action: 'retry_with_allowBreakingSignatures',
52
58
  reason: '署名を無効化してよい場合のみ、同じ引数に "allowBreakingSignatures": true を足して再試行してください',
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA8CH,gDAAgD;AAChD,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB,IAAI;IACJ,OAAO;IAHzB,YACE,OAAe,EACC,IAAqB,EACrB,OAAO,GAInB,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;oBAPC,IAAI;uBACJ,OAAO;QAOvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAuB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACnF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC1D,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,uBAAuB,EAAE,GAAe,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,oCAAoC;QAC5C,MAAM,EACJ,oEAAoE;QACtE,OAAO,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE;KAC3C,CAAC;IACF,iBAAiB,EAAE,GAAe,EAAE,CAAC,CAAC;QACpC,MAAM,EAAE,8BAA8B;QACtC,MAAM,EAAE,6DAA6D;QACrE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;KACrC,CAAC;IACF,eAAe,EAAE,GAAe,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EACJ,8FAA8F;QAChG,OAAO,EAAE,EAAE,QAAQ,EAAE,iCAAiC,EAAE;KACzD,CAAC;IACF,wBAAwB,EAAE,GAAe,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,2BAA2B;QACnC,MAAM,EACJ,8FAA8F;QAChG,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;KACvC,CAAC;IACF,aAAa,EAAE,CAAC,IAAa,EAAc,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,mCAAmC;QAC3C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC;CACM,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,12 @@ export async function buildPdf(opts, inputTexts, render) {
46
46
  if (!title) {
47
47
  throw invalidArg('tagged: true requires "title" — PDF/UA (ISO 14289-1, 7.1) mandates a document title.');
48
48
  }
49
+ if (source.isStandard) {
50
+ // veraPDF 実測(2026-07-17): 標準フォントは 7.21.4.1-1(フォント埋め込み)で必ず違反になる
51
+ warnings.push('The standard font (Helvetica) is not embedded, but PDF/UA-1 (7.21.4.1) requires all ' +
52
+ 'fonts to be embedded — this tagged PDF will NOT pass conformance validation. ' +
53
+ 'Pass "fontPath" (or set PDF_WRITER_FONT) to embed a font.');
54
+ }
49
55
  lang = opts.lang;
50
56
  if (!lang) {
51
57
  const inferred = inferLang(applied.texts.join('\n'));
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/services/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/services/builder.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,16 @@
16
16
  * 署名を保持する増分更新(incremental_save)は Tier C の課題。
17
17
  */
18
18
  import { PDFDocument } from 'pdf-lib';
19
- import type { AddAnnotationArgs, AddBookmarksArgs, AddWatermarkArgs, AttachFileArgs, AttachResult, CommonEditOptions, EditResult, FillFormArgs, FlattenFormArgs, FormResult, SetMetadataArgs, StampPageNumbersArgs, StampResult, WatermarkResult } from '../types/index.js';
19
+ import type { AddAnnotationArgs, AddBookmarksArgs, AddWatermarkArgs, AttachFileArgs, AttachResult, CommonEditOptions, EditResult, FillFormArgs, FlattenFormArgs, FormResult, SetMetadataArgs, StampPageNumbersArgs, StampResult, TagFormFieldsArgs, TagFormFieldsResult, WatermarkResult } from '../types/index.js';
20
20
  /** 入力バイト列に電子署名(/ByteRange)が含まれるかの軽量検査 */
21
21
  export declare function containsSignature(bytes: Uint8Array): boolean;
22
22
  /** PDF を読み込み、署名ガード・サイズ上限を通す(page-ops.ts と共用) */
23
- export declare function loadForEdit(filePath: string, opts: CommonEditOptions): Promise<{
23
+ export declare function loadForEdit(filePath: string, opts: CommonEditOptions & {
24
+ preserveSignatures?: boolean;
25
+ }): Promise<{
24
26
  doc: PDFDocument;
25
27
  absPath: string;
28
+ bytes: Uint8Array;
26
29
  }>;
27
30
  export declare function setMetadata(args: SetMetadataArgs): Promise<EditResult>;
28
31
  export declare function addBookmarks(args: AddBookmarksArgs): Promise<EditResult>;
@@ -31,4 +34,17 @@ export declare function attachFileToPdf(args: AttachFileArgs): Promise<AttachRes
31
34
  export declare function stampPageNumbers(args: StampPageNumbersArgs): Promise<StampResult>;
32
35
  export declare function addWatermark(args: AddWatermarkArgs): Promise<WatermarkResult>;
33
36
  export declare function fillForm(args: FillFormArgs): Promise<FormResult>;
37
+ /**
38
+ * タグ付き PDF のフォームを PDF/UA-1 準拠へ修復する(B-6)。
39
+ *
40
+ * fill_form は「入力が準拠していれば出力も準拠」(構造木に触らない)だが、
41
+ * タグ付き PDF に AcroForm が**あるだけ**では PDF/UA-1 に通らない。本ツールが
42
+ * 7.18.4-1(Widget を Form 構造要素に内包)/ 7.18.3-1(/Tabs S)/
43
+ * 7.18.1-3(フィールドに /TU)を後付けで満たす。
44
+ *
45
+ * タグ無し文書は対象外(フォームのためだけに構造木を作り始めない —
46
+ * ゼロからのタグ付けは create 系の tagged: true、既存文書の完全なタグ付けは
47
+ * Tier C の ensure_tagged の領分)。
48
+ */
49
+ export declare function tagFormFields(args: TagFormFieldsArgs): Promise<TagFormFieldsResult>;
34
50
  export declare function flattenForm(args: FlattenFormArgs): Promise<FormResult>;
@@ -17,7 +17,8 @@
17
17
  */
18
18
  import { readFile } from 'node:fs/promises';
19
19
  import { resolve } from 'node:path';
20
- import { PDFDocument } from 'pdf-lib';
20
+ import { PDFDocument, PDFName, PDFRef } from 'pdf-lib';
21
+ import { outputDate } from '../config.js';
21
22
  import { LIMITS, STAMP_DEFAULTS, WATERMARK_DEFAULTS } from '../constants.js';
22
23
  import { invalidArg, NEXT_ACTIONS, PdfWriterError } from '../errors.js';
23
24
  import { logger } from '../utils/logger.js';
@@ -25,9 +26,10 @@ import { parsePageSpec } from '../utils/page-spec.js';
25
26
  import { addAnnotation as addAnnotationDict, parseHexColor } from './annotation.js';
26
27
  import { attachFile, listEmbeddedFiles } from './attachment.js';
27
28
  import { applyMissingGlyphPolicy, embedFontFor, openFont } from './font-manager.js';
28
- import { applyFieldValue, cleanUpAfterFlatten, collectRenderedTexts, listFields, readOnlyWarnings, refreshAppearances, } from './form.js';
29
+ import { applyFieldValue, cleanUpAfterFlatten, collectRenderedTexts, listFields, readOnlyWarnings, refreshAppearances, tagWidgets, } from './form.js';
30
+ import { buildIncrementalUpdate, findDocMdpPermission, reserveExistingObjectNumbers, } from './incremental.js';
29
31
  import { countBookmarks, setBookmarks } from './outline.js';
30
- import { saveEdited } from './output.js';
32
+ import { saveEdited, saveRawBytes } from './output.js';
31
33
  import { formatPageNumber, stampPage } from './page-number.js';
32
34
  import { assertRenderable } from './renderers/text.js';
33
35
  import { appendAnnotationToStructTree, isTagged, markArtifactOnPage } from './struct-append.js';
@@ -62,10 +64,12 @@ export async function loadForEdit(filePath, opts) {
62
64
  throw new PdfWriterError(`"${absPath}" is too large (${Math.round(bytes.byteLength / 1024 / 1024)}MB, ` +
63
65
  `max ${LIMITS.INPUT_PDF_MAX_BYTES / 1024 / 1024}MB)`, 'FILE_TOO_LARGE');
64
66
  }
65
- if (containsSignature(bytes) && !opts.allowBreakingSignatures) {
67
+ if (containsSignature(bytes) && !opts.allowBreakingSignatures && !opts.preserveSignatures) {
66
68
  throw new PdfWriterError(`"${absPath}" appears to be digitally signed (/ByteRange found). ` +
67
- 'Editing will invalidate existing signatures because pdf-lib rewrites the whole file. ' +
68
- '(Signature-preserving incremental update is a future Tier C feature.)', 'SIGNED_PDF', { retryable: true, next_actions: [NEXT_ACTIONS.allowBreakingSignatures()] });
69
+ 'Editing will invalidate existing signatures because pdf-lib rewrites the whole file.', 'SIGNED_PDF', {
70
+ retryable: true,
71
+ next_actions: [NEXT_ACTIONS.preserveSignatures(), NEXT_ACTIONS.allowBreakingSignatures()],
72
+ });
69
73
  }
70
74
  let doc;
71
75
  try {
@@ -79,7 +83,7 @@ export async function loadForEdit(filePath, opts) {
79
83
  ? { hint: 'Decrypt the PDF first — pdf-writer-mcp cannot edit encrypted files.' }
80
84
  : {});
81
85
  }
82
- return { doc, absPath };
86
+ return { doc, absPath, bytes };
83
87
  }
84
88
  // ---------------------------------------------------------------------------
85
89
  // Tier A ツール本体(ページ操作は page-ops.ts へ)
@@ -109,7 +113,57 @@ export async function addBookmarks(args) {
109
113
  return saveEdited(doc, args);
110
114
  }
111
115
  export async function addAnnotation(args) {
112
- const { doc } = await loadForEdit(args.inputPath, args);
116
+ const { doc, bytes } = await loadForEdit(args.inputPath, args);
117
+ // --- 署名保持モード(Tier C・ADR-11): 元バイト列に触れず増分更新で追記する ---
118
+ if (args.preserveSignatures) {
119
+ if (isTagged(doc)) {
120
+ throw new PdfWriterError('preserveSignatures on a tagged PDF is not supported yet: nesting the annotation in ' +
121
+ 'an Annot structure element (PDF/UA 7.18.1-1) rewrites existing structure objects ' +
122
+ 'that the incremental writer does not track in this first milestone.', 'UNSUPPORTED_PDF_FEATURE', {
123
+ hint: 'Tagged + signature-preserving annotation is a later Tier C milestone. ' +
124
+ 'If invalidating the signature is acceptable, retry with "allowBreakingSignatures": true.',
125
+ });
126
+ }
127
+ // 認証署名(DocMDP)の許可レベル検査(ISO 32000-2 §12.8.2.2):
128
+ // 注釈の追加が許されるのは P=3 のみ。P=1(変更禁止)/ P=2(フォームまで)では
129
+ // 増分更新が合法でも認証署名の検証が「許可されない変更」として失敗する。
130
+ const docMdpP = findDocMdpPermission(doc);
131
+ if (docMdpP !== undefined && docMdpP < 3) {
132
+ throw new PdfWriterError(`This PDF carries a certification signature (DocMDP) with permission level P=${docMdpP} — ` +
133
+ (docMdpP === 1
134
+ ? 'the author declared the document final; any change (except DSS/DTS) invalidates it.'
135
+ : 'only form fill-in and signing are permitted; annotations are not.') +
136
+ ' Even a signature-preserving incremental update would be flagged as a disallowed change.', 'SIGNED_PDF', {
137
+ retryable: true,
138
+ hint: 'ISO 32000-2 §12.8.2.2: annotation changes require DocMDP P=3.',
139
+ next_actions: [NEXT_ACTIONS.allowBreakingSignatures()],
140
+ });
141
+ }
142
+ // 容器ストリーム等の「登録されない番号」との衝突を防いでから採番を始める
143
+ reserveExistingObjectNumbers(doc, bytes);
144
+ const since = doc.context.largestObjectNumber;
145
+ const added = addAnnotationDict(doc, args);
146
+ // 再定義が必要な既存オブジェクトを特定する:
147
+ // /Annots が間接配列 → その配列オブジェクトだけを再定義(ページ辞書は元のまま)
148
+ // /Annots が直接配列 or 新設 → ページオブジェクトを再定義
149
+ const annotsRaw = added.page.node.get(PDFName.of('Annots'));
150
+ const dirtyRefs = [annotsRaw instanceof PDFRef ? annotsRaw : added.page.ref];
151
+ // ModificationDate の更新も増分に含める(Info が既存なら再定義、無ければ新規扱い)
152
+ doc.setModificationDate(outputDate());
153
+ const info = doc.context.trailerInfo.Info;
154
+ if (info instanceof PDFRef && info.objectNumber <= since)
155
+ dirtyRefs.push(info);
156
+ const update = buildIncrementalUpdate({
157
+ original: bytes,
158
+ doc,
159
+ dirtyRefs,
160
+ sinceObjectNumber: since,
161
+ });
162
+ logger.info('Editor', `Added annotation via incremental update (${update.objectsWritten} object(s), ` +
163
+ `${update.xrefStyle} xref, +${update.bytes.length - bytes.length} bytes); signatures preserved`);
164
+ const saved = await saveRawBytes(update.bytes, doc.getPageCount(), args);
165
+ return { ...saved, incremental: true };
166
+ }
113
167
  const added = addAnnotationDict(doc, args);
114
168
  // タグ付き PDF なら構造木にも結び付ける(PDF/UA 7.18.1-1 / 7.18.3-1)。
115
169
  // タグ無し文書では何もしない — 注釈のためだけに構造木を作り始めない。
@@ -295,6 +349,57 @@ function flattenAndWarn(doc, allowBreakingTags, warnings) {
295
349
  }
296
350
  return true;
297
351
  }
352
+ /**
353
+ * タグ付き PDF のフォームを PDF/UA-1 準拠へ修復する(B-6)。
354
+ *
355
+ * fill_form は「入力が準拠していれば出力も準拠」(構造木に触らない)だが、
356
+ * タグ付き PDF に AcroForm が**あるだけ**では PDF/UA-1 に通らない。本ツールが
357
+ * 7.18.4-1(Widget を Form 構造要素に内包)/ 7.18.3-1(/Tabs S)/
358
+ * 7.18.1-3(フィールドに /TU)を後付けで満たす。
359
+ *
360
+ * タグ無し文書は対象外(フォームのためだけに構造木を作り始めない —
361
+ * ゼロからのタグ付けは create 系の tagged: true、既存文書の完全なタグ付けは
362
+ * Tier C の ensure_tagged の領分)。
363
+ */
364
+ export async function tagFormFields(args) {
365
+ const { doc } = await loadForEdit(args.inputPath, args);
366
+ if (!isTagged(doc)) {
367
+ throw new PdfWriterError(`"${args.inputPath}" is not a tagged PDF, so there is no structure tree to repair. ` +
368
+ 'tag_form_fields fixes forms inside already-tagged PDFs (PDF/UA-1 7.18.4).', 'INVALID_ARGUMENT', {
369
+ hint: 'To produce a tagged PDF from scratch, use the create tools with "tagged": true. ' +
370
+ 'Full tagging of an existing untagged PDF (ensure_tagged) is a future Tier C feature.',
371
+ });
372
+ }
373
+ const form = doc.getForm();
374
+ if (form.hasXFA()) {
375
+ throw new PdfWriterError('This PDF uses XFA forms, which pdf-writer-mcp does not support.', 'UNSUPPORTED_PDF_FEATURE');
376
+ }
377
+ if (form.getFields().length === 0) {
378
+ throw invalidArg(`"${args.inputPath}" has no AcroForm fields to tag.`);
379
+ }
380
+ const outcome = tagWidgets(doc, args.labels ?? {});
381
+ const warnings = [];
382
+ if (outcome.unlabeled.length > 0) {
383
+ warnings.push(`No label given for ${outcome.unlabeled.length} field(s); the field name was used as /TU ` +
384
+ `(${outcome.unlabeled.join(', ')}). Pass "labels" with human-readable names — ` +
385
+ 'screen readers announce /TU, and "user.name" reads poorly.');
386
+ }
387
+ if (outcome.orphaned.length > 0) {
388
+ warnings.push(`${outcome.orphaned.length} widget(s) were not found in any page's /Annots and were left ` +
389
+ `untouched (${outcome.orphaned.join(', ')}).`);
390
+ }
391
+ logger.info('Editor', `Tagged ${outcome.tagged} widget(s) into Form structure elements` +
392
+ (outcome.skipped > 0 ? `, ${outcome.skipped} already tagged` : ''));
393
+ // 値は変えないので pdf-lib の外観再生成(Helvetica)を走らせない
394
+ const saved = await saveEdited(doc, args, { updateFieldAppearances: false });
395
+ return {
396
+ ...saved,
397
+ taggedWidgets: outcome.tagged,
398
+ skippedWidgets: outcome.skipped,
399
+ fields: listFields(doc),
400
+ warnings: warnings.length > 0 ? warnings : undefined,
401
+ };
402
+ }
298
403
  export async function flattenForm(args) {
299
404
  const { doc } = await loadForEdit(args.inputPath, args);
300
405
  const form = doc.getForm();
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/services/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/services/editor.ts"],"names":[],"mappings":"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"}