web-dev-qa-db-ja.com

PDFファイルの構造?

小さなプロジェクトの場合、pdfファイルを解析し、それらの特定の部分(単純な文字のチェーン)を取得する必要があります。 pythonを使用してこれを実行したいのですが、何らかの方法で必要な処理を実行できるライブラリがいくつか見つかりました。

しかし、今、いくつかの調査の後、私はpdfファイルの本当の構造が何であるか疑問に思っています、誰かがオンラインで仕様またはいくつかの説明があるかどうか知っていますか? Adobeでリンクを見つけましたが、デッドリンクのようです:(

62

こちらがアドビの参考資料へのリンクです

http://www.Adobe.com/devnet/pdf/pdf_reference.html

ただし、PDFはプレゼンテーションに関するものであり、構造に関するものではありません。解析は容易ではありません。

40
minty

GNU Introduction to PDF が構造を理解するのに役立つことがわかりました。読みやすい 例PDFファイル が詳細に説明されています。

その他の役立つリンク:

  • PDF簡潔な本 はより長く、役に立つ写真があります。
  • PDFの内部の紹介 は、詳細な説明ではありませんが、簡単な概要と多くの写真が含まれるプレゼンテーションです。
26
Jeff Moser

最初にPDFの作業を始めたとき、 PDFリファレンス の操作が非常に難しいことがわかりました。ファイル構造の概要は構文にあり、Adobeがドキュメント構造と呼んでいるのはオブジェクト構造であり、ファイル構造ではないことを知るのに役立つ場合があります。それは構文にもあります。オペレータの説明は付録Aに隠されています-コンテンツストリームで何が起こっているかを理解するのに非常に役立ちます。色空間で作業するのに苦労しているなら、グラフィックスに隠されていることに気付くでしょう!うまくいけば、これらのポインタがあなたが私よりも早く物事を見つけるのに役立つことを願っています。

ウィンドウを使用している場合、 pdftron CosEdit を使用すると、オブジェクト構造を参照して理解できます。ファイルを確認することはできますが、保存することはできません無料のデモがあります。

24
danio

ここに生の PDF 1.7 のリファレンス、そしてここに PDFの構造を記述する ファイルがあります。Vimを使用する場合、- pdftk plugin は、これまでよりもやや生の形式でドキュメントを探索するための良い方法であり、 pdftk ユーティリティ自体(およびそのGPLソース)は、離れて文書をからかいます。

10
jmah

私はほぼ同じことをしようとしています。 PDF参照は読むのが非常に難しい文書です。 このチュートリアル は私が考えるより良いスタートです。

7
Noran

これは少し光を当てるのに役立つかもしれません:(PDF32000.bookの11ページから)

PDF構文は、図1に示すように、4つの部分として考えることで最もよく理解できます。

•オブジェクト。 PDF文書は、データオブジェクトの基本的なタイプの小さなセットから構成されるデータ構造です。7.2項「字句規則」では、オブジェクトやその他の構文要素を記述するために使用される文字セットについて説明します7.3節「オブジェクト」では、オブジェクトの構文と基本的なプロパティについて説明し、7.3.8節「ストリームオブジェクト」では、最も複雑なデータ型であるストリームオブジェクトの詳細を説明します。

•ファイル構造。 PDFファイル構造は、オブジェクトをPDFファイルに保存する方法、オブジェクトにアクセスする方法、更新する方法を決定します。この構造はセマンティクスに依存しません。サブ句7.5、「ファイル構造」、ファイル構造について説明し、サブ句7.6、「暗号化」、ドキュメントのコンテンツを不正アクセスから保護するためのファイルレベルのメカニズムについて説明します。

•ドキュメント構造。 PDFドキュメント構造は、基本オブジェクトタイプを使用して、PDFドキュメント:ページ、フォント、注釈などのコンポーネントを表す方法を指定します。 7.7節「ドキュメント構造」ではドキュメント構造全体について説明し、後の節ではコンポーネントの詳細なセマンティクスについて説明します。

•コンテンツストリーム。 PDFコンテンツストリームには、ページまたはその他のグラフィカルエンティティの外観を説明する一連の指示が含まれています。これらの指示は、オブジェクトとしても表されますが、ドキュメント構造および7.8節「コンテンツストリームとリソース」では、PDFコンテンツストリームとその関連リソースについて説明しています。

PDFファイルをナビゲートするのは、少し手間がかかるだけです。

6
Josh Albert

Didierには、PDFを解析するツールがあります。

http://didierstevens.com/files/software/pdf-parser_V0_4_3.Zip

またはここ:

http://blog.didierstevens.com/programs/pdf-tools/ いくつかの関連するpdf分析ツールをカタログしました。

別のツールは次のとおりです。

http://mshahzadlatif.wordpress.com/2011/09/28/view-pdf-structure-using-Adobe-acrobat-or-a-free-tool-called-pdfxplorer/

3
Peter Teoh

PDF Pythonを使用して解析する場合) [〜#〜] pdfminer [〜#〜] をご覧ください。これは、日付までPDFファイルを解析するのに最適なライブラリです。

3
codingscientist

PDFからテキストを抽出することは難しい問題です。なぜなら、PDFはそのようなレイアウト指向の構造を持っているからです。 docs and source code = CPANでのほとんど成功しなかった試み(私の実装はPerlで行われています)PDFデータ構造は非常にクールで適切に設計されていますが、読むよりも書く方が簡単です。

2
Chris Dolan

手がかりを得る1つの方法は、空のページで構成されるPDFファイルを作成することです。コンピューターにCutePDF Writerがあり、1ページの空のワードパッドドキュメントを作成しました。ファイルを開き、メモ帳を使用して.pdfファイルを開きます。

次に、このファイルのコピーを使用して、対象となる可能性のあるテキストの行またはブロックを削除してから、Acrobat Readerにリロードします。実用的な1ページPDFドキュメントを作成するのに必要な情報がほとんどないことに驚かれることでしょう。

コードからPDFフォームを作成するスプレッドシートを作成しようとしています。

2
Daniel Kim

PDFファイルの詳細と構造について読み始めるには、PDFリファレンスマニュアルが必要です。バージョン1.7から始めることをお勧めします。

Windowsでは、無料のツール PDF Analyzer を使用して、PDFファイルの内部構造を確認します。これは、リファレンスマニュアルを読む際の理解に役立ちます。

enter image description here

(私はPDFアナライザー、宣伝するつもりはありません)と提携しています)

0
juFo

PDFからテキストを抽出するには、Linux、BSDなどのマシンでこれを試すか、Windowsの場合はCygwinを使用します。

pdfinfo -layout some_pdf_file.pdf

some_pdf_file.txtという名前のプレーンテキストファイルが作成されます。 PDFファイルレイアウトが単純であるほど、.txtファイルの出力はより単純になります。

16進文字は.txtファイルの出力に頻繁に存在し、テキストエディターでは奇妙に見えます。これらの16進文字は、通常、PDFの中の一重引用符、二重引用符、箇条書き、ハイフンなどを表します。

16進文字が表示されるコンテキストを確認するには、次のgrepコマンドを実行し、元のPDFを手元に置いて、PDFでコードが表す文字を確認します。

grep -a --color=always "\\\\[0-9][0-9][0-9]" some_pdf_file.txt

これにより、ドキュメント内の異なる8進コードの一意のリストが提供されます。

grep -ao "\\\\[0-9][0-9][0-9]" some_pdf_file.txt|sort|uniq

これらの16進文字をASCIIと同等のものに変換するには、grep、sed、およびbcの組み合わせを使用できます。すぐにそれを行う手順を投稿します。

0
keithchristian