web-dev-qa-db-ja.com

PHPでPDFファイルを読む

建物のフロアマップである大きなPDFファイルがあります。このファイルには、座席の場所のテキストボックスを含むすべてのオフィス家具のレイヤーがあります。

私の目標は、このファイルをPHPで読み取り、ドキュメントのテキストレイヤーを検索し、ファイル内のコンテンツと座標を取得することです。この方法で、座席の位置-> x/y座標をマップできます。

PHP経由でこれを行う方法はありますか? (またはRubyまたはPythonそれが必要な場合)

49
Ryan Doherty

FPDFをチェックアウトします(FPDIを使用):

http://www.fpdf.org/

http://www.setasign.de/products/pdf-php-solutions/fpdi/

これらを使用すると、PDFを開いて、PHPでコンテンツを追加できます。また、それらの機能を使用して、必要な値について既存のコンテンツを検索することもできると思います。

別の可能なライブラリはTCPDFです: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf

最新のライブラリを追加するための更新: PDF Parser

31
Jay

必要なことを正確に実行するphpライブラリ(pdfparser)があります。

プロジェクトのウェブサイト

http://www.pdfparser.org/

github

https://github.com/smalot/pdfparser

デモページ/ api

http://www.pdfparser.org/demo

プロジェクトにpdfparserを含めると、mypdf.pdf そのようです:

<?php
$parser = new \installpath\PdfParser\Parser();
$pdf    = $parser->parseFile('mypdf.pdf');  
$text = $pdf->getText();
echo $text;//all text from mypdf.pdf

?>

同様に、pdfオブジェクト(画像など)を取得するのと同様に、pdfからメタデータを取得できます。

24
kasper Taeymans

うーん...正確にphpではありませんが、phpからプログラムを呼び出してpdfを一時htmlファイルに変換し、phpで結果ファイルを解析できます。私は私のプロジェクトのために似たようなことをしました、これは私が使用したプログラムです:

PdfToHtml

このプログラムの素晴らしい点は、絶対位置座標を持つ<div>タグ内のテキスト要素を吐き出すことです。これはまさにあなたがやろうとしていることのようです。

0
Rado

最初のリクエストは、「建物のフロアマップである大きなPDFファイルがあります。」

これはあなたが想像するよりも難しいかもしれないとあなたに伝えるのが怖いです。

原因pdfを解析するために誰もが最後に使用する既知のライブラリはsmalotであり、これは大きなファイルに関する問題に遭遇することが知られています。

ここでも、多くの「開発者」が行うようにメモリ制限を無効にするためのPHP構成を必要とするメモリピークなしに、pdfを解析する実際のPHPライブラリを探します(これは本当にお勧めできません)。

smalotのパフォーマンスの詳細については、この投稿を参照してください: https://github.com/smalot/pdfparser/issues/16

0
jmo

このアプリケーションも試してみてください http://pdfbox.Apache.org/ 。実例は https://www.jinises.com にあります。

0
Mike