pdf-generator
PDFファイルをプログラムで生成・操作するスキルです。PDFの新規作成、フォームへの入力、テキストや画像の抽出、透かし・オーバーレイの追加、複数ドキュメントの結合など、幅広い用途に対応します。テンプレートを使ったフォーム入力から白紙からのレポート生成まで、さまざまなPDF処理が必要な場面で活用できます。
description の原文を見る
Create and manipulate PDF files programmatically. Use when the user needs to generate PDFs, fill PDF forms, extract PDF content, add watermarks/overlays, or merge documents. Supports both template-based generation (form filling, overlays) and from-scratch creation. Keywords: PDF, document, form, fillable, merge, watermark, extract, text, report.
SKILL.md 本文
PDF ジェネレータ
このスキルを使う場合
このスキルは以下の場合に使用してください:
- データや仕様からプログラムで PDF ドキュメントを作成
- PDF フォームに動的データを入力
- 既存の PDF に透かし、スタンプ、またはオーバーレイを追加
- PDF ファイルからテキストとメタデータを抽出
- 複数の PDF を 1 つのドキュメントにマージ
- PDF 構造とフォーム フィールドを分析
このスキルを使わない場合:
- ユーザーが PDF を開く/表示したい場合 (ネイティブ PDF ビューアを使用)
- テキストフローを伴う複雑なページレイアウトが必要な場合 (HTML-to-PDF ツール を検討)
- パスワード保護された PDF を操作する場合 (サポートが限定的)
- スキャンされたドキュメントに対して OCR が必要な場合
前提条件
- Deno がインストール済み (https://deno.land/)
- テンプレートベースの操作用の入力 PDF ファイル
- ゼロから生成する場合の JSON 仕様
クイックスタート
2 つの動作モード
-
テンプレート モード: 既存の PDF テンプレートを変更
- フォーム フィールドを入力 (テキスト、チェックボックス、ドロップダウン)
- オーバーレイを追加 (テキスト、画像、図形)
- PDF をマージして結合
-
ゼロから作成 モード: JSON 仕様を使用して何もない状態から PDF を作成
手順
モード 1: テンプレートベースの生成
ステップ 1a: テンプレートを分析
既存の PDF からフォーム フィールドと構造を抽出:
deno run --allow-read scripts/analyze-template.ts form-template.pdf > inventory.json
出力 (inventory.json):
{
"filename": "form-template.pdf",
"pageCount": 2,
"title": "Application Form",
"author": "Company Inc",
"pages": [
{ "pageNumber": 1, "width": 612, "height": 792, "text": "..." }
],
"formFields": [
{ "name": "FullName", "type": "text", "value": "" },
{ "name": "Email", "type": "text", "value": "" },
{ "name": "AgreeToTerms", "type": "checkbox", "value": false }
],
"placeholders": [
{ "tag": "{{DATE}}", "location": "page 1", "pageNumber": 1 }
],
"hasFormFields": true
}
ステップ 1b: 入力仕様を作成
form-data.json を作成:
{
"formFields": [
{ "name": "FullName", "value": "John Smith" },
{ "name": "Email", "value": "john@example.com" },
{ "name": "AgreeToTerms", "value": true }
],
"flattenForm": true
}
ステップ 1c: 入力済み PDF を生成
deno run --allow-read --allow-write scripts/generate-from-template.ts \
form-template.pdf form-data.json filled-form.pdf
オーバーレイを追加 (透かし、スタンプ)
watermark-spec.json を作成:
{
"overlays": [
{
"type": "text",
"page": 1,
"x": 200,
"y": 400,
"text": "CONFIDENTIAL",
"fontSize": 48,
"color": { "r": 1, "g": 0, "b": 0 },
"rotate": 45
},
{
"type": "image",
"page": 1,
"x": 450,
"y": 700,
"path": "logo.png",
"width": 100,
"height": 50
}
]
}
PDF をマージ
merge-spec.json を作成:
{
"prependPdfs": [
{ "path": "cover-page.pdf" }
],
"appendPdfs": [
{ "path": "appendix-a.pdf", "pages": [1, 2, 3] },
{ "path": "appendix-b.pdf" }
],
"excludePages": [5, 6]
}
モード 2: ゼロからの生成
ステップ 2a: 仕様を作成
spec.json を作成:
{
"title": "Quarterly Report",
"author": "Finance Team",
"pages": [
{
"size": "A4",
"elements": [
{
"type": "text",
"x": 50,
"y": 750,
"text": "Q4 2024 Financial Report",
"fontSize": 28,
"font": "HelveticaBold",
"color": { "r": 0, "g": 0, "b": 0.5 }
},
{
"type": "line",
"startX": 50,
"startY": 740,
"endX": 550,
"endY": 740,
"thickness": 2
},
{
"type": "text",
"x": 50,
"y": 700,
"text": "Executive Summary",
"fontSize": 18,
"font": "HelveticaBold"
},
{
"type": "text",
"x": 50,
"y": 670,
"text": "This quarter showed strong growth across all divisions...",
"fontSize": 12,
"maxWidth": 500,
"lineHeight": 16
}
]
}
]
}
ステップ 2b: PDF を生成
deno run --allow-read --allow-write scripts/generate-scratch.ts spec.json output.pdf
例
例 1: 申請フォームに記入
シナリオ: 職務経歴書申請フォームに自動入力
# 1. フォームを分析してフィールド名を検出
deno run --allow-read scripts/analyze-template.ts application.pdf --pretty
# 2. 応募者情報を含む form-data.json を作成
# 3. 記入済みフォームを生成
deno run --allow-read --allow-write scripts/generate-from-template.ts \
application.pdf form-data.json john-smith-application.pdf
例 2: 承認スタンプを追加
シナリオ: ドキュメントに「APPROVED」スタンプを追加
stamp-spec.json:
{
"overlays": [
{
"type": "rectangle",
"page": 1,
"x": 400,
"y": 700,
"width": 150,
"height": 50,
"color": { "r": 0.9, "g": 1, "b": 0.9 }
},
{
"type": "text",
"page": 1,
"x": 410,
"y": 720,
"text": "APPROVED",
"fontSize": 20,
"font": "HelveticaBold",
"color": { "r": 0, "g": 0.5, "b": 0 }
},
{
"type": "text",
"page": 1,
"x": 410,
"y": 705,
"text": "2024-12-15",
"fontSize": 10
}
]
}
例 3: テーブル付きレポートを作成
シナリオ: データ テーブル付きの単純なレポートを生成
report-spec.json:
{
"title": "Sales Report",
"pages": [{
"size": "Letter",
"elements": [
{
"type": "text",
"x": 72,
"y": 720,
"text": "Monthly Sales Report",
"fontSize": 24,
"font": "HelveticaBold"
},
{
"type": "table",
"x": 72,
"y": 680,
"rows": [
["Product", "Units", "Revenue"],
["Widget A", "150", "$15,000"],
["Widget B", "75", "$11,250"],
["Widget C", "200", "$8,000"]
],
"columnWidths": [150, 80, 100],
"rowHeight": 25,
"headerBackground": { "r": 0.9, "g": 0.9, "b": 0.9 }
}
]
}]
}
スクリプト リファレンス
| スクリプト | 目的 | 権限 |
|---|---|---|
analyze-template.ts | PDF からテキスト、メタデータ、フォーム フィールドを抽出 | --allow-read |
generate-from-template.ts | フォームに記入、オーバーレイを追加、PDF をマージ | --allow-read --allow-write |
generate-scratch.ts | JSON 仕様から PDF を作成 | --allow-read --allow-write |
要素タイプ (ゼロから作成モード)
| タイプ | 説明 | キー オプション |
|---|---|---|
text | テキスト内容 | x, y, text, fontSize, font, color, rotate |
image | PNG/JPEG 画像 | x, y, path, width, height, opacity |
rectangle | 塗りつぶされた/枠線付きの長方形 | x, y, width, height, color, borderColor |
line | 直線 | startX, startY, endX, endY, thickness |
circle | 塗りつぶされた/枠線付きの円 | x, y, radius, color, borderColor |
table | 基本的なテーブル レイアウト | x, y, rows, columnWidths, rowHeight |
使用可能なフォント
Helvetica(デフォルト)HelveticaBoldHelveticaObliqueTimesRomanTimesBoldCourierCourierBold
ページ サイズ
A4(595.28 x 841.89 ポイント)Letter(612 x 792 ポイント)Legal(612 x 1008 ポイント)- カスタム:
[width, height](ポイント単位)
よくある問題と解決方法
問題: フォーム フィールドが見つからない
症状: フィールド名が存在しないというエラーが表示される
解決方法:
analyze-template.tsを実行して正確なフィールド名を確認- フィールド名は大文字と小文字を区別
- フォーム フィールドに見えるが、記入不可のテキストもある PDF がある
問題: テキスト位置がずれている
症状: テキストが間違った位置に表示される
解決方法:
- PDF 座標は左下 (0,0) から開始
- Y は上向きに、X は右向きに増加
analyze-template.tsを使用してページ寸法を確認
問題: 画像が表示されない
症状: 画像オーバーレイが表示されない
解決方法:
- ファイル パスが spec.json の場所から相対的であることを確認
- 画像が PNG または JPEG 形式であることを確認
- 座標がページ範囲内であることを確認
問題: マージされた PDF のページ順序が間違っている
症状: ページが予期しない順序で表示される
解決方法:
prependPdfsはテンプレートの前にページを追加appendPdfsはテンプレートの後にページを追加pages配列を使用して特定のページを選択:[1, 3, 5]
制限事項
- 組み込みテーブル レイアウトなし: テーブルは手動で列幅を指定する必要があります
- 標準フォントのみ: ゼロから作成モードではカスタム フォント埋め込みはサポートされていません
- テキストの自動折り返しなし: テキストは自動的に次のページに折り返されません
- 限定的なフォーム フィールド作成: 既存のフォームを記入できますが、新しいフィールドは作成できません
- 暗号化なし: パスワード保護された PDF を作成できません
- 基本的なグラフィックス: グラデーション、パターン、または複雑なパスはありません
- テキスト抽出: すべての PDF で完璧に機能しない場合があります (PDF 構造に依存)
関連スキル
- pptx-generator: PowerPoint プレゼンテーション作成用
- docx-generator: Word ドキュメント作成用
- xlsx-generator: Excel スプレッドシート作成用
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jwynia
- リポジトリ
- jwynia/agent-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jwynia/agent-skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。