Adobe XDや他のデザインツールで作成したPDFをPhotoshopに取り込む際、各ページをレイヤーとして読み込みたい場面があります。
この記事では、複数ページのPDFを1ページずつ画像化し、レイヤーにまとめる手順を解説します。
文字やベクターを元の編集可能な要素として取り込む処理ではありません。
掲載コードは300 ppi・CMYK・8bit・トリムボックス指定です。2026年10月29日に、PDFOpenOptionsの警告抑制プロパティ名をAdobeのJavaScript Scripting Reference 2020に合わせ、supressWarningsからsuppressWarningsへ修正しました。以下の10月16日の実機記録は修正前のコードによるもので、この1行を直した版は実機で再実行していません。
2026年10月16日に、Adobe Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で、記事のコードを練習用の3ページのPDFに使い、3ページが3枚のレイヤーになることを確かめました。
ページの大きさが違うPDFの扱いと、実行後にPhotoshopに残る設定についても、結果を追記しています。

Adobe XDからのPDF出力手順
- Adobe XDでデザインを作成します。

- [書き出し] > [すべてのアートボード] > [単一のPDFファイル] を選択してPDFを出力します。

Adobe XDからの書き出しは、今回は試していません。
下の確認では、別のツールで作った練習用のPDFを使いました。
PDFをレイヤーとしてPhotoshopに読み込む手順
1. スクリプトの準備
先に作業中の文書を保存し、少ないページ数のPDFで試してください。
実行前のダイアログ設定と背景色を控えます。
このコードはPDFの選択前に設定を変え、キャンセルしても戻しません。
下記のコードをテキストエディタに貼り付け、ファイル名を「PDF_Pages_to_Layers.jsx」として保存します。
Photoshopの他の操作については、関連記事のまとめも参照してください。

PDF_Pages_to_Layers.jsx
#target photoshop
app.bringToFront();
displayDialogs = DialogModes.NO;
var myMaxPages = 100;
var myCounter = 1;
var myResolution = 300;
var myColor = OpenDocumentMode.CMYK;
app.backgroundColor.rgb.red = 255;
app.backgroundColor.rgb.green = 255;
app.backgroundColor.rgb.blue = 255;
var _pdfDatei = File.openDialog("PDFファイルの選択");
var myDatei = "" + _pdfDatei;
var myEndung = myDatei.substr(myDatei.length-4,4);
if (myEndung !== ".pdf") {
alert("選択されたPDFがありません。", "ファイル選択エラー");
} else {
var pdfOpenOptions = new PDFOpenOptions;
pdfOpenOptions.antiAlias = true;
pdfOpenOptions.mode = myColor;
pdfOpenOptions.bitsPerChannel = BitsPerChannelType.EIGHT;
pdfOpenOptions.resolution = myResolution;
pdfOpenOptions.suppressWarnings = true;
pdfOpenOptions.cropPage = CropToType.TRIMBOX;
pdfOpenOptions.page = myCounter;
open(_pdfDatei, pdfOpenOptions);
var myDocument1 = app.activeDocument;
var myLayerName = app.activeDocument.name;
myDocument1.activeLayer.name = myLayerName;
for (myCounter = 2; myCounter < myMaxPages; myCounter++) {
try {
pdfOpenOptions.page = myCounter;
open(_pdfDatei, pdfOpenOptions);
myLayerName = app.activeDocument.name;
app.activeDocument.activeLayer.name = myLayerName;
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy(true);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
app.activeDocument = myDocument1;
myDocument1.paste();
myDocument1.activeLayer.name = myLayerName;
} catch (e) {
alert("Done");
myCounter = myMaxPages;
}
}
}- スクリプトファイルを保存し、PhotoshopのPresets内にあるScriptsフォルダに配置します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts - 配置後、Photoshopを再起動します。
Photoshop 2026では、フォルダー名は「Adobe Photoshop 2026」で、C:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts にありました。
[ファイル] > [スクリプト] > [参照] から実行するだけなら、このフォルダーに置かなくても動きました。
今回は作業用のフォルダーに保存したまま実行しています。
Scriptsフォルダーに置いてメニューの一覧に出す方法と、置いた後の再起動は、今回は試していません。
2. スクリプトの実行
- Photoshopを起動します。
- [ファイル] > [スクリプト] > [参照]から
PDF_Pages_to_Layers.jsxを選択して実行します。 - 読み込みたいPDFファイルを選択すると、各ページが個別のレイヤーとして自動で読み込まれます。

