アプリ版:「スタンプのみでお礼する」機能のリリースについて

PDF注釈の内容をJavaScriptを使用して抽出して、
表示されたコンソールウィンドウのテキストをエクセルにきれいに貼りたいです。

出来上がりのエクセルは、

 A列:注釈が入っているページ
 B列:注釈の日付
 C列:注釈の制作者
 D列:注釈の種類
 E列:注釈についているコメント内容

としたいのですが、

コメント内に改行があると上手くいきません。
1文目は良いのですが、改行されたコメント内容がA列に貼られてしまいます。

先に 注釈のコメント内の改行を別の何かに置き換えるか、改行自体を削除すれば良いと思うのですが、上手くいきません。

教えてください!!

===========================
console.clear();

for (var p = 0; p < this.numPages; p++) {
var myAnnots = this.getAnnots({nPage: p});
if (myAnnots != null) {
for (var i = 0; i < myAnnots.length; i++) {
var msg = (myAnnots[i].page + 1) + '\t'
+ util.printd("yy/mm/dd HH:MM:ss", myAnnots[i].modDate) + '\t'
+ myAnnots[i].author + '\t'
+ myAnnots[i].type + '\t'
+ myAnnots[i].contents + '\t'

console.println(msg);
}
}
}

console.show();

A 回答 (1件)

こんにちは



手元のPDFでスクリプトが使えない環境になってしまったので、きちんとテストできてはいないのですが…


>注釈のコメント内の改行を別の何かに置き換えるか~~
PDFの注釈内の改行は(\r)だけのようですので、エクセルのセル内改行(\n)に置き換えれば良いかと思いましたが、コンソール表示時に改行扱いされてしまうようです。
ですので、コンソールからさらにコピペすると、結局、改行コードに戻ってしまうようですね。

ですので、若干面倒ではありますが、一旦、別の文字に置き換えて、エクセルへ移動後に「セル内改行」に再変換するといった手順が必要なようです。

例えば、注釈内の改行を'*'に置き換えるなら。
 myAnnots[i].contents.replace(/\r/g,'*')
実際には、'*'のような本文内でも使用される可能性のある文字を用いてしまうと正しく復号できない可能性がありますので、使われないであろう制御文字(例えばESCとか、ESC+* など)を利用するといった方法をとるのが宜しいのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとう

やっぱり、置換できても変わってしまうのですね…
絶対に使用しないであろう文字列に置き換えて 後で改行置換して対応してみます。
ありがとうございます。

お礼日時:2019/05/15 00:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!