コンテンツにスキップ
getnextpdf.com

NextPDF FAQ

このページは、NextPDF を評価したり新しいプロジェクトを始めたりするときにまず出てくる質問に答えます。各回答は短く、それを完全に扱うページへリンクしています。 NextPDF は、ISO 32000-2 で定義されるファイルフォーマットである Portable Document Format(PDF)2.0 のドキュメントを生成・検査する PHP 8.4 エンジンです。

まったくの初めてなら、まず はじめる を読み、その後具体的な内容のためにここへ戻ってきてください。

Core から始めてください。オープンソースのコア(nextpdf/core)は、Apache-2.0 ライセンスのもと無償で、PDF 出力を生成し、サポートされる HTML を PDF にレンダリングし、PDF を検査します。Core はすでに、PDF Advanced Electronic Signatures(PAdES) B-B および B-T のベースラインレベルの CMS SignedData 署名を生成します。高度な生成とドキュメント操作、電子請求書出力 (Factur-X / ZUGFeRD)、またはリモート署名・クラウド KMS 署名・順次署名といった高度な署名ワークフローが必要なときは Pro を選んでください。PDF/A アーカイブの作成ワークフロー、Document Security Store とドキュメントタイムスタンプを伴う PAdES 長期レベル(B-LT / B-LTA)、ハードウェアセキュリティモジュール(HSM)を通じたハードウェア裏付けの署名、または適格電子署名が必要なときは Enterprise を選んでください。Pro と Enterprise は、有償ラインである NextPDF Premium の 2 つのライセンスエディションです。パスを選ぶ を参照してください。

はい、コアについては。nextpdf/core"license": "Apache-2.0" を宣言し、その LICENSE ファイルに Apache License 2.0 の全文を同梱しています。帰属表示と NOTICE の要件(Apache-2.0 §4)に従う限り、コアを使用、改変、再配布、商用化できます。 NextPDF Pro と NextPDF Enterprise はプロプライエタリな商用エディションであり、そのライセンスでカバーされ ません。NextPDF の名前とロゴは、コードのライセンスとは別の商標です。製品ライセンス を参照してください。

PHP 8.4 です。パッケージの制約は >=8.4 <9.0 であるため、Composer は PHP 8.3 以下、 または PHP 9 へのインストールを拒否します。NextPDF は 1 つのモダンなランタイムをターゲットとし、その言語機能を直接使用します。NextPDF をインストールする を参照してください。

いいえ、コアエンジンには不要です。ネイティブエンジンは PHP と標準の PHP 拡張で実装されており、外部の PDF バイナリも必須のヘッドレスブラウザもありません。 fluent API と組み込みの writeHtml() HTML パイプラインは、ブラウザもネットワーク呼び出しもなくプロセス内で実行されます。Chrome または Chromium バイナリは オプション で、Artisan レンダラー(writeHtmlChrome())にのみ必要です。これは nextpdf/artisan として別途インストールします。Cloudflare と Gotenberg のブリッジもオプションで、サービスへ呼び出します。パスを選ぶ を参照してください。

コアの composer.json は、標準拡張である ext-mbstringext-zlibext-intlext-gdext-curlext-openssl を必要とします。これらは一般的に利用可能な PHP 拡張です。ランタイムでインストールされ有効になっていることを確認してください。 ext-curl はオプションのネットワーク往復――RFC 3161 タイムスタンプとリモートアセットの取得――を支えるため、オフラインのネイティブ生成はそれを使いませんが、 Composer は依然としてそれをハードな要件として列挙します。統合は起動時に必要なものを確認し、いずれかが欠けていれば明確なメッセージで停止します。完全なリストはパッケージの composer.json にあります。NextPDF をインストールする を参照してください。

コアをインストールし、fluent API でドキュメントを構築します。

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$document = Document::createStandalone();
$document->addPage();
$document->setFont('helvetica', 'B', 24);
$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);
$document->save(__DIR__ . '/first.pdf');

最初の PDF でステップごとに進めてください。

いいえ。Core は Core 機能セットのためのオープンソースエンジンで、ウォーターマークも催促画面もありません。Core 機能セット――生成、検査、暗号化、PDF/A および PDF/UA の出力プリミティブ、そしてソフトウェアキーの B-B/B-T 署名(Premium の長期検証と鍵管理のワークフローを除く)――について、Core は完全です。評価用ウォーターマークは Premium 評価グラント にのみ適用され、そこでは取り外し可能なマークの背後で完全な Pro および Enterprise の機能セットをテストします。有償ライセンスはアプリケーションコードを変更せずにそれを取り除きます。ライセンスとアクティベーション を参照してください。

Pro または Enterprise へアップグレードするのにコードの変更は必要ですか?

「Pro または Enterprise へアップグレードするのにコードの変更は必要ですか?」という見出しのセクション

ほとんど不要です。nextpdf/premium をインストールすると、フレームワーク統合とサーバーが自動的にそれを検出し、追加機能を公開します。ほとんどのアプリケーションは同じ高レベルの統合ポイントを保ちます。一部の Premium ワークフローは、構成や機能固有の呼び出しを必要とするかもしれません。署名済みライセンスエンベロープを、デプロイメントごとに一度アクティベートします。ライセンスとアクティベーション を参照してください。

はい。Apache License 2.0 には非商用の制限はありません。帰属表示と NOTICE の義務を守り、コードのライセンスを NextPDF ブランドを使用する許可として扱わない限り、コアをクローズドソース、有償、または社内の商用製品で使用できます。製品ライセンス商標とブランドの使用 を参照してください。

PDF を読み取って解析できますか、それとも書き込みだけですか?

