@shuji-bonji/pdf-writer-mcp 0.4.0 → 0.5.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.ja.md +17 -2
  3. package/README.md +17 -2
  4. package/dist/config.js +1 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/constants.d.ts +9 -0
  7. package/dist/constants.js +9 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/services/annotation.d.ts +1 -1
  12. package/dist/services/annotation.js +1 -1
  13. package/dist/services/annotation.js.map +1 -1
  14. package/dist/services/builder.js +32 -4
  15. package/dist/services/builder.js.map +1 -1
  16. package/dist/services/editor.js +2 -2
  17. package/dist/services/editor.js.map +1 -1
  18. package/dist/services/font-manager.d.ts +1 -1
  19. package/dist/services/font-manager.js +1 -1
  20. package/dist/services/font-manager.js.map +1 -1
  21. package/dist/services/layout.d.ts +17 -1
  22. package/dist/services/layout.js +46 -13
  23. package/dist/services/layout.js.map +1 -1
  24. package/dist/services/outline.d.ts +1 -1
  25. package/dist/services/outline.js +1 -1
  26. package/dist/services/outline.js.map +1 -1
  27. package/dist/services/output.js +2 -2
  28. package/dist/services/output.js.map +1 -1
  29. package/dist/services/renderers/markdown.d.ts +1 -1
  30. package/dist/services/renderers/markdown.js +58 -15
  31. package/dist/services/renderers/markdown.js.map +1 -1
  32. package/dist/services/renderers/table.d.ts +1 -1
  33. package/dist/services/renderers/table.js +30 -16
  34. package/dist/services/renderers/table.js.map +1 -1
  35. package/dist/services/renderers/text.d.ts +1 -1
  36. package/dist/services/renderers/text.js +4 -1
  37. package/dist/services/renderers/text.js.map +1 -1
  38. package/dist/services/struct-tree.d.ts +79 -0
  39. package/dist/services/struct-tree.js +222 -0
  40. package/dist/services/struct-tree.js.map +1 -0
  41. package/dist/services/xmp.d.ts +42 -0
  42. package/dist/services/xmp.js +133 -0
  43. package/dist/services/xmp.js.map +1 -0
  44. package/dist/tools/definitions.d.ts +24 -0
  45. package/dist/tools/definitions.js +12 -0
  46. package/dist/tools/definitions.js.map +1 -1
  47. package/dist/tools/handlers.js +7 -6
  48. package/dist/tools/handlers.js.map +1 -1
  49. package/dist/types/index.d.ts +11 -0
  50. package/dist/utils/lang.d.ts +18 -0
  51. package/dist/utils/lang.js +30 -0
  52. package/dist/utils/lang.js.map +1 -0
  53. package/dist/utils/validation.d.ts +1 -1
  54. package/dist/utils/validation.js +22 -5
  55. package/dist/utils/validation.js.map +1 -1
  56. package/package.json +9 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,68 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.5.0] - 2026-07-16
