終了

イラレドキュメントに複数ページのPDFを全ページ貼り込みを実現させたいです

Community Beginner ,
Jun 06, 2025 Jun 06, 2025

お世話になります。

イラストレーターのスクリプトで次のような動作を実現させたいと考えております。

-----

開いているアートボードに、複数ページのPDFを全ページ貼り込み(リンク形式)

【環境】WindowsIlustratorCS6

-----

過去のフォーラムの会話「JavaScriptで、アートボードに配置したアイテムの間隔を指定したい」などを参考にさせていただき、AIなども頼りつつ、現状以下のスクリプトになりました。

 

テストに主に使用したPDFは計14ページあるのですが、とりあえず14ページ貼り込みはされるものの、すべて1ページ目が貼り込まれてしまいます。順次、つまり1ページから14ページを1ページずつ貼り込みたいのですが可能でしょうか? アートボードは別にする必要はありませんが、アートボードを作成していった方がかえってうまくいきますでしょうか? ページ数の取得が問題なのかと思い、ユーザーに総ページ数を入れてもらう仕様にしてみましたが、うまくいかず自分としては手詰まりとなってしまいました。

 

Ilustratorで配置したPDFを加工する目的があるため、あくまでIllustrator上で実現させたいと考えております。また、CCは所持しておりますのでバージョンが上がっても問題ございません。

 

当方ほとんどjavascriptの知識がない状態で、不躾な質問となってしまい申し訳ございませんが、よろしくお願いいたします。

-----

// PDFファイル選択
var fileObjs = File.openDialog("PDFを選択してください", "*.pdf", true);
var pdfOptions = app.preferences.PDFFileOptions;
pdfOptions.pDFCropToBox = PDFBoxType.PDFMEDIABOX;

// 定規の原点を左上に設定(変更なし)
app.activeDocument.rulerOrigin = [0, 0];

// A4サイズ(mm単位)
var artboardW = 210; // ドキュメント幅(mm)
var artboardH = 297; // ドキュメント高さ(mm)
var pageW = 210; // PDFのページ幅(mm)
var pageH = 297; // PDFのページ高さ(mm)
var spreadcount = 5;  // 1行のページ数(5個並べる)

// 各ページ間の間隔(5mm固定)
var xmargin = 5; 
var ymargin = 5;

var ptPerMm = 2.83465; // mm を pt に変換する係数

// ユーザーにページ数を入力してもらう
var userInput = prompt("PDFの総ページ数を入力してください", "10");
var pdfPages = parseInt(userInput, 10); // 数値に変換

if (fileObjs && !isNaN(pdfPages)) {
    var row = 0; // 縦の段数トラッキング
    var col = 0; // 横の配置トラッキング

    for (var f = 0; f < fileObjs.length; f++) {
        var fileObj = fileObjs[f];

        for (var p = 0; p < pdfPages; p++) { // **ユーザーが入力したページ数を使用**
            var artboardIndex = p % app.activeDocument.artboards.length; // アートボードの循環
            var artboard = app.activeDocument.artboards[artboardIndex];
            var artboardRect = artboard.artboardRect;

            var startX = artboardRect[0]; // 左上原点(変更なし)
            var startY = artboardRect[1]; // 左上原点(変更なし)

            var myX1 = startX + (ptPerMm * col * (pageW + xmargin)); // 横へ並べる
            var myY1 = startY - (ptPerMm * row * (pageH + ymargin)); // 縦の移動

            pdfOptions.pageToOpen = p + 1; // **ページ指定を適切に適用**
            var myImage = app.activeDocument.placedItems.add();
            myImage.file = fileObj;
            myImage.left = myX1;
            myImage.top = myY1;

            col++; // 次の列へ移動
            if (col >= spreadcount) {
                col = 0; // 横の配置をリセット
                row++;  // 次の行へ移動
            }
        }
    }
    pdfOptions.pageToOpen = 1;
} else {
    alert("正しいページ数を入力してください。");
}

 

キーワード
Win , スクリプティング
230
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 2 件の正解

Community Expert , Jun 06, 2025 Jun 06, 2025

ひとつ質問なんですけど、Illustratorなら PDFを開くだけで各ページがアートボードに配置された状態になりますが、それではダメなんですか?

翻訳
Community Expert , Jun 08, 2025 Jun 08, 2025

コード自体を見るに、CS6というのがうまく動かない原因です。CCにアップグレードすると動くんじゃないかと思います。もっとも、先に書いたようにPDFを編集目的で配置するのであれば直接開くのが効率的です。
ただし、配置して埋め込み経由で編集するのも同様ですがIllustratorでのPDF編集は完全なものではありませんので、諸々義注意ください。

翻訳
Community Expert ,
Jun 06, 2025 Jun 06, 2025

ひとつ質問なんですけど、Illustratorなら PDFを開くだけで各ページがアートボードに配置された状態になりますが、それではダメなんですか?

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Jun 08, 2025 Jun 08, 2025

Ten A様

早速のご確認・ご回答ありがとうございます。

返信が遅れまして失礼いたしました。

おっしゃるとおり、

CC2023でためしたところ、「開く」の後に

PDF読み込みオプション」が出てきて

配置を「すべて」にすることで各ページがアートボードに

配置された状態となりました。

(普段、事情によりCS6をメインで使っており、

CCの挙動についても勉強不足でお恥ずかしいです

 

また、デフォルトでは列方向に配置されるページの数は

制御できないようでしたが、

スクリプトを使い制御可能となることを

確認いたしました。

 

ご指摘のおかげで気づきを得て

希望する結果を得ることができました。

ありがとうございました。

 

 

 

 

 

 

 

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jun 08, 2025 Jun 08, 2025

コード自体を見るに、CS6というのがうまく動かない原因です。CCにアップグレードすると動くんじゃないかと思います。もっとも、先に書いたようにPDFを編集目的で配置するのであれば直接開くのが効率的です。
ただし、配置して埋め込み経由で編集するのも同様ですがIllustratorでのPDF編集は完全なものではありませんので、諸々義注意ください。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Jun 08, 2025 Jun 08, 2025
最新

Ten A様

ご返信いただき、ありがとうございます。

行き違いで返信をアップしてしまいましたが、

おかげさまで気づきを得まして、

おっしゃるとおり、CCの環境であればなんとかなりそうです。

 

>配置して埋め込み経由で編集するのも同様ですがIllustratorでのPDF編集は完全なものではありません


これは本当におっしゃるとおりで、リスクを伴うかと思いますが

お客様からの支給データがPDFのためやむなく…といったところです。

CCでの作業経験値が低いので、十分注意して作業を行うようにいたします。

 

いろいろと試行錯誤して勉強になりました。ありがとうございました。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines