e-tipsmemo.hatenablog.com
文字列を抽出するのは最後
let mut textline : Vec<Object>= vec![]; for l in tmp.split('\n') { match op(CompleteStr(l)) { Ok((_, operate)) => { let operator = operate.operator; match operator.as_str() { "TJ" => { textline.extend(operate.operands); } "ET" => { println!("{:?}", textline); textline = vec![]; } _ => (), } } Err(_) => (), } }
ストリームは命令の列なのでそれを一行ずつ分解していって、lopdfのOperation構造体に入れ、
それがうまくパースできてTJなら一行の要素としてextendしていって、ET(End Text)が来たらテキストとして書き出す(つもり)。
行儀のいいPDFならPDFとして見たときに、文脈として関係ないテキストは別々のBT~ETの中に入っているだろうと期待していた、
例えば上の"PB14"と"PA0-WKUP"
が
そんなこともなかった
BT 4.5002 0 0 4.5024 401.7752 354.5591 Tm .0001 Tc (PB14)Tj -56.6623 9.25 TD 0 Tc (PA0-WKUP)Tj 75.7583 64.4482 TD .0001 Tc (10)Tj -8.934 0 TD 0 Tc (9)Tj -82.2613 -92.2518 TD (K)Tj .0835 9.212 TD (J)Tj ET
PDF Referenceによると
http://archimedespalimpsest.net/Documents/External/pdf_reference_1-7.pdf
TDが行を変えている命令だから、これがあれば文字列を分解することにしようかと思ったが、
実際はわかれているべきものなのかどうかがわからない
BT 4.5002 0 0 4.5024 315.6859 478.9902 Tm 0 Tc (V)Tj 1.417 -.5 TD .0001 Tc (SS_2)Tj ET
VSS_2も行の位置を変える命令を用いられている
これがひとまとまりである単語であるかわかれているべき単語なのかを
判定するのは骨だとおもわれるのでテキストから抽出する作戦はひとまず終了
次はTableから抽出してみようと思う。
- 作者: John Whitington,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/05/25
- メディア: 単行本(ソフトカバー)
- クリック: 166回
- この商品を含むブログ (9件) を見る
Adobe Acrobat DC ? PDF Readerそのほか
- 出版社/メーカー: Adobe Systems
- 発売日: 2016/02/18
- メディア: アプリ
- この商品を含むブログを見る