Xpdf連携
現在のバージョン: 1.3.2
警告: この拡張機能は exec() の使用を必要とし、Xpdf コマンドラインツールの自己インストールも必要とします。
SearchWP は、WordPress ウェブサイトにアップロードされた PDF ファイルからプレーンテキストを抽出するというユニークな機能を提供します。標準では、SearchWP は PHP のみを使用してこれを試みますが、PDF フォーマットの複雑さと多様性により、コンテンツが正確に抽出されない場合があります。そこで Xpdf の出番です。
Xpdf にはコマンドラインツールのセットがあり、この拡張機能が機能するためにはサーバーにインストールされている必要があります。手順はこちらに含まれています。
Xpdf 連携拡張機能を使用すると、PHP が PDF ファイルを処理するために行うすべての作業を、Xpdf のコマンドラインツールにオフロードできます。これらのツールは、PDF からコンテンツを抽出する際に非常に高速で正確です。拡張機能を有効にした後、インストール手順に従う必要があります。インストールが完了すると、SearchWP は PDF コンテンツ抽出プロセスを Xpdf にオフロードします。
Xpdf コマンドラインツールのインストール
この拡張機能を使用すると、Xpdf を利用して PDF からコンテンツを抽出できます。
重要: Xpdf コマンドラインツールは、この拡張機能のダウンロードには含まれていません。コマンドラインツールをダウンロードし、非公開 (Web ルートの外) の場所にアップロードする手順に必ず従ってください。
Windows および Linux の Xpdf コマンドラインツールは、http://www.xpdfreader.com/download.html からダウンロードできます。
インストール
サーバーの種類に合わせてコマンドラインツールをダウンロードしたら:
xpdf-tools-linux-4.03.tar.gzを展開します (バージョン番号は異なる場合があります)pdftotextバイナリ (展開後、サーバーのアーキテクチャに応じてbin32またはbin64ディレクトリにあります) を、Web ルートの外の非公開の場所にアップロードしますpdfinfoバイナリ (展開後、サーバーのアーキテクチャに応じてbin32またはbin64ディレクトリにあります) を、Web ルートの外の非公開の場所にアップロードしますpdftotextとpdfinfoの両方に、サーバー上の PHP ユーザーに対する実行権限があることを確認してください
最後のステップは、SearchWP Xpdf Integration に pdftotext と pdfinfo をどこにインストールしたかを伝えることです。これを行うには:
以下のコードを SearchWP カスタマイズ プラグインに追加します。/path/to/pdftotext を、サーバー上のpdftotext および pdfinfo バイナリへの実際のパス (フォルダではなく) に置き換えてください。
// Tell SearchWP the location of the pdftotext binary.
add_filter( 'searchwp_xpdf_path', function() {
return '/home/johndoe/pdftotext'; // Full absolute path to the binary NOT A FOLDER, NOT A URL.
} );
// Tell SearchWP the location of the pdfinfo binary.
add_filter( 'searchwp_pdfinfo_path', function() {
return '/home/johndoe/pdfinfo'; // Full absolute path to the binary NOT A FOLDER, NOT A URL.
} );
これで完了です!
Xpdf 連携での PDF パスワードサポートの追加
Xpdf は searchwp_xpdf_commandフィルターを使用して、パスワード保護された(読み取り専用:暗号化されていない)PDFの解析をサポートしています。このフィルターを使用すると、Xpdfを実行するコマンドを直接操作できるため、Xpdfがパスワードを含めるオプションをサポートしていることから、次のように実行できます。
Xpdf統合の手動テスト
Xpdf統合拡張機能をアップロードして有効にし、pdftotextへのパスを指定した後、メディアライブラリにアップロードされた特定のPDFでXpdfのテキスト抽出が期待どおりに機能していることを手動で確認できます。まず、SearchWP設定画面(設定 > SearchWP)に移動し、SearchWP設定画面の拡張機能でXpdf統合リンクを見つけます。
Xpdf統合テスト画面で、テストしたいPDFのIDを入力できます。

IDは、メディアセクションに移動してからPDFの編集リンクをクリックすることで見つけることができます。IDはURLに表示され、post=の後に続きます。
有効なIDを送信すると、Xpdf統合拡張機能が実行した手順の詳細なログと、発生した可能性のある失敗点が示されます。また、XpdfがPDFから抽出した正確なコンテンツも表示されます。

ログに失敗点が表示された場合は、提出するサポートリクエストに含めてください。
Xpdf統合エラーコード
Xpdfの実行に問題があった場合、以下のいずれかのエラーコードがログに表示されます。
| 終了コード | 説明 |
|---|---|
| 0 | コマンドは正常に実行されました |
| 1 | 指定されていないエラーのキャッチオール |
| 2 | 権限の問題。www-data(またはお使いのWebサーバーユーザー)にpdftotextを実行する権限があることを確認してください。 |
| 11 | セグメンテーション違反。お使いのサーバー環境に適したXpdfバイナリを使用していますか? |
| 126 | Webサーバーユーザーからpdftotextを実行する際に権限の問題があります。ホストに適切な権限があるか確認してください。 |
| 127 | サーバーがpdftotextを実行できませんでした。ホストにWebサーバーユーザーがpdftotextを実行できるか確認してください。 |
| 139 | Webサーバーユーザーからpdftotextを実行する際に権限の問題があります。ホストに適切な権限があるか確認してください。 |
変更履歴
1.3.2
- [改善] シェルコマンド引数にエスケープを追加
- [修正] 拡張機能ドキュメントへのリンクを修正
1.3.1
- [修正] PHP 8.2以降で非推奨となった動的プロパティの作成
1.3.0
- [新規] PDFメタデータを抽出するための
pdfinfoのサポートを追加 - [更新] アップデーターを更新しました
1.2.0
- [新規] SearchWP 4のサポートを追加
1.1.6
- [新規]
exec()が利用できない場合に通知を表示(必要不可欠なため) - [更新] アップデーターを更新しました
1.1.5
- [変更] XpdfがXpdfReaderに変更されたため、コマンドのフォーマットが変更されました。pdftotextも更新する必要があります。更新されたバージョンをダウンロードするには、XpdfReaderのWebサイトへのリンクについてはXpdf統合ドキュメントを参照してください。
- [更新] アップデーターを更新しました
1.1.3
- [更新] アップデーターを更新しました
- [変更] 最小必須SearchWPバージョンを更新
1.1.2
- [改善] 終了コードの処理を改善
1.1.1
- [新規] 新しいフィルター:
searchwp_xpdf_command(Xpdfコマンドの操作を許可)
1.1
- [改善] SearchWPライセンスキーに基づく自動更新のサポートを追加しました
0.7.2
- [修正] Windowsのディレクトリ区切り文字の処理を改善しました
0.7
- 初回リリース

