リンクをクリップボードにコピー
コピー完了
投稿初心者なので、情報不足ありましたら申し訳ございません。
複数のpdfファイルを開いてアウトラインをかけて.aiで保存するスクリプト(下記参照)を
作成しました。
________________________________________________
var folder = Folder.selectDialog("Select a folder of PDF files");
if (folder != null) {
var files = folder.getFiles("*.pdf");
for (var i = 0; i < files.length; i++) {
var file = files[i];
var doc = app.open(file);
doc.selectObjectsOnActiveArtboard();
doc.createOutlines();
var newFile = new File(doc.path + "/" + doc.name.split(".pdf")[0] + ".ai");
doc.saveAs(newFile, Illustrator.SaveOptions.SAVECHANGES);
doc.close();
}
}
_________________________________________________
実行したところ
===============================
Error 24: doc.createOutlines が関数ではありません。
Line: 8
-> doc.createOutlines();
===============================
のエラーが発生し、ここを解消することができませんでした。
いろいろ、検索して調べてみましたが、わからなかったためコミュニティに投稿させていただきました。
お手数ですが、何卒、よろしくお願いいたします。。
createOutlines() はTextFrameクラスの関数です。
※Ten Aさんの返信のとおりでした。 Illustratorでは s いりません。この行だけは手打ちでテストしたのに手クセで正しいメソッド名を入力してた。。汗
Documentクラスであるところの変数docでやったのでエラーが出たわけです。
あと、オブジェクトのロック解除も折り込むべきかと思います。
.createOutlines() を実行する目的で改変するとなると、doc.pageItems コレクションをループして、オブジェクトがテキストなら.createOutlines() ,といった感じになりますが、めんどくさいので
メニューコマンドで ・ロック解除 ・アウトライン作成 を入れるとラクです。
var folder = Folder.selectDialog("Select a folder of PDF files");
if (folder != null) {
var files = folder.getFiles("*.pdf");
for (var i = 0; i < files.l
...
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
早速、ご連絡いただきましてありがとうございます!
内容理解しました。
textFrameItemに定義していく方法考えます。
リンクをクリップボードにコピー
コピー完了
createOutlines() はTextFrameクラスの関数です。
※Ten Aさんの返信のとおりでした。 Illustratorでは s いりません。この行だけは手打ちでテストしたのに手クセで正しいメソッド名を入力してた。。汗
Documentクラスであるところの変数docでやったのでエラーが出たわけです。
あと、オブジェクトのロック解除も折り込むべきかと思います。
.createOutlines() を実行する目的で改変するとなると、doc.pageItems コレクションをループして、オブジェクトがテキストなら.createOutlines() ,といった感じになりますが、めんどくさいので
メニューコマンドで ・ロック解除 ・アウトライン作成 を入れるとラクです。
var folder = Folder.selectDialog("Select a folder of PDF files");
if (folder != null) {
var files = folder.getFiles("*.pdf");
for (var i = 0; i < files.length; i++) {
var file = files[i];
var doc = app.open(file);
app.executeMenuCommand("unlockAll"); //すべてをロック解除
doc.selectObjectsOnActiveArtboard();
//doc.createOutlines(); //コメントアウト
app.executeMenuCommand("outline"); //アウトラインを作成
var newFile = new File(doc.path + "/" + doc.name.split(".pdf")[0] + ".ai");
doc.saveAs(newFile, Illustrator.SaveOptions.SAVECHANGES);
doc.close();
}
}
実際試してないのですが(ごめんなさいごめんなさい)参考にどうぞ。
予想だとPDF保存のくだりも問題がありそうに思いますが…
リンクをクリップボードにコピー
コピー完了
ありがとうございます!
PDF保存が手動で保存しなければいけなくなってしまいましたが
(SaveOptionsを変えれば対応できると思ってます)
対応できました!
リンクをクリップボードにコピー
コピー完了
テキストのアウトライン化は、先にAcrobatで済ませておくのをお勧めします。
リンクをクリップボードにコピー
コピー完了
ありがとうございます!
PDFの際にすでにアウトラインしておく方法があるのですね。
これは複数ファイル(何十ファイル)でも対応が可能なのか確認してから試してみます!
リンクをクリップボードにコピー
コピー完了
AIファイルの用途次第だとは思うのですが,環境にないフォントが使用されているPDF,Illustrator編集機能付きのPDFについては考慮しなくてよいのでしょうか。
リンクをクリップボードにコピー
コピー完了
ありがとうございます!
現在の要件は環境にないフォントが使用されているPDFは考慮していないです。
2点についても考慮した場合方法が異なりますね。
リンクをクリップボードにコピー
コピー完了
「PDF」というのが気になりますし、アウトライン化の目的はどのような目的でしょうか。
編集情報のないPDFを無理やり開くと、その時点で結果が変わる場合があるので、アウトライン化以前の話になります。
またAcrobatのプリフライトでアウトライン化しても、利用されている文字数次第ではかなりのデータ量になってしまうことがあり、むしろ出力時に不適な結果になる場合があります。
PDF/Xになっているのであれば、そのまま出力処理される方が望ましい、ということになりそうですし、アウトライン化を実施する目的を明確にしたほうが良いかもしれません。
リンクをクリップボードにコピー
コピー完了
ありがとうございます!
大量のpdfを扱う場合は、仰る通りそのまま出力が望ましいかもしれませんね。
数が少ない場合はプリフライトも一個の案として持っておきます。
アウトライン化の実施目的を明確化したうえで対応方法を変えたいと思います!