圧縮されていない pdf ドキュメントには、疑似正規表現形式の次の不明確な形式 ((0,0) が左下) の「ストリーム オブジェクト」があります。
(x1 y1 m x2 y2 l [whitespace or blank or newline seperator symbol])* S (BT .* ET)*
どこ
x1, y1, x2, y2 are coordinates
l probably for "draw line"
m move to, "from to" or "merge"
S is the command for "draw" or the like
BT Begin Text
ET End Text
すべてのコマンドの後置。
編集:
1 つの可能な Java 正規表現は (ref PDF32000_2008.pdf) で、圧縮されていない pdf ソースで改行を空白に置き換えた後です。
((\s+\d+(\.\d+)?){2}(\s+m|\s+l|(\s+\d+(\.\d+)?){2}(\s+re|\s+y|\s+v|(\s+\d+(\.\d+)?){2}\s+c))\s+)+([SsFn]|[fBb](\*)?)
ストリームには「W*」や「Q q」などの他の要素があり、一般的に線の太さやフォント プロパティを調整しているように見えます。アドホックな言語仕様を見つけることができなかったので、これは私が実験から推測したものです。
この情報とテキスト トークンの座標 (ET と BT の間) を使用して、テーブル セルの幅、テーブルの開始位置と終了位置 (異なるテーブルを識別するため) を推測できます。
問題は、あらゆる種類のストリームを圧縮しないままです。pdftk を使用すると、openoffice ライターから作成された pdf ファイルを圧縮解除できましたが、任意の pdf ファイルにはまだ暗号化された記号が含まれています。
さらに詳しい情報:
http://www.gnupdf.org/Introduction_to_PDF
http://blog.idrsolutions.com/2011/05/understanding-the-pdf-file-format-%E2%80%93-carriage-returns-spaces-and-other-gaps/
http://blog.idrsolutions.com/2012/03/understanding-the-pdf-file-format-names-locations/
http://blog.idrsolutions.com/2011/05/understanding-the-pdf-file-format-%E2%80%93-pdf-xref-tables-explained/
PDF ページ ストリーム オプティマイザー ライブラリ?
http://www.gnupdf.org/Stream