6
+
7
+ ### Added
8
+
9
+ - **Tagged PDF / PDF/UA-1 (ISO 14289)** via `tagged: true` on the create tools.
10
+ Output is **verified compliant by veraPDF** (`--flavour ua1`, 106/106 rules) for
11
+ text, Markdown, and table documents.
12
+
13
+ Opt-in by design: existing behaviour is unchanged unless you ask for tagging.
14
+ PDF/UA mandates a document title, so `tagged: true` requires `title`.
15
+
16
+ - Structure tree (`StructTreeRoot`, `StructElem`, `ParentTree`) built from
17
+ pdf-lib's low-level object model — it has no logical-structure API.
18
+ - Every drawn line is wrapped in `/Tag <</MCID n>> BDC … EMC`, and decorations
19
+ (rules, cell borders, code backgrounds) become `/Artifact BMC … EMC` (7.1-3).
20
+ - Markdown maps to structure: headings → `H1`–`H6`, lists → `L`/`LI`/`LBody`,
21
+ tables → `Table`/`TR`/`TH`/`TD`, quotes → `BlockQuote`, code → `Code`.
22
+ - Heading levels are normalised so they start at H1 and never skip (7.4.2).
23
+ A Markdown `# → ###` jump becomes `H1 → H2`; visual sizes are untouched.
24
+ - Table headers carry `/A << /O /Table /Scope /Column >>` (7.5-1).
25
+ - XMP is generated in-house (pdf-lib has no XMP API) with the `pdfuaid`
26
+ declaration **and** the PDF/A extension schema description — veraPDF rejects
27
+ the declaration without it (5-1).
28
+ - `/Lang`, `/ViewerPreferences /DisplayDocTitle`, `/MarkInfo /Marked`.
29
+
30
+ - **`lang` option** (BCP 47). When omitted under `tagged: true` the language is
31
+ inferred from the text and reported via `warnings`. Inference is conservative:
32
+ kana → `ja`, Hangul → `ko`, Han without kana → `ja` *with a warning that it
33
+ could be Chinese*. A wrong `/Lang` makes screen readers mispronounce text, so
34
+ the guess is always surfaced rather than silently applied.
35
+
36
+ ### Fixed
37
+
38
+ - **Bullets in unordered lists rendered as `.notdef`** (blank boxes) — a
39
+ regression from 0.3.0. Font subsetting is driven by the *input* text, but the
40
+ Markdown renderer adds characters of its own: `- item` contains no bullet, yet
41
+ `•` is drawn. Those glyphs were missing from the subset. Renderer-generated
42
+ characters are now always subset in (`RENDERER_GENERATED_CHARS`).
43
+
44
+ Text extraction was unaffected, which is why no existing test caught it;
45
+ veraPDF's 7.21.8-1 (no `.notdef` references) is what surfaced it.
46
+
47
+ - XMP metadata is written as UTF-8 bytes. `context.stream(string)` writes one
48
+ byte per character, which mangled Japanese titles.
49
+
50
+ ## [Unreleased]
51
+
52
+ ### Changed
53
+
54
+ - **biome adopted** for linting and formatting, matching the rest of the family
55
+ (same `biome.json`, same scripts). `npm run check` now runs in CI and in the
56
+ publish workflow. Existing sources were reformatted; the suite is clean.
57
+ - The version is pinned to an exact `2.5.4` rather than a caret range. Biome's
58
+ formatting output changes between minor releases, so a range lets a local
59
+ `npm install` drift ahead of CI and produce spurious diffs.
60
+
61
+ ### Fixed
62
+
63
+ - `handleCreateTablePdf` duplicated the Latin-1 check as a regex containing
64
+ control characters; it now reuses the existing `hasNonLatin1` helper.
65
+ - `src/config.ts` imports `node:module` rather than the bare `module` specifier.
66
+
5
67
  ## [0.4.0] - 2026-07-16
6
68
 
7
69
  ### Added
package/README.ja.md CHANGED
@@ -20,7 +20,21 @@
20
20
  | `create_markdown_pdf` | Markdown — 見出し / 段落 / 箇条書き・番号リスト / コードブロック / 引用 / 水平線 / 表 |
21
21
  | `create_table_pdf` | 罫線付き表 — 列幅の自動算出、セル内折り返し、改ページ時のヘッダ再描画 |
22
22
 