「PDF を読み取って解析できますか、それとも書き込みだけですか?」という見出しのセクション

両方、ただし注意があります。NextPDF は PDF を書き込み、また読み取ります。Inspect モジュールは既存のファイルを、複雑度、フォント、画像、リスクのデータを持つ構造化された InspectResult へ読み込み、既存のドキュメントをマージおよび分割できます。Inspect は 実験的(experimental) と表記されているため、その結果の形はマイナーバージョン間で変わる可能性があります――長期的な契約としてではなく、診断とゲートに使用してください。 Inspect モジュール を参照してください。

はい。fluent API と組み込みの writeHtml() パイプラインは、ラスタライズされた画像ではなく実際のテキストコンテンツを出力するため、出力は選択可能で検索可能です。 Artisan レンダラーの writeHtmlChrome() も、テキストを選択可能に保ちます。 最初の PDF を参照してください。

コアエンジンには純粋な PHP の HTML パイプラインが含まれます。writeHtml() は、 サポートされる CSS のサブセットを持つ HTML フラグメントを、ブラウザもネットワーク呼び出しもなく直接ページへレンダリングします。レイアウトが完全なブラウザ忠実度を必要とするとき――flexbox、grid、Web フォントなど――は、Artisan レンダラーをインストールして writeHtmlChrome() を呼び出してください。あるプロパティに頼る前に、 CSS サポートマトリクス を確認してください。

Helvetica のような組み込みの標準フォントエイリアスは、単純な WinAnsi テキストに対してセットアップなしで機能するため、最初のドキュメントにフォントファイルは不要です。 組み込みのラテン標準フォントは基本的な WinAnsi テキストに適しています。Symbol と ZapfDingbats は独自のエンコーディングを使用します。他のスクリプトをレンダリングするには、 そのスクリプトをサポートする文字マップとシェーピングパスを持つフォントを登録して埋め込みます。フォントサポートマトリクスFont モジュール を参照してください。

はい、明確な境界とともに。プロファイルのサポートは適合ではありません。コアは適合性ディスクリミネーターとタグ付けプリミティブを同梱しています――enableTaggedPdf() は PDF/UA ワークフローで使用されるタグ付き PDF 構造の出力を有効にし、enablePdfA() は Core で PDF/A 出力プロファイルを選択します。Premium エディションは、その上に高レベルのアーカイブ作成ワークフローとツール(検証、ポリシー、本番運用)を追加します。NextPDF はプロファイルが要求する構造的アーティファクトを出力します。veraPDF のような独立したバリデーターが、特定のファイルが実際に適合するかを判定します。適合性Accessibility モジュール を参照してください。

コアは、構成された署名プロバイダーを通じてサポートされるソフトウェアキーアルゴリズムを使用し、Cryptographic Message Syntax(CMS)SignedData 署名を生成し、RFC 3161 タイムスタンプ(B-T レベル)を適用できます。あなたのコードは SignerInterface 契約に依存するため、同じ呼び出しがエディションをまたいで機能します。PAdES B-LT および B-LTA の長期レベル、HSM と PKCS#11 の鍵管理、そして適格署名は Enterprise の機能です。 クラウドおよび KMS 裏付けの署名ワークフローは Pro で提供されます。Core は B-B と B-T のベースライン構造を生成します。 Signing モジュール を参照してください。

Document は単回使用です。一度書き込んだら、それを再利用するのではなく、次のドキュメントのために新しいインスタンスを作成してください。これにより、PHP-FPM、キューワーカー、フレームワークが使用するリクエストごと・ジョブごとのモデルに自然に適合します――各作業単位が独自のドキュメントを構築します。信頼できない入力を解析または構成するときは、その作業を制約されたワーカー内で実行し、リソースガード (maxFilesmaxTotalBytesmaxBytes)をきつく保ってください。Document モジュールエンジンの脅威モデル を参照してください。

構造的には決定論的ですが、デフォルトではバイト単位で同一ではありません。同じ入力の 2 回の実行は構造的に等しい PDF を生成しますが、それぞれが新しいトレーラーとドキュメント /ID を持つため、バイトは異なります。署名とタイムスタンプは、設計上、 実行ごとにさらなるばらつきを加えます。同一のバイトを期待するのではなく、構造的等価を中心に比較を計画するか、揮発性のフィールドを正規化してください。

composer.lock をコミットして、デプロイされたすべてのワーカーが同じエンジンバージョンを解決するようにし、その後、任意の PHP ライブラリと同じようにデプロイします――ネイティブ生成にはデーモン、ブラウザ、ネットワークは不要です。 タイムスタンプ(B-T)、リモートアセット、またはオプションのブラウザブリッジは、 構成されたネットワークアクセスを必要とします。非 PHP のサービスがエンジンを必要とする場合は、NextPDF Server を実行してください。これはエンジンを Model Context Protocol(MCP)、REST、gRPC で公開します。Premium については、デプロイメントが読み込む場所に署名済みライセンスエンベロープを配置し、一度きりのアクティベーションステップを実行してください。キャッシュされたライセンス状態により、通常の処理にライセンスサービスは不要であるため、エアギャップされたデプロイメントもサポートされます。 NextPDF をインストールするライセンスとアクティベーション を参照してください。

NextPDF はエラーを文字列のエラーコードではなく PHP の例外クラスで報告し、コンテキスト対応の例外は構造化された診断フィールドを保持します。トラブルシューティングナレッジベース は、一般的な署名、PDF/A、PDF/UA、フォント、タグ付け、 暗号化の失敗を、その原因と解決方法へマッピングします。