Files
pdfme/ja/docs/cli.html
2026-04-03 16:30:56 +09:00

210 lines
68 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ja" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-cli" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">CLI | pdfme</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://pdfme.com/ja/img/ogimage.png"><meta data-rh="true" name="twitter:image" content="https://pdfme.com/ja/img/ogimage.png"><meta data-rh="true" property="og:url" content="https://pdfme.com/ja/docs/cli"><meta data-rh="true" property="og:locale" content="ja"><meta data-rh="true" property="og:locale:alternate" content="en"><meta data-rh="true" name="docusaurus_locale" content="ja"><meta data-rh="true" name="docsearch:language" content="ja"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="CLI | pdfme"><meta data-rh="true" name="description" content="@pdfme/cli は、JSON-first な pdfme workflow のためのコマンドラインインターフェースです。"><meta data-rh="true" property="og:description" content="@pdfme/cli は、JSON-first な pdfme workflow のためのコマンドラインインターフェースです。"><link data-rh="true" rel="icon" href="/ja/favicon.ico"><link data-rh="true" rel="canonical" href="https://pdfme.com/ja/docs/cli"><link data-rh="true" rel="alternate" href="https://pdfme.com/docs/cli" hreflang="en"><link data-rh="true" rel="alternate" href="https://pdfme.com/ja/docs/cli" hreflang="ja"><link data-rh="true" rel="alternate" href="https://pdfme.com/docs/cli" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://V6YWG1D4SV-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"CLI","item":"https://pdfme.com/ja/docs/cli"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-1Z2MZW44WP"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-1Z2MZW44WP",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="pdfme" href="/ja/opensearch.xml">
<script src="https://media.ethicalads.io/media/client/ethicalads.min.js" async></script><link rel="stylesheet" href="/ja/assets/css/styles.5431d87a.css">
<script src="/ja/assets/js/runtime~main.6c709abc.js" defer="defer"></script>
<script src="/ja/assets/js/main.29a519aa.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(n,e)}}catch(t){}}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus"><div role="region" aria-label="メインコンテンツまでスキップ"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">メインコンテンツまでスキップ</a></div><div class="theme-announcement-bar announcementBar_mb4j" role="banner"><div class="announcementBarPlaceholder_vyr4"></div><div class="content_knG7 announcementBarContent_xLdY">🚀 &nbsp; Check out our new <a target="_blank" rel="noopener noreferrer" href="https://deepwiki.com/pdfme/pdfme">DeepWiki</a>! Ask interactive questions on docs and source code. &nbsp; 🧑‍💻</div><button type="button" aria-label="閉じる" class="clean-btn close closeButton_CVFx announcementBarClose_gvF7"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav aria-label="ナビゲーション" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="ナビゲーションバーを開く" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/ja/"><b class="navbar__title text--truncate">pdfme</b></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/ja/docs/getting-started">ドキュメント</a><a class="navbar__item navbar__link" href="/ja/templates">サンプル</a><a class="navbar__item navbar__link" href="/ja/template-design">テンプレート設計</a><a href="https://github.com/pdfme/pdfme" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://discord.gg/xWPTJbmgNV" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://app.pdfme.com?utm_source=website&amp;utm_content=navbar" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pdfme Cloudを試す<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://app.pdfme.com/contact?utm_source=website&amp;utm_content=navbar" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">お問い合わせ<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>日本語</a><ul class="dropdown__menu"><li><a href="/docs/cli" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="en">English</a></li><li><a href="/ja/docs/cli" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="ja">日本語</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="システムモード" aria-label="ダークモードを切り替える(現在はシステムモード)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="検索 (Meta+k)" aria-keyshortcuts="Meta+k"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">検索</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="先頭へ戻る" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="ドキュメントのサイドバー" class="menu thin-scrollbar menu_SIkG menuWithAnnouncementBar_GW3s"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/getting-started"><span title="はじめに" class="linkLabel_WmDU">はじめに</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/supported-features"><span title="サポートされている機能" class="linkLabel_WmDU">サポートされている機能</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/tables"><span title="動的データを持つテーブル" class="linkLabel_WmDU">動的データを持つテーブル</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/expression"><span title="式Expression" class="linkLabel_WmDU">Expression</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/headers-and-footers"><span title="ヘッダーとフッター" class="linkLabel_WmDU">ヘッダーとフッター</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ja/docs/custom-fonts"><span title="カスタマイズ" class="categoryLinkLabel_W154">カスタマイズ</span></a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ja/docs/custom-fonts"><span title="カスタムフォント" class="linkLabel_WmDU">カスタムフォント</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ja/docs/custom-ui"><span title="カスタムUI" class="linkLabel_WmDU">カスタムUI</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ja/docs/custom-schemas"><span title="カスタムスキーマ(プラグイン)" class="linkLabel_WmDU">カスタムスキーマ(プラグイン)</span></a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/ja/docs/cli"><span title="ツール (New)" class="categoryLinkLabel_W154">ツール (New)</span></a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/ja/docs/cli"><span title="CLI" class="linkLabel_WmDU">CLI</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ja/docs/converter"><span title="コンバーター" class="linkLabel_WmDU">コンバーター</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ja/docs/manipulator"><span title="マニピュレーター" class="linkLabel_WmDU">マニピュレーター</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/development-guide"><span title="開発ガイド" class="linkLabel_WmDU">開発ガイド</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/migration-v6"><span title="Migration Guide v6" class="linkLabel_WmDU">Migration Guide v6</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ja/docs/template-contribution-guide"><span title="テンプレート貢献ガイド ❤️" class="linkLabel_WmDU">テンプレート貢献ガイド ❤️</span></a></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="パンくずリストのナビゲーション"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="ホームページ" class="breadcrumbs__link" href="/ja/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">ツール (New)</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">CLI</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">このページの見出し</button></div><div class="theme-doc-markdown markdown"><header><h1>CLI</h1></header>
<p><code>@pdfme/cli</code> は、JSON-first な pdfme workflow のためのコマンドラインインターフェースです。</p>
<p>主な用途:</p>
<ul>
<li class="">custom Node script を書かずに template と inputs から PDF を生成する</li>
<li class=""><code>generate</code> の前に template や unified job を検証する</li>
<li class="">CI や agent 実行前に runtime、font、<code>basePdf</code>、出力先の問題を診断する</li>
<li class="">既存 PDF を画像やページサイズ情報に変換する</li>
<li class="">official example を template または unified job として取り出す</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="インストール">インストール<a href="#インストール" class="hash-link" aria-label="インストール への直接リンク" title="インストール への直接リンク" translate="no"></a></h2>
<p>Node.js 20 以降が必要です。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">npm install -D @pdfme/cli</span><br></span></code></pre></div></div>
<p><code>npx</code> から直接実行することもできます。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">npx @pdfme/cli generate --help</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="コマンド一覧">コマンド一覧<a href="#コマンド一覧" class="hash-link" aria-label="コマンド一覧 への直接リンク" title="コマンド一覧 への直接リンク" translate="no"></a></h2>
<ul>
<li class=""><code>pdfme generate</code>
<ul>
<li class="">unified job または <code>--template</code> + <code>--inputs</code> から PDF を生成する</li>
<li class="">必要に応じてページ画像も出力する</li>
<li class="">画像にグリッド線と schema 境界を重ねられる</li>
</ul>
</li>
<li class=""><code>pdfme validate</code>
<ul>
<li class="">生成前に template または unified job を検証する</li>
<li class=""><code>--json</code> で machine-readable な inspection を返す</li>
</ul>
</li>
<li class=""><code>pdfme doctor</code>
<ul>
<li class="">環境、input、font、<code>basePdf</code>、cache、output path を診断する</li>
</ul>
</li>
<li class=""><code>pdfme pdf2img</code>
<ul>
<li class="">既存 PDF をページ画像へ変換する</li>
</ul>
</li>
<li class=""><code>pdfme pdf2size</code>
<ul>
<li class="">PDF のページサイズをミリメートル単位で確認する</li>
</ul>
</li>
<li class=""><code>pdfme examples</code>
<ul>
<li class="">official example を一覧表示または出力する</li>
</ul>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-generate"><code>pdfme generate</code><a href="#pdfme-generate" class="hash-link" aria-label="pdfme-generate への直接リンク" title="pdfme-generate への直接リンク" translate="no"></a></h2>
<p><code>generate</code> は次の 2 形式を受け付けます。</p>
<ul>
<li class="">unified job file</li>
<li class="">template file + separate inputs file</li>
</ul>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Unified job file: { template, inputs, options? }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate job.json -o out.pdf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Template + inputs を別ファイルで指定</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate -t template.json -i inputs.json -o out.pdf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># ページ画像も出力</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate job.json -o out.pdf --image</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 画像にグリッド線と schema 境界を重ねる</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate job.json -o out.pdf --grid</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># CLI から basePdf を上書き</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate -t template.json -i inputs.json --basePdf invoice.pdf -o out.pdf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># CI / agent 向けの構造化出力</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate job.json -o out.pdf --image --json</span><br></span></code></pre></div></div>
<p>主なオプション:</p>
<table><thead><tr><th>オプション</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td><code>[file]</code></td><td>-</td><td><code>{ template, inputs, options? }</code> を含む unified job file</td></tr><tr><td><code>-t, --template</code></td><td>-</td><td>Template JSON file</td></tr><tr><td><code>-i, --inputs</code></td><td>-</td><td>Input JSON file</td></tr><tr><td><code>-o, --output</code></td><td><code>output.pdf</code></td><td>出力 PDF パス</td></tr><tr><td><code>--force</code></td><td><code>false</code></td><td>暗黙の <code>output.pdf</code> 上書きを許可する</td></tr><tr><td><code>--image</code></td><td><code>false</code></td><td>生成した各ページの画像も書き出す</td></tr><tr><td><code>--imageFormat</code></td><td><code>png</code></td><td><code>png</code> または <code>jpeg</code></td></tr><tr><td><code>--scale</code></td><td><code>1</code></td><td>画像レンダリングの scale</td></tr><tr><td><code>--grid</code></td><td><code>false</code></td><td>生成画像にグリッド線と schema 境界を描画する</td></tr><tr><td><code>--gridSize</code></td><td><code>10</code></td><td>グリッド間隔(mm)</td></tr><tr><td><code>--font</code></td><td>-</td><td><code>Name=path.ttf</code> 形式のローカル custom font。複数指定時はカンマ区切り</td></tr><tr><td><code>--basePdf</code></td><td>-</td><td><code>template.basePdf</code> を PDF file path で上書きする</td></tr><tr><td><code>--noAutoFont</code></td><td><code>false</code></td><td>CJK 文字向けの <code>NotoSansJP</code> 自動解決を無効化する</td></tr><tr><td><code>-v, --verbose</code></td><td><code>false</code></td><td>入出力や描画条件を stderr に出す</td></tr><tr><td><code>--json</code></td><td><code>false</code></td><td>stdout に JSON のみを出す</td></tr></tbody></table>
<p>注意点:</p>
<ul>
<li class=""><code>output.pdf</code> が既に存在し、かつ <code>-o</code><code>--force</code> を明示していない場合、<code>generate</code> は上書きを拒否します。</li>
<li class=""><code>--grid</code><code>--image</code> を付けていなくても画像出力を有効にします。</li>
<li class="">生成画像は出力 PDF と同じディレクトリに <code>&lt;output-base&gt;-1.png</code>, <code>&lt;output-base&gt;-2.png</code> の形式で保存されます。<code>--imageFormat jpeg</code> の場合は <code>.jpg</code> になります。</li>
<li class=""><code>--font</code> のローカルパスは CLI 実行時の current working directory 基準で解決されます。</li>
<li class="">unified job の <code>options.font.&lt;name&gt;.data</code> にあるローカルパスは、job file または template file のあるディレクトリ基準で解決されます。</li>
<li class="">CJK が含まれ、かつ明示的な font source がない場合、CLI は <code>--noAutoFont</code> が付いていない限り <code>NotoSansJP</code> を自動解決して cache します。</li>
</ul>
<p>Unified job の例:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;template&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;basePdf&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;width&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">210</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;height&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">297</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;padding&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;schemas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;customerName&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;type&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;text&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;position&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"> </span><span class="token property">&quot;x&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token property">&quot;y&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">50</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;width&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">80</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;height&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;inputs&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"> </span><span class="token property">&quot;customerName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;John Doe&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;options&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;font&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;NotoSansJP&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;data&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;https://fonts.gstatic.com/...&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;fallback&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">false</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;subset&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><br></span></code></pre></div></div>
<p><code>template.basePdf</code> には <code>&quot;./invoice.pdf&quot;</code> のような相対 PDF path も指定できます。必要なら <code>--basePdf</code> で実行時に上書きできます。</p>
<p><code>--json</code> 指定時の stdout は JSON のみになります。</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;ok&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;command&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;generate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;mode&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;job&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;templatePageCount&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;inputCount&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;pageCount&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;outputPath&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;out.pdf&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;outputBytes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">12345</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;imagePaths&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;out-1.png&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-validate"><code>pdfme validate</code><a href="#pdfme-validate" class="hash-link" aria-label="pdfme-validate への直接リンク" title="pdfme-validate への直接リンク" translate="no"></a></h2>
<p><code>validate</code> は template file または unified job file を、生成前に検証します。</p>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme validate template.json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme validate job.json --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">cat job.json | pdfme validate - --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme validate template.json --strict</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme validate template.json -v --json</span><br></span></code></pre></div></div>
<p>主な検証内容:</p>
<ul>
<li class="">pdfme の template validation による構造チェック</li>
<li class="">未知の schema type</li>
<li class="">同一ページ内の重複 field name</li>
<li class="">ページをまたいだ同名 field の warning</li>
<li class="">ページ境界外にはみ出す field position の warning</li>
<li class="">template top-level の未知フィールドに対する warning</li>
<li class="">unified job が <code>generate</code> に渡せる形かどうか</li>
<li class="">unified job に対する field-level input contract check</li>
</ul>
<p>便利なフラグ:</p>
<ul>
<li class=""><code>--strict</code>
<ul>
<li class="">warning も failure 扱いにする</li>
</ul>
</li>
<li class=""><code>--json</code>
<ul>
<li class=""><code>valid</code>, <code>errors</code>, <code>warnings</code>, <code>inspection</code>, <code>inputHints</code> を返す</li>
</ul>
</li>
<li class=""><code>-v, --verbose</code>
<ul>
<li class="">入力 source、mode、件数、サマリを stderr に出す</li>
</ul>
</li>
</ul>
<p><code>inputHints</code> により、<code>generate</code> 実行前に writable field が何を期待しているかを判定できます。現行 CLI は次の入力種別を区別します。</p>
<ul>
<li class="">plain string</li>
<li class=""><code>contentKind</code> 付きの asset-like string</li>
<li class="">human-readable な <code>rule</code> を持つ barcode string</li>
<li class=""><code>string[][]</code> の table payload</li>
<li class=""><code>format</code> metadata を持つ canonical date/time string</li>
<li class=""><code>select</code> / <code>checkbox</code> / <code>radioGroup</code> の constrained enum string</li>
<li class=""><code>multiVariableText</code> 向けの JSON string object</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-doctor"><code>pdfme doctor</code><a href="#pdfme-doctor" class="hash-link" aria-label="pdfme-doctor への直接リンク" title="pdfme-doctor への直接リンク" translate="no"></a></h2>
<p><code>doctor</code> は実行環境や特定の template/job を、生成前に診断します。</p>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 環境診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Template または job の診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor job.json --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># stdin から診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">cat job.json | pdfme doctor - --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Font に絞った診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor fonts job.json --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 自動 CJK font 解決を無効化した条件で診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor job.json --noAutoFont --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># generate と同じ output path / image output 条件で事前診断</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor job.json -o artifacts/out.pdf --image --imageFormat jpeg --json</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-pdf2img"><code>pdfme pdf2img</code><a href="#pdfme-pdf2img" class="hash-link" aria-label="pdfme-pdf2img への直接リンク" title="pdfme-pdf2img への直接リンク" translate="no"></a></h2>
<p>既存 PDF をページ画像に変換します。</p>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf --grid --gridSize 10</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf --pages 1-3</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf -o ./images --imageFormat jpeg</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf -o ./images --json</span><br></span></code></pre></div></div>
<p>挙動:</p>
<ul>
<li class=""><code>-o, --output</code> はファイル名ではなくディレクトリを受け取ります</li>
<li class="">出力ファイル名は <code>&lt;input-base&gt;-&lt;page&gt;.png</code> または <code>.jpg</code> です</li>
<li class=""><code>--pages</code><code>1-3</code><code>1,3,5</code> のような形式を受け取ります</li>
<li class=""><code>--grid</code> はレンダリングされたページ画像にミリメートルグリッドを描画します</li>
<li class=""><code>--json</code> では <code>pageCount</code>, <code>selectedPageCount</code>, <code>outputPaths</code>, 各ページの width/height を返します</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-pdf2size"><code>pdfme pdf2size</code><a href="#pdfme-pdf2size" class="hash-link" aria-label="pdfme-pdf2size への直接リンク" title="pdfme-pdf2size への直接リンク" translate="no"></a></h2>
<p>PDF のページサイズをミリメートル単位で確認します。</p>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2size invoice.pdf</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2size invoice.pdf --json</span><br></span></code></pre></div></div>
<p>標準サイズを検出できる場合、人間向け出力には <code>A4 portrait</code> のようなラベルも付きます。JSON 出力の例:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;ok&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;command&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pdf2size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;pageCount&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token property">&quot;pages&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"> </span><span class="token property">&quot;pageNumber&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token property">&quot;width&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">210</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token property">&quot;height&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">297</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pdfme-examples"><code>pdfme examples</code><a href="#pdfme-examples" class="hash-link" aria-label="pdfme-examples への直接リンク" title="pdfme-examples への直接リンク" translate="no"></a></h2>
<p>playground の asset manifest から official example を一覧表示または出力します。</p>
<p>使用例:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 一覧表示</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples --list</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># name 未指定でも一覧表示</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Template を stdout に出力</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples invoice</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Template をファイルに保存</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples invoice -o template.json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># サンプル入力付き unified job を出力</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples invoice --withInputs -o job.json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Manifest metadata を JSON で取得</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples --list --json</span><br></span></code></pre></div></div>
<p>挙動:</p>
<ul>
<li class="">manifest と template asset は <code>https://playground.pdfme.com/template-assets</code> から取得されます</li>
<li class=""><code>PDFME_EXAMPLES_BASE_URL</code> 環境変数で base URL を上書きできます</li>
<li class=""><code>--withInputs</code> では sample inputs に加えて、official hosted font が必要な例では <code>options.font</code> も同梱されます</li>
<li class=""><code>--json</code> の list mode では template name、schema type、font name、page count などの metadata を返します</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="font-contract">Font Contract<a href="#font-contract" class="hash-link" aria-label="Font Contract への直接リンク" title="Font Contract への直接リンク" translate="no"></a></h2>
<p>CLI は font を「明示的な source contract」として扱います。</p>
<p>サポートされる explicit font source:</p>
<ul>
<li class=""><code>--font Name=./path.ttf</code> による local <code>.ttf</code> file</li>
<li class="">unified job <code>options.font.&lt;name&gt;.data</code> にある local <code>.ttf</code> file</li>
<li class="">public な direct <code>http(s)</code> font asset URL</li>
<li class=""><code>.ttf</code> data URI</li>
<li class="">programmatic use における inline bytes</li>
</ul>
<p>現行ルール:</p>
<ul>
<li class="">明示的にサポートする custom font format は <code>.ttf</code> のみ</li>
<li class=""><code>.otf</code><code>.ttc</code> は reject される</li>
<li class=""><code>fonts.googleapis.com/css*</code> の stylesheet URL は reject される</li>
<li class="">unsafe/private/loopback な <code>http(s)</code> URL は reject される</li>
<li class="">explicit remote font fetch は 15 秒 timeout、32 MiB size limit で解決される</li>
<li class="">remote font failure は <code>EFONT</code> で返る</li>
</ul>
<p>CJK 向けの自動 <code>NotoSansJP</code> 解決は、明示的な font source がないときだけ使われます。CJK を含み、font が cache されておらず、さらに自動解決が無効または不可能な場合は <code>generate</code><code>EFONT</code> で失敗します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="structured-output-と-exit-code">Structured Output と Exit Code<a href="#structured-output-と-exit-code" class="hash-link" aria-label="Structured Output と Exit Code への直接リンク" title="Structured Output と Exit Code への直接リンク" translate="no"></a></h2>
<p><code>--json</code> を付けると:</p>
<ul>
<li class="">stdout は JSON のみになる</li>
<li class="">成功 payload は <code>ok: true</code></li>
<li class="">failure payload は <code>ok: false</code><code>error.code</code>, <code>error.message</code>, 場合によっては <code>error.details</code> を含む</li>
<li class=""><code>-v, --verbose</code> の人間向け情報は引き続き stderr に出る</li>
</ul>
<p>現行の exit code 区分:</p>
<table><thead><tr><th>コード</th><th>意味</th></tr></thead><tbody><tr><td><code>0</code></td><td>成功</td></tr><tr><td><code>1</code></td><td>argument / validation / unsupported input failure</td></tr><tr><td><code>2</code></td><td>runtime / font-resolution failure</td></tr><tr><td><code>3</code></td><td>file I/O failure</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="典型的な使い方">典型的な使い方<a href="#典型的な使い方" class="hash-link" aria-label="典型的な使い方 への直接リンク" title="典型的な使い方 への直接リンク" translate="no"></a></h2>
<p>official example から job を作成して、まず診断し、画像で確認してから PDF を作成します。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme examples invoice --withInputs -o job.json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor job.json --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate job.json -o out.pdf --image --grid</span><br></span></code></pre></div></div>
<p>既存 PDF を basePdf として使う overlay workflow:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2img invoice.pdf --grid --gridSize 10</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme pdf2size invoice.pdf --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme doctor template.json -o out.pdf --image --json</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pdfme generate -t template.json -i inputs.json -o out.pdf --image --grid</span><br></span></code></pre></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href="https://github.com/pdfme/pdfme/tree/main/website/docs/cli.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>このページを編集</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="ドキュメントページ"><a class="pagination-nav__link pagination-nav__link--prev" href="/ja/docs/custom-schemas"><div class="pagination-nav__sublabel">前へ</div><div class="pagination-nav__label">カスタムスキーマ(プラグイン)</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/ja/docs/converter"><div class="pagination-nav__sublabel">次へ</div><div class="pagination-nav__label">コンバーター</div></a></nav></div></div><div class="col col--3"><div style="position:sticky;top:76px"><div class="tableOfContents_bqdL thin-scrollbar custom-toc"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#インストール" class="table-of-contents__link toc-highlight">インストール</a></li><li><a href="#コマンド一覧" class="table-of-contents__link toc-highlight">コマンド一覧</a></li><li><a href="#pdfme-generate" class="table-of-contents__link toc-highlight"><code>pdfme generate</code></a></li><li><a href="#pdfme-validate" class="table-of-contents__link toc-highlight"><code>pdfme validate</code></a></li><li><a href="#pdfme-doctor" class="table-of-contents__link toc-highlight"><code>pdfme doctor</code></a></li><li><a href="#pdfme-pdf2img" class="table-of-contents__link toc-highlight"><code>pdfme pdf2img</code></a></li><li><a href="#pdfme-pdf2size" class="table-of-contents__link toc-highlight"><code>pdfme pdf2size</code></a></li><li><a href="#pdfme-examples" class="table-of-contents__link toc-highlight"><code>pdfme examples</code></a></li><li><a href="#font-contract" class="table-of-contents__link toc-highlight">Font Contract</a></li><li><a href="#structured-output-と-exit-code" class="table-of-contents__link toc-highlight">Structured Output と Exit Code</a></li><li><a href="#典型的な使い方" class="table-of-contents__link toc-highlight">典型的な使い方</a></li></ul></div><div data-ea-publisher="pdfmecom" data-ea-type="image"></div></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">ドキュメント</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/ja/docs/getting-started">はじめに</a></li><li class="footer__item"><a class="footer__link-item" href="/ja/docs/supported-features">サポートされている機能</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">その他</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/ja/templates">サンプル</a></li><li class="footer__item"><a class="footer__link-item" href="/ja/template-design">テンプレート設計</a></li><li class="footer__item"><a href="https://app.pdfme.com?utm_source=website&amp;utm_content=footer" target="_blank" rel="noopener noreferrer" class="footer__link-item">pdfme Cloudを試す<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">コミュニティ</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/pdfme/pdfme" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://discord.gg/xWPTJbmgNV" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 pdfme</div></div></div></footer></div>
</body>
</html>