23
- 共通オプション: `outputPath` / `returnBase64` / `fontPath` / `fontSize` / `pageSize`(A4/A3/A5/LETTER/LEGAL)/ `margin` / `title` / `author` / `onMissingGlyph`。
23
+ 共通オプション: `outputPath` / `returnBase64` / `fontPath` / `fontSize` / `pageSize`(A4/A3/A5/LETTER/LEGAL)/ `margin` / `title` / `author` / `onMissingGlyph` / `tagged` / `lang`。
24
+
25
+ ### タグ付き PDF / PDF/UA(v0.5.0)
26
+
27
+ `tagged: true` を指定すると、**PDF/UA-1(ISO 14289)準拠のタグ付き PDF**(アクセシブルな PDF)を生成します。veraPDF(`--flavour ua1`)で 106/106 規則の準拠を確認済みです。
28
+
29
+ ```jsonc
30
+ { "markdown": "# 見出し\n\n本文。", "title": "レポート", "tagged": true, "lang": "ja" }
31
+ ```
32
+
33
+ Markdown は構造木に対応付けられます。見出し → `H1`〜`H6`、リスト → `L`/`LI`/`LBody`、表 → `Table`/`TR`/`TH`/`TD`(ヘッダには `/Scope`)、引用 → `BlockQuote`、コード → `Code`。水平線・罫線・コード背景は Artifact になります。見出しレベルは「H1 始まり・飛ばさない」よう正規化されるため、Markdown の `# → ###` は構造上 `H1 → H2` になります(見た目のサイズは元のままです)。
34
+
35
+ PDF/UA はタイトルを要求するため、`tagged: true` では `title` が必須です。`lang`(BCP 47)は省略すると本文から推定し、`warnings` で報告します。**誤った `/Lang` はスクリーンリーダの誤読を招く**ため、分かっている場合は明示してください。
36
+
37
+ > タグ付けは opt-in です(既定の出力は変わりません)。機械検証は「読み順や代替テキストが**適切か**」までは判定できず、存在の有無しか見られません。人手の確認は依然として必要です。
24
38
 
25
39
  ### 編集
26
40
 
@@ -128,8 +142,9 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
128
142
 
129
143
  - [x] 編集系 Tier A 第1波 — メタデータ・ページ操作(v0.2.0)
130
144
  - [x] 編集系 Tier A 第2波 — しおり・注釈(v0.4.0)
145
+ - [x] タグ付き PDF / PDF/UA-1 — veraPDF で準拠を確認(v0.5.0)
131
146
  - [ ] 編集系 Tier B — フォーム記入 / フラット化、透かし、添付ファイル、ページ番号スタンプ
132
- - [ ] タグ付き PDF / PDF/UA(スクリーンリーダ向けの構造タグ)
147
+ - [ ] 画像の代替テキスト(`Figure` + `/Alt`)、タグ付き出力での注釈の `Annot` タグ内包
133
148
  - [ ] `.ttc` からのフェイス自動抽出
134
149
  - [ ] 見出し用と本文用のフォント分け(太字フェイス埋め込み)
135
150
  - [ ] 画像埋め込み、ヘッダー / フッター
