2010/02/22

acrobatのハイライトテキスト

数時間ネットで調べたのだが、やはり皆苦労しているようだ。
そもそもacrobatのJavascriptはリソースが少ない。少なすぎる!ってことで勉強する気にもなれず、一番手っ取り早いが不完全な方法で手を打つことにした。

単純にテキストがハイライトされたPDFをXMLで書き出すだけ。ハイライトされている部分は<Annot></Annot>で括られてるのでその部分だけを拾っていこうかと。頁番号はちょっと厄介。ノンブル部分の作り方に特徴があれば(例えば章タイトル+全角スペース×2+ノンブル、とか)、その規則性から拾ってくる手もあるんだが、そうでない場合は。。。。

まぁハイライト部分は出現順に拾えるはずなので、拾えているかどうかチェックもかねてノンブルを入力してもらっていくのがいいか。。。

2010/02/21

acrobat + javascript = ?

作業の効率化UPということを考えると、結局InDesignでできることは最小限に抑えたい、ということになる。InDesignを使える人ってのは限られているわけで、使えない人にもできる作業を増やすことで、効率化だけでなく、全体の作業量を増やすことができる。

で色々考えると、結局InDesignで色々やるんじゃなくて、wordで文書の構造化やレイアウト、文字属性を決めてしまうってのが手っ取り早いのだろう。
プレーンなテキストファイルってのはたしかに扱いやすいが、逆に手間がかかかる。例えば、学術書であれば、イタリックだったり上付き・下付き文字ってのは日常茶飯事でそれをテキストエディタでタグでくくっててのは手間。ワードだったらキーボードショートカット一発でそこらへんの文字属性は設定できるし。

ということでワードの文字属性やスタイルをほぼ完全にInDesignに読み込ませるようなスクリプトが必要。いや、実際InDesignの機能でほぼ読み込みできるのだが。

次に、InDesignで組み上がってきたものに対する処理。予算があればInCopyという手もあるのだが、そうではないので修正はInDesignでちまちまやる、と。

もひとつ面倒なのは索引。InDesign上で索引マーカーひいてくのが便利なのは確かなのだが、その時間を別の書籍の組版にあてたい。てことでPDF書き出して注釈可能にして、テキストをハイライトさせて索引マーカーを著者に引いてもらうのが一番いいかと。でAcrobatからハイライトテキストを書き出す。

という構想だったのだが、ハイライトテキストを書き出すにはいろいろとややこしい。そもそもテキストをハイライトさせる時にハイライトされている文字列を注釈にコピーする必要がありそれが自動的にコピーしてくれるのはAcrobatのみ。でReaderでハイライトされたテキストは文字列として書き出せないのである。ここでInDesignのようにJavaScriptで何とかなるんじゃないかと思ったんだが。。。

ぐぐってみても良い解決策は見当たらない。ここに
http://www.acrobatusers.com/forums/aucbb/viewtopic.php?id=14150
一応の答えはあるんだが。。。というかそもそもAcrobatでのJavascript環境が貧弱すぎ!でっ挫折気味なのだが、ここらへんちゃんとしたスクリプト出来たらかなり強力かもしれん。

つか調査不足だが、PDFをプログラムでコントロールするってはInDesign以上に効果的なような。

2010/02/03

Grepのバグ?

久々にIndesignネタを。

簡易タグから段落スタイルの割り当てというスクリプトを作っていて、例えば

<ex>
文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列
</ex>

とタグがあってスクリプトを走らせると、現ドキュメントで使用している段落スタイルを選びそのタグで囲まれた文字列に割り当てられる、というもの。

上記の例でいえば
app.findGrepPreferences.findWhat = "(?s)^<ex>\r(.+?)<\/ex>\r";
app.changeGrepPreferences.changeTo = "$1";
としておいて、findGrep()の戻り値に段落スタイルを適用して、changeGrep()でタグを取り除く、という仕組みにした。一段落ずつ見ていってタグを取り除くより正規表現で置換した方が楽に思えたので。

何回か検証して問題がなかったように見えたのだが、よく見ると、タグを除去した後に、上付き文字の位置がずれている。正確に言うと、上付きの属性がかかる位置がずれているのである。例えば、「H20の・・・」となっていたところが「H2O・・・」となっているのである。。。

どうも置換する際に属性の位置が保たれていないようである。いやいや本格運用する前に気づいて良かった。
ってこれはスクリプトだけではなく、Indesignの検索置換ダイアログでも同様の症状のようだ。。