- PR -

PDFの特定の部分を抽出してくるには?

投稿者投稿内容
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 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 ]
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2007-04-09 11:21
PDFには、ページを意味するオブジェクトはありますが、行を意味するオブジェクトはありません。よって描画ストリームを解析・レンダリングし、「行」に相当する部分を切り出す実装が必要になると思います。
ページを分割するよりはるかに高難度ですので、「これを使えばすぐできますよ」というものは、あったとしてもそれなりの値段がするんじゃないかと。
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 2007-04-09 22:29
ありがとうございます。
うーん……。上記の通り、各種余白・行の高さは固定できるので、「mm単位/インチ単位でここからここまで切り出せ」でもOKなのですがね。やはり難しいですか。
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2007-04-10 10:43
「行」のデータを、単純に画像として取り出すだけなら、もっと簡単かもしれません。
描画イメージをフリーのレンダリングエンジンを用いて作成し、そこから特定の領域を切り出すだけですから。
「行」のPDFファイルで文字検索を可能にしたい等だと、先に返信した通りになると思います。
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 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でほぼ同じコトをやっているアプリケーションを見つけたので、何らかの方法があると思うのですが……。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-04-10 14:47
引用:

Javaでほぼ同じコトをやっているアプリケーションを見つけたので、何らかの方法があると思うのですが……。



興味あるので、そのアプリケーションのリンクを教えていただけないでしょうか?
複数ページのPDFを指定したページのPDFに分割するってのは比較的簡単だと思いますが、
1ページを複数ってのはPDFの仕組み上難しいと思います。
例えばPDFにイメージが含まれていた場合、そのイメージも分割しないといけないですし、PDFは内部に様々な形式のイメージを保持できます。。。(jpeg, tiff...)
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2007-04-10 15:43
画像として切り出すことができれば、それをPDFとして保存することは可能なので、PDFのモンタージュ合成も可能では。透かしも特に問題ないように思えます。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-04-10 16:20
>(1)数行から十数行で構成された1ページ(現在はA4の予定)に収めたPDFを用意
>(2)1行ごとの(幅はA4、高さは任意の非定型用紙扱いの)PDFに分解して保存しておく。

PDFで保存しておかなくても、DBなりXMLファイルなりで1行分の固まりというか、チャンク
という単位でデータを保持しておいて、何らかの法則で繋げる必要が出たときに、PDFに
出力する方式ではだめなのでしょうか?。
元のデータが1ファイルのPDFでしか提供されないというのならば仕方ないですが、
(1)で「用意」と書かれているので、ある程度元データの保持方法には自由度があると
想定した話ですが。

スキルアップ/キャリアアップ(JOB@IT)