package/README.md CHANGED
@@ -20,7 +20,21 @@ Part of the PDF family alongside [pdf-reader-mcp](https://github.com/shuji-bonji
20
20
  | `create_markdown_pdf` | Markdown — headings, paragraphs, bullet/ordered lists, code blocks, quotes, rules, tables |
21
21
  | `create_table_pdf` | Ruled tables — automatic column widths, cell wrapping, headers repeated across page breaks |
22
22
 
23
- Shared options: `outputPath`, `returnBase64`, `fontPath`, `fontSize`, `pageSize` (A4/A3/A5/LETTER/LEGAL), `margin`, `title`, `author`, `onMissingGlyph`.
23
+ Shared options: `outputPath`, `returnBase64`, `fontPath`, `fontSize`, `pageSize` (A4/A3/A5/LETTER/LEGAL), `margin`, `title`, `author`, `onMissingGlyph`, `tagged`, `lang`.
24
+
25
+ ### Tagged PDF / PDF/UA (v0.5.0)
26
+
27
+ Pass `tagged: true` to produce an accessible, tagged PDF conforming to **PDF/UA-1 (ISO 14289)**. Output is verified compliant by veraPDF (`--flavour ua1`, 106/106 rules).
28
+
29
+ ```jsonc
30
+ { "markdown": "# Title\n\nBody.", "title": "Report", "tagged": true, "lang": "en" }
31
+ ```
32
+
33
+ Markdown maps onto the structure tree: headings → `H1`–`H6`, lists → `L`/`LI`/`LBody`, tables → `Table`/`TR`/`TH`/`TD` (headers get `/Scope`), quotes → `BlockQuote`, code → `Code`. Rules, borders and code backgrounds become artifacts. Heading levels are normalised so they start at H1 and never skip — a Markdown `# → ###` jump becomes `H1 → H2` in the structure, while visual sizes stay as authored.
34
+
35
+ PDF/UA mandates a document title, so `tagged: true` requires `title`. `lang` (BCP 47) is inferred from the text when omitted and reported via `warnings` — pass it explicitly when you know it, since a wrong `/Lang` makes screen readers mispronounce the text.
36
+
37
+ > Tagging is opt-in: default output is unchanged. Machine validation cannot judge whether reading order or alt text are *appropriate*, only that they exist — human review still matters.
24
38
 
25
39
  ### Editing
26
40
 
@@ -128,8 +142,9 @@ TEST_FONT_PATH=/path/to/NotoSansJP-Regular.otf npm test
128
142
 
129
143
  - [x] Editing Tier A wave 1 — metadata and page operations (v0.2.0)
130
144
  - [x] Editing Tier A wave 2 — bookmarks and annotations (v0.4.0)
145
+ - [x] Tagged PDF / PDF/UA-1 — verified by veraPDF (v0.5.0)
131
146
  - [ ] Editing Tier B — form filling/flattening, watermarks, attachments, page-number stamping
132
- - [ ] Tagged PDF / PDF/UA (structure tags for screen readers)
147
+ - [ ] Images with alt text (`Figure` + `/Alt`), annotations nested in `Annot` tags for tagged output
133
148
  - [ ] Automatic face extraction from `.ttc`
134
149
  - [ ] Separate faces for headings and body (bold face embedding)
135
150
  - [ ] Image embedding, headers/footers
package/dist/config.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Application Configuration
3
3
  * バージョンは package.json から動的取得(config と package.json の不一致を防ぐ)
4
4
  */
5
- import { createRequire } from 'module';
5
+ import { createRequire } from 'node:module';
6
6
  const require = createRequire(import.meta.url);
7
7
  const packageJson = require('../package.json');
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAG5C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,OAAO,EAAE,WAAW,CAAC,OAAO;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,yCAAyC;IACzC,YAAY,EAAE,iBAAiB;CACvB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc;IACd,QAAQ,EAAE,IAAI;IACd,eAAe;IACf,MAAM,EAAE,EAAE,EAAE,SAAS;IACrB,gBAAgB;IAChB,QAAQ,EAAE,EAAE;IACZ,wDAAwD;IACxD,UAAU,EAAE,IAAI;IAChB,eAAe;IACf,YAAY,EAAE,CAAC;CACP,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAG5C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,OAAO,EAAE,WAAW,CAAC,OAAO;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,yCAAyC;IACzC,YAAY,EAAE,iBAAiB;CACvB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc;IACd,QAAQ,EAAE,IAAI;IACd,eAAe;IACf,MAAM,EAAE,EAAE,EAAE,SAAS;IACrB,gBAAgB;IAChB,QAAQ,EAAE,EAAE;IACZ,wDAAwD;IACxD,UAAU,EAAE,IAAI;IAChB,eAAe;IACf,YAAY,EAAE,CAAC;CACP,CAAC"}
@@ -43,6 +43,15 @@ export declare const ANNOTATION_TYPES: readonly ['text', 'highlight', 'square'];
43
43
  export declare const ANNOTATION_ICONS: readonly ['Note', 'Comment', 'Key', 'Help', 'NewParagraph', 'Paragraph', 'Insert'];
44
44
  /** rotate_pages が受け付ける回転角(時計回り・度) */
45
45
  export declare const ROTATION_ANGLES: readonly [90, 180, 270];
46
+ /**
47
+ * レンダラが入力テキストに無くても描画しうる文字。
48
+ *
49
+ * フォントのサブセットは「入力テキスト」を基に行うため、レンダラが後から足す文字は
50
+ * サブセットに含まれず .notdef(豆腐)になる。実例: Markdown の `- item` は原文に
51
+ * 中黒を含まないが、箇条書きレンダラが '•' を描画する(v0.3.0〜v0.4.0 の回帰)。
52
+ * 番号リストの marker(`1. `)も同様に生成物。
53
+ */
54
+ export declare const RENDERER_GENERATED_CHARS = "\u20220123456789. ";
46
55
  /**
47
56
  * フォントファイルのマジックナンバー(先頭 4 bytes)
48
57
  * .ttc(TrueTypeCollection)は pdf-lib がサブセット化できないため検知して弾く
package/dist/constants.js CHANGED
@@ -50,6 +50,15 @@ export const ANNOTATION_ICONS = [
50
50
  ];
51
51
  /** rotate_pages が受け付ける回転角(時計回り・度) */
52
52
  export const ROTATION_ANGLES = [90, 180, 270];
53
+ /**
54
+ * レンダラが入力テキストに無くても描画しうる文字。
55
+ *
56
+ * フォントのサブセットは「入力テキスト」を基に行うため、レンダラが後から足す文字は
57
+ * サブセットに含まれず .notdef(豆腐)になる。実例: Markdown の `- item` は原文に
58
+ * 中黒を含まないが、箇条書きレンダラが '•' を描画する(v0.3.0〜v0.4.0 の回帰)。
59
+ * 番号リストの marker(`1. `)も同様に生成物。
60
+ */
61
+ export const RENDERER_GENERATED_CHARS = '•0123456789. ';
53
62
  /**
54
63
  * フォントファイルのマジックナンバー(先頭 4 bytes)
55
64
  * .ttc(TrueTypeCollection)は pdf-lib がサブセット化できないため検知して弾く
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;CACV,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,qBAAqB;IACrB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,EAAE;IACjB,sCAAsC;IACtC,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,GAAG;IACf,6CAA6C;IAC7C,eAAe,EAAE,OAAO;IACxB,+BAA+B;IAC/B,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,KAAK;IACrB,4BAA4B;IAC5B,gBAAgB,EAAE,EAAE;IACpB,wBAAwB;IACxB,eAAe,EAAE,GAAG;IACpB,uBAAuB;IACvB,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,CAAC;CACb,CAAC;AAEX,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAEzE,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,SAAS;IACT,KAAK;IACL,MAAM;IACN,cAAc;IACd,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mCAAmC;IACnC,GAAG,EAAE,MAAM;CACH,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;CACV,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,qBAAqB;IACrB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,EAAE;IACjB,sCAAsC;IACtC,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,GAAG;IACf,6CAA6C;IAC7C,eAAe,EAAE,OAAO;IACxB,+BAA+B;IAC/B,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,KAAK;IACrB,4BAA4B;IAC5B,gBAAgB,EAAE,EAAE;IACpB,wBAAwB;IACxB,eAAe,EAAE,GAAG;IACpB,uBAAuB;IACvB,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,CAAC;CACb,CAAC;AAEX,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAEzE,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,SAAS;IACT,KAAK;IACL,MAAM;IACN,cAAc;IACd,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAExD;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mCAAmC;IACnC,GAAG,EAAE,MAAM;CACH,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
8
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
9
9
  import { PACKAGE_INFO } from './config.js';
10
10
  import { tools } from './tools/definitions.js';
11
11
  import { toolHandlers } from './tools/handlers.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,OAAO,EAAE,YAAY,CAAC,OAAO;CAC9B,EACD;IACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CAC5B,CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK;CACN,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,OAAO,EAAE,YAAY,CAAC,OAAO;CAC9B,EACD;IACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CAC5B,CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK;CACN,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * 座標系は PDF 準拠(左下原点・pt)。生成系レンダラの top 基準とは異なる点に注意。
11
11
  */
12
- import { PDFDocument, type RGB } from 'pdf-lib';
12
+ import { type PDFDocument, type RGB } from 'pdf-lib';
13
13
  import type { AddAnnotationArgs } from '../types/index.js';
14
14
  /** #rrggbb / #rgb を pdf-lib の RGB へ */
15
15
  export declare function parseHexColor(hex: string): RGB;
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * 座標系は PDF 準拠(左下原点・pt)。生成系レンダラの top 基準とは異なる点に注意。
11
11
  */
12
- import { PDFName, PDFNumber, PDFArray, PDFHexString, PDFString, rgb, } from 'pdf-lib';
12
+ import { PDFArray, PDFHexString, PDFName, PDFNumber, PDFString, rgb, } from 'pdf-lib';
13
13
  /** #rrggbb / #rgb を pdf-lib の RGB へ */
14
14
  export function parseHexColor(hex) {
15
15
  const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());
@@ -1 +1 @@
1
- {"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../src/services/annotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../src/services/annotation.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,15 @@
7
7
  * 埋め込みは入力テキストが確定した後(グリフ欠落ポリシー適用後)に行う。
8
8
  */
9
9
  import { PDFDocument, rgb } from 'pdf-lib';
10
- import { PAGE_SIZES } from '../constants.js';
11
10
  import { DEFAULTS } from '../config.js';
12
- import { applyMissingGlyphPolicy, embedFontFor, openFont } from './font-manager.js';
11
+ import { PAGE_SIZES, RENDERER_GENERATED_CHARS } from '../constants.js';
12
+ import { inferLang } from '../utils/lang.js';
13
+ import { applyMissingGlyphPolicy, embedFontFor, openFont, } from './font-manager.js';
13
14
  import { LayoutEngine } from './layout.js';
14
15
  import { finalizePdf } from './output.js';
15
16
  import { assertRenderable } from './renderers/text.js';
17
+ import { StructTreeBuilder } from './struct-tree.js';
18
+ import { applyPdfuaCatalog } from './xmp.js';
16
19
  export async function buildPdf(opts, inputTexts, render) {
17
20
  const doc = await PDFDocument.create();
18
21
  const source = await openFont(opts.fontPath);
@@ -29,11 +32,29 @@ export async function buildPdf(opts, inputTexts, render) {
29
32
  const warnings = [...applied.warnings];
30
33
  const title = opts.title ? applied.texts[0] : undefined;
31
34
  const texts = opts.title ? applied.texts.slice(1) : applied.texts;
32
- // 描画確定後のテキストでサブセットして埋め込む
33
- const loaded = await embedFontFor(doc, source, applied.texts);
35
+ // 描画確定後のテキストでサブセットして埋め込む。
36
+ // レンダラが入力に無い文字(箇条書きの '•' 等)を足すため、それらも必ず含める
37
+ const loaded = await embedFontFor(doc, source, [...applied.texts, RENDERER_GENERATED_CHARS]);
34
38
  const pageName = opts.pageSize ?? DEFAULTS.pageSize;
35
39
  const [pageWidth, pageHeight] = PAGE_SIZES[pageName];
36
40
  const fontSize = opts.fontSize ?? DEFAULTS.fontSize;
41
+ // タグ付き(PDF/UA)の準備
42
+ let struct;
43
+ let lang;
44
+ if (opts.tagged) {
45
+ if (!title) {
46
+ throw new Error('tagged: true requires "title" — PDF/UA (ISO 14289-1, 7.1) mandates a document title.');
47
+ }
48
+ lang = opts.lang;
49
+ if (!lang) {
50
+ const inferred = inferLang(applied.texts.join('\n'));
51
+ lang = inferred.lang;
52
+ warnings.push(inferred.confident
53
+ ? `Inferred document language as "${lang}"; pass "lang" explicitly to override.`
54
+ : `Inferred document language as "${lang}", but the text has no kana so it could also be Chinese. Pass "lang" explicitly — a wrong /Lang makes screen readers mispronounce the text.`);
55
+ }
56
+ struct = new StructTreeBuilder(doc);
57
+ }
37
58
  const engine = new LayoutEngine(doc, {
38
59
  pageWidth,
39
60
  pageHeight,
@@ -41,17 +62,24 @@ export async function buildPdf(opts, inputTexts, render) {
41
62
  font: loaded.font,
42
63
  fontSize,
43
64
  lineHeight: DEFAULTS.lineHeight,
65
+ struct,
44
66
  });
45
67
  // タイトルが指定されていれば本文冒頭に見出しとして描画(メタデータにも finalizePdf で設定)
46
68
  if (title) {
69
+ struct?.begin('H1');
47
70
  engine.drawParagraph(title, {
48
71
  size: fontSize + 7,
49
72
  color: rgb(0, 0, 0),
50
73
  lineHeight: 1.2,
51
74
  spaceAfter: 12,
52
75
  });
76
+ struct?.end();
53
77
  }
54
78
  render(engine, loaded, texts);
79
+ if (struct) {
80
+ struct.finalize();
81
+ applyPdfuaCatalog(doc, { title: title, author: opts.author, lang: lang });
82
+ }
55
83
  const result = await finalizePdf(doc, opts, loaded.name);
56
84
  if (warnings.length > 0)
57
85
  result.warnings = warnings;
@@ -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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"}
@@ -13,8 +13,8 @@
13
13
  * 署名を保持する増分更新(incremental_save)は Tier C の課題。
14
14
  */
15
15
  import { readFile } from 'node:fs/promises';
16
- import { resolve, basename, extname, join } from 'node:path';
17
- import { PDFDocument, degrees } from 'pdf-lib';
16
+ import { basename, extname, join, resolve } from 'node:path';
17
+ import { degrees, PDFDocument } from 'pdf-lib';
18
18
  import { LIMITS } from '../constants.js';
19
19
  import { logger } from '../utils/logger.js';
20
20
  import { parsePageSpec } from '../utils/page-spec.js';
@@ -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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"}
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * .ttc(TrueTypeCollection)は非対応のため検知して弾く。
15
15
  */
16
- import { PDFDocument, type PDFFont } from 'pdf-lib';
16
+ import { type PDFDocument, type PDFFont } from 'pdf-lib';
17
17
  import type { MissingGlyphPolicy } from '../types/index.js';
18
18
  /** 埋め込み前のフォント情報(グリフ照会に使う) */
19
19
  export interface FontSource {
@@ -15,8 +15,8 @@
15
15
  */
16
16
  import { readFile } from 'node:fs/promises';
17
17
  import { basename } from 'node:path';
18
- import { StandardFonts } from 'pdf-lib';
19
18
  import fontkit from '@pdf-lib/fontkit';
19
+ import { StandardFonts } from 'pdf-lib';
20
20
  import subsetFont from 'subset-font';
21
21
  import { ENV_KEYS } from '../config.js';
22
22
  import { FONT_MAGIC } from '../constants.js';
@@ -1 +1 @@
1
- {"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/services/font-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/services/font-manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@
3
3
  * pdf-lib の低レベル API の上に、テキスト折り返し・改ページ・カーソル管理を載せる薄い層。
4
4
  * 座標は「上端(top)基準」で管理し、見出し・本文・表でサイズが変わっても一貫して積み上げる。
5
5
  */
6
- import { type PDFDocument, type PDFPage, type PDFFont, type RGB } from 'pdf-lib';
6
+ import { type PDFDocument, type PDFFont, type PDFPage, type RGB } from 'pdf-lib';
7
+ import type { StructTreeBuilder } from './struct-tree.js';
7
8
  export interface LayoutOptions {
8
9
  pageWidth: number;
9
10
  pageHeight: number;
@@ -11,6 +12,11 @@ export interface LayoutOptions {
11
12
  font: PDFFont;
12
13
  fontSize: number;
13
14
  lineHeight: number;
15
+ /**
16
+ * タグ付き PDF の構造木ビルダー。
17
+ * 指定すると全描画が BDC/EMC で囲まれる(PDF/UA 7.1-3)。
18
+ */
19
+ struct?: StructTreeBuilder;
14
20
  }
15
21
  export interface DrawTextOptions {
16
22
  font?: PDFFont;
@@ -46,6 +52,16 @@ export declare class LayoutEngine {
46
52
  get defaultSize(): number;
47
53
  get cursorTop(): number;
48
54
  set cursorTop(v: number);
55
+ /** タグ付き生成のとき構造木ビルダーを返す(未指定なら undefined) */
56
+ get struct(): StructTreeBuilder | undefined;
57
+ /**
58
+ * 実コンテンツの描画。タグ付きなら BDC/EMC で囲む。
59
+ * 構造要素の begin/end は呼び出し側(renderer)が行う。
60
+ * page へ直接描画する renderer(表・コード等)はこれを経由すること。
61
+ */
62
+ drawTaggedContent(draw: () => void): void;
63
+ /** 意味を持たない描画(罫線・背景)。タグ付きなら Artifact で囲む */
64
+ drawArtifact(draw: () => void): void;
49
65
  newPage(): void;
50
66
  /** height 分の余白が下端まで残っていなければ改ページ */
51
67
  ensureSpace(height: number): void;
@@ -3,7 +3,7 @@
3
3
  * pdf-lib の低レベル API の上に、テキスト折り返し・改ページ・カーソル管理を載せる薄い層。
4
4
  * 座標は「上端(top)基準」で管理し、見出し・本文・表でサイズが変わっても一貫して積み上げる。
5
5
  */
6
- import { rgb, } from 'pdf-lib';
6
+ import { rgb } from 'pdf-lib';
7
7
  /** ベースライン近似係数(グリフ上端からベースラインまで ≒ size * この値) */
8
8
  const ASCENT_RATIO = 0.8;
9
9
  /**
@@ -12,7 +12,8 @@ const ASCENT_RATIO = 0.8;
12
12
  */
13
13
  export function hasNonLatin1(text) {
14
14
  for (const ch of text) {
15
- if (ch.codePointAt(0) > 0xff)
15
+ const cp = ch.codePointAt(0);
16
+ if (cp !== undefined && cp > 0xff)
16
17
  return true;
17
18
  }
18
19
  return false;
@@ -139,6 +140,32 @@ export class LayoutEngine {
139
140
  set cursorTop(v) {
140
141
  this._top = v;
141
142
  }
143
+ /** タグ付き生成のとき構造木ビルダーを返す(未指定なら undefined) */
144
+ get struct() {
145
+ return this.opts.struct;
146
+ }
147
+ /**
148
+ * 実コンテンツの描画。タグ付きなら BDC/EMC で囲む。
149
+ * 構造要素の begin/end は呼び出し側(renderer)が行う。
150
+ * page へ直接描画する renderer(表・コード等)はこれを経由すること。
151
+ */
152
+ drawTaggedContent(draw) {
153
+ if (this.opts.struct) {
154
+ this.opts.struct.markContent(this._page, draw);
155
+ }
156
+ else {
157
+ draw();
158
+ }
159
+ }
160
+ /** 意味を持たない描画(罫線・背景)。タグ付きなら Artifact で囲む */
161
+ drawArtifact(draw) {
162
+ if (this.opts.struct) {
163
+ this.opts.struct.markArtifact(this._page, draw);
164
+ }
165
+ else {
166
+ draw();
167
+ }
168
+ }
142
169
  newPage() {
143
170
  this._page = this.doc.addPage([this.opts.pageWidth, this.opts.pageHeight]);
144
171
  this._top = this.opts.pageHeight - this.opts.margin;
@@ -165,12 +192,15 @@ export class LayoutEngine {
165
192
  for (const line of lines) {
166
193
  this.ensureSpace(leading);
167
194
  if (line !== '') {
168
- this._page.drawText(line, {
169
- x: this.leftX + leftIndent,
170
- y: this._top - size * ASCENT_RATIO,
171
- size,
172
- font,
173
- color,
195
+ const y = this._top - size * ASCENT_RATIO;
196
+ this.drawTaggedContent(() => {
197
+ this._page.drawText(line, {
198
+ x: this.leftX + leftIndent,
199
+ y,
200
+ size,
201
+ font,
202
+ color,
203
+ });
174
204
  });
175
205
  }
176
206
  this._top -= leading;
@@ -186,11 +216,14 @@ export class LayoutEngine {
186
216
  const spaceAfter = options.spaceAfter ?? 8;
187
217
  this.moveDown(spaceBefore);
188
218
  this.ensureSpace(thickness + spaceAfter);
189
- this._page.drawLine({
190
- start: { x: this.leftX, y: this._top },
191
- end: { x: this.leftX + this.contentWidth, y: this._top },
192
- thickness,
193
- color,
219
+ // 水平線は意味を持たない装飾 → Artifact(PDF/UA 7.1-3)
220
+ this.drawArtifact(() => {
221
+ this._page.drawLine({
222
+ start: { x: this.leftX, y: this._top },
223
+ end: { x: this.leftX + this.contentWidth, y: this._top },
224
+ thickness,
225
+ color,
226
+ });
194
227
  });
195
228
  this.moveDown(spaceAfter);
196
229
  }