PDFファイルを検査するためにどのツールをお勧めしますか?
使用例:(iTextを使用して)プログラムでPDFファイルを生成しようとしています。特定のレイアウトを作成するのに問題がありますが、テキストを希望どおりにレイアウトしたPDFファイル(Wordから生成)があります。彼らのやり方をリバースエンジニアリングしたいと思います。
PDF Inspectorは良いようですが、Windows用のものを探しています。
PDFファイルを検査するためにどのツールをお勧めしますか?
使用例:(iTextを使用して)プログラムでPDFファイルを生成しようとしています。特定のレイアウトを作成するのに問題がありますが、テキストを希望どおりにレイアウトしたPDFファイル(Wordから生成)があります。彼らのやり方をリバースエンジニアリングしたいと思います。
PDF Inspectorは良いようですが、Windows用のものを探しています。
no main manifest attribute, in PDF Document Inspector.jar
回答:
Adobe Acrobatには、PDFファイルを検査できる非常に優れた非表示モードがあります。それを説明するブログ記事をhttps://blog.idrsolutions.com/2009/04/viewing-pdf-objects/に書きました
他の回答で言及されているGUIベースのツールのほかに、元のPDFソースコードを別の表現に変換して、テキストエディターで(現在は変更されたファイル)を検査できるいくつかのコマンドラインツールがあります。以下のツールはすべて、Linux、Mac OS X、その他のUnixシステム、またはWindowsで動作します。
qpdf
(お気に入り)qpdfを使用して(ほとんどの)オブジェクトのストリームを解凍し、ObjStm
オブジェクトを個々の間接オブジェクトに分解します。
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
自身を「PDFファイルに対して構造的でコンテンツを保持する変換」を行うツールとして説明しています。
次にuncompressed-qpdf.pdf
、お気に入りのテキストエディタでファイルを開いて+検査します。以前に圧縮された(したがって、バイナリ)バイトのほとんどは、プレーンテキストになります。
mutool
MuPDF PDFビューアーにmutool
バンドルされているコマンドラインツールもあります(これはGhostscriptの姉妹製品であり、同じ会社であるArtifexによって作成されています)。次のコマンドもストリームの圧縮を解除し、テキストエディターでの検査をより簡単にします。
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFoは、PDF形式で動作するFreeSoftware / OpenSourceライブラリで、などのいくつかのコマンドラインツールが含まれていpodofouncompress
ます。次のように使用して、PDFストリームを解凍します。
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDFは、PDFファイルの探索に役立つPythonベースのツールです。その元々の目的はPDFベースのマルウェアの研究と解剖でしたが、完全に無害なPDFファイルの構造を調査することも役立つと思います。
インタラクティブに使用して、PDFに含まれているオブジェクトとストリームを「参照」できます。
ここでは使用例は示しませんが、そのドキュメントへのリンクのみを示します。
pdfid.py
そして pdf-parser.py
pdfid.py
そしてpdf-parser.py
2つのですディディエ・スティーヴンスのPDFツールはPythonで書かれました。
彼らの背景は、悪意のある PDFの調査にも役立ちますが、無害なPDFファイルの構造と内容を分析することも役立ちます。
以下は、PDFオブジェクトnoの非圧縮ストリームを抽出する方法の例です。5を* .dumpファイルに:
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
PDF内の一部のバイナリパーツは、PDF内に埋め込まれ、ネイティブ形式で使用されるため、必ずしも圧縮できない(または人間が読み取れるASCIIコードにデコードできる)とは限らないことに注意してください。このようなPDFパーツは、JPEG画像、フォント、またはICCカラープロファイルです。
上記のツールと与えられたコマンドラインの例を比較すると、それらがすべて同じ出力を生成するわけではないことがわかります。それら自体の違いを比較する作業は、PDF構文とファイル形式の性質をよりよく理解するのに役立ちます。
私が使用しiTextのRUPSのLinuxで(PDF構文を読み、更新を)。Javaで書かれているため、Windowsでも動作します。PDFファイル内のすべてのオブジェクトをツリー構造で参照できます。また、Flateでエンコードされたストリームをオンザフライでデコードして、検査を容易にすることもできます。
ここにスクリーンショットがあります:
java -jar itext-rups-5.5.6.jar
-> Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version
-どうやってこれを実行するのですか?編集:それを考え出した。SourceForgeが提供するデフォルトのファイルはダウンロードしないでください。依存関係を含む.jarをダウンロードする必要があります。
O2 SolutionsのPDFXplorerは、内部を表示するという傑出した仕事をします。
http://www.o2sol.com/pdfxplorer/overview.htm
(下部にある無料の邪魔なバナー)。
PDFBoxを使用して成功しました。これは、コードがどのように見えるかのサンプルです(バージョン0.7.2以降)。これは、提供された例の1つからのものである可能性があります。
// load the document
System.out.println("Reading document: " + filename);
PDDocument doc = null;
doc = PDDocument.load(filename);
// look at all the document information
PDDocumentInformation info = doc.getDocumentInformation();
COSDictionary dict = info.getDictionary();
List l = dict.keyList();
for (Object o : l) {
//System.out.println(o.toString() + " " + dict.getString(o));
System.out.println(o.toString());
}
// look at the document catalog
PDDocumentCatalog cat = doc.getDocumentCatalog();
System.out.println("Catalog:" + cat);
List<PDPage> lp = cat.getAllPages();
System.out.println("# Pages: " + lp.size());
PDPage page = lp.get(4);
System.out.println("Page: " + page);
System.out.println("\tCropBox: " + page.getCropBox());
System.out.println("\tMediaBox: " + page.getMediaBox());
System.out.println("\tResources: " + page.getResources());
System.out.println("\tRotation: " + page.getRotation());
System.out.println("\tArtBox: " + page.getArtBox());
System.out.println("\tBleedBox: " + page.getBleedBox());
System.out.println("\tContents: " + page.getContents());
System.out.println("\tTrimBox: " + page.getTrimBox());
List<PDAnnotation> la = page.getAnnotations();
System.out.println("\t# Annotations: " + la.size());
Acrobatのオブジェクトビューアは優れていますが、Windjack SolutionのPDF Canopenerを使用すると、スポイトでページ上のオブジェクトを選択する際の検査を改善できます。PDFに変更を加えることもできます。
PDFアナライザーはPDFXplorerに似ていますが、より多くのオプションがあります。一度の登録でも無料です。
私の提案は、PDFファイルの重要なテキスト編集作業を行うのに非常に役立つFoxit PDFリーダーです。