- - PR -
PDFの特定の部分を抽出してくるには?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-06 16:34
現在iTextを用いてPDFの生成を行うアプリケーションを作成しています。
表題の件、元になるPDFをある一定の高さを持った行ごとに分解(おのおの別のPDFに出力)したいのですが、具体的な方法がわかりません。 http://www.ujihara.jp/iTextdotNET/ja/tutorial/index.html などで、ページ毎に分解する方法は見つけたのですが……。 行数は可変ですが、行の高さは固定でOKです。元になるPDFの用紙・余白も固定できます。 もし何か御存知の方がいらっしゃればアドバイスをお願いします [ メッセージ編集済み 編集者: 田舎の開発者 編集日時 2007-04-06 16:35 ] | ||||
|
投稿日時: 2007-04-09 11:21
PDFには、ページを意味するオブジェクトはありますが、行を意味するオブジェクトはありません。よって描画ストリームを解析・レンダリングし、「行」に相当する部分を切り出す実装が必要になると思います。
ページを分割するよりはるかに高難度ですので、「これを使えばすぐできますよ」というものは、あったとしてもそれなりの値段がするんじゃないかと。 | ||||
|
投稿日時: 2007-04-09 22:29
ありがとうございます。
うーん……。上記の通り、各種余白・行の高さは固定できるので、「mm単位/インチ単位でここからここまで切り出せ」でもOKなのですがね。やはり難しいですか。 | ||||
|
投稿日時: 2007-04-10 10:43
「行」のデータを、単純に画像として取り出すだけなら、もっと簡単かもしれません。
描画イメージをフリーのレンダリングエンジンを用いて作成し、そこから特定の領域を切り出すだけですから。 「行」のPDFファイルで文字検索を可能にしたい等だと、先に返信した通りになると思います。 | ||||
|
投稿日時: 2007-04-10 14:15
本当の画像、となってしまうとちょっと厳しいです。
最初にも書きましたが、切り出す先もPDFにしたいのですよ。 何をしたいかというと、任意の行を再構成したいのです。つまり、 (1)数行から十数行で構成された1ページ(現在はA4の予定)に収めたPDFを用意 (2)1行ごとの(幅はA4、高さは任意の非定型用紙扱いの)PDFに分解して保存しておく。 (3)任意のタイミングで任意の行(例:1行目と4行目と5行目だけ)を組み合わせて再度1ページのPDFに合成 というコトをしたいのですよ。 で、(3)は、(2)が個々のPDFに分解されているなら方法が見つかりました。問題は(2)なワケです。 文字検索とかはしなくていいのですが、PDFの体裁を保たないと(3)が実行できないのですよ。(3)は(3)で、透かしの付加などが必要になる予定ですので。 Javaでほぼ同じコトをやっているアプリケーションを見つけたので、何らかの方法があると思うのですが……。 | ||||
|
投稿日時: 2007-04-10 14:47
興味あるので、そのアプリケーションのリンクを教えていただけないでしょうか? 複数ページのPDFを指定したページのPDFに分割するってのは比較的簡単だと思いますが、 1ページを複数ってのはPDFの仕組み上難しいと思います。 例えばPDFにイメージが含まれていた場合、そのイメージも分割しないといけないですし、PDFは内部に様々な形式のイメージを保持できます。。。(jpeg, tiff...) | ||||
|
投稿日時: 2007-04-10 15:43
画像として切り出すことができれば、それをPDFとして保存することは可能なので、PDFのモンタージュ合成も可能では。透かしも特に問題ないように思えます。
| ||||
|
投稿日時: 2007-04-10 16:20
>(1)数行から十数行で構成された1ページ(現在はA4の予定)に収めたPDFを用意
>(2)1行ごとの(幅はA4、高さは任意の非定型用紙扱いの)PDFに分解して保存しておく。 PDFで保存しておかなくても、DBなりXMLファイルなりで1行分の固まりというか、チャンク という単位でデータを保持しておいて、何らかの法則で繋げる必要が出たときに、PDFに 出力する方式ではだめなのでしょうか?。 元のデータが1ファイルのPDFでしか提供されないというのならば仕方ないですが、 (1)で「用意」と書かれているので、ある程度元データの保持方法には自由度があると 想定した話ですが。 |