Photoshop 2026で3ページのPDFを読み込んだ結果
2026年10月16日に、Adobe Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で、記事のコードを変えずに保存して試しました。
読み込んだのは、1ページが4×3インチで、ページごとに色と「PAGE 1」〜「PAGE 3」の文字を変えた、練習用の3ページのPDFです。
[ファイル] > [スクリプト] > [参照] でスクリプトを選ぶと、「PDFファイルの選択」という画面が開きます。
PDFを選んで[OK]をクリックすると、2ページ目以降が別のタブで開いては閉じ、最後に「スクリプト警告」という小さな画面に「Done」と表示されました。
[OK]で閉じると、1つのドキュメントに3枚のレイヤーができていました。
| 確かめたこと | 結果 |
|---|---|
| レイヤーの数 | 3枚(PDFのページ数と同じ) |
| レイヤーの名前 | sample-3pages-1.pdf〜sample-3pages-3.pdf(ファイル名にページ番号が付く) |
| 重なり順 | 最後のページが一番上、1ページ目が一番下 |
| 各レイヤーの中身 | 下から赤・緑・青で、PDFの1〜3ページ目と一致 |
| 位置 | 3枚ともカンバスにぴったり重なり、ずれなし |
| ドキュメント | 名前はsample-3pages-1.pdfで未保存、1200×900 px、300 ppi |
| カラーモード | CMYK、8 bit/チャンネル |

3枚とも表示された状態なので、下のページを見るときは、上のレイヤーの目のアイコンで表示を切り替えます。
読み込んだ直後のドキュメントは未保存です。元のPDFとレイヤー数・順番・各ページの内容を照合したら、[ファイル]→[別名で保存]で新しい名前を指定し、Photoshop(PSD)形式と[レイヤー]を選んで保存します。開き直してページごとのレイヤーが残っていることを確認してください。この保存操作の案内は今回実機では再確認していません。
解像度とカラーモードは、コードの myResolution = 300; と var myColor = OpenDocumentMode.CMYK; で決まります。
この2行を変えた版は、今回は試していません。
ページの大きさが違うPDFの場合
1ページ目を横長(4×3インチ)、2ページ目を縦長(3×4インチ)にした、2ページのPDFでも試しました。
ドキュメントの大きさは1ページ目と同じ1200×900 pxになり、2ページ目のレイヤーは900×1200 pxのまま、左から150 px、上端0の位置に入りました。
2ページ目の下の300 pxはカンバスの外にはみ出して、画面には見えません。
はみ出した部分はレイヤーに残っていて、PSDに保存して読み取っても900×1200 pxのままでした。

アートボードの大きさが違うPDFを読み込んだときは、読み込んだ後にカンバスを広げるか、レイヤーの位置を合わせ直します。
位置は今回の結果で、ほかの大きさの組み合わせは試していません。
実行後に残る設定と、コードの注意点
コードの3行目 displayDialogs = DialogModes.NO; の設定は、実行後もPhotoshopに残っていました。
実行前に読み取ると DialogModes.ERROR、実行後は DialogModes.NO でした。
DialogModes.NO は、スクリプトの実行中に確認の画面を出さない設定です。
この検証と同じく実行前がDialogModes.ERRORだった場合に戻すには、app.displayDialogs = DialogModes.ERROR; を実行します。
今回は、これで DialogModes.ERROR に戻ったことを読み取りで確かめました。
2ページ目以降のループでは、読み込み・コピー・貼り付けなどで例外が出ると「Done」を表示して終了します。
1ページ目の読み込みはこの例外処理の外です。
背景色も白に変更したままなので、必要なら実行前の色に戻してください。
最後のページの次で止まるときも、途中の失敗も同じ「Done」です。
全ページ成功の証明にはならないので、レイヤー数と各ページの内容をPDFと照合してください。
上限まで例外なく進んだ場合は「Done」を出さずに終了する構造です。
また、myMaxPages が100で、ループの条件が myCounter < myMaxPages なので、読み込むのは最大99ページまでです。
拡張子が小文字の .pdf でないと「選択されたPDFがありません。
」と表示される判定になっています。
99ページの上限と拡張子の判定はコードを読んだ内容で、実機では試していません。
途中で失敗した場合は、取り込めた最後のページとレイヤー数を控えます。
同じPDFを通常の読み込み操作でも開き、特定のページで止まるかを切り分けてください。
設定を戻す際は記事の検証値を一律に使わず、自分が実行前に控えた値へ戻します。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
読み込みと書き出しの記事は、ほかにもあります。




まとめ
- Adobe XDなどで書き出した複数ページPDFをレイヤーごとに読み込める
- 読み込み後はレイヤー数・順番・端の欠けを元のPDFと照合する
- 複数ページのPDFを一括で処理できる(コードの上限は99ページ)
まず少数ページの複製で試し、保存後にレイヤーと設定を確認してください。
