[Acrobat]2つのPDFファイルの各ページを交互にマージしたPDFを作成する
サンプルコード
行番号 | ソース |
---|---|
001 | // PDFのページ毎の交互マージ |
002 | // 20240922 v1 |
003 | // com.cocolog-nifty.quicktimer.icefloe |
004 | //【A】入力ファイル 元ファイル |
005 | var strActivDocFilePath = this.path; |
006 | //【A】のドットと拡張子 |
007 | //最後のカンマまでのキャラクタ数 |
008 | var numCntLastDot = strActivDocFilePath.lastIndexOf("."); |
009 | var strBaseFilePath = strActivDocFilePath.substring(0, numCntLastDot); |
010 | //【C】出力ファイル 保存先 |
011 | var strSaveDocFilePath = strBaseFilePath + ".マージ済み.pdf"; |
012 | //ファイル名 |
013 | var numCntLastDir = strActivDocFilePath.lastIndexOf("/"); |
014 | var strFileName = strActivDocFilePath.substring(numCntLastDir); |
015 | //console.println("strFileName: " + strFileName); |
016 | var strContainerDir = strActivDocFilePath.substring(0, numCntLastDir); |
017 | //console.println("strContainerDir: " + strContainerDir); |
018 | //【B】マージファイル 挿入ファイル |
019 | var objInsertDocFile = app.browseForDoc({ |
020 | bSave: false |
021 | }); |
022 | var strInsertDocFilePath = objInsertDocFile.cPath; |
023 | //console.println("strInsertDocFilePath: " + strInsertDocFilePath); |
024 | //ファイルを開く |
025 | var ActivDoc = app.openDoc(strActivDocFilePath); |
026 | var InsertDoc = app.openDoc(strInsertDocFilePath); |
027 | //ファイルのページ数 |
028 | var numAllPageA = ActivDoc.numPages; |
029 | var numAllPageB = InsertDoc.numPages; |
030 | //マージ側のPDFは閉じておく |
031 | InsertDoc.closeDoc({ bNoSave: true }); |
032 | //インサートPDFを元のPDFの後方に全ページインサートしておく |
033 | ActivDoc.insertPages({ |
034 | nPage: (numAllPageA - 1), |
035 | cPath: strInsertDocFilePath, |
036 | nStart: 0, |
037 | nEnd: (numAllPageB - 1) |
038 | }); |
039 | //ページを交互になるように移動 |
040 | if (numAllPageA >= numAllPageB) { |
041 | for (var numPageNo = 0; numPageNo < numAllPageB; numPageNo++) { |
042 | //console.println(numPageNo); |
043 | var numOrgPos = numAllPageA + numPageNo; |
044 | //console.println(numOrgPos); |
045 | var numInsPos = (numPageNo * 2); |
046 | console.println(numInsPos); |
047 | this.movePage({ |
048 | nPage: numOrgPos, |
049 | nAfter: numInsPos |
050 | }); |
051 | |
052 | } |
053 | } |
054 | //ページを交互になるように移動 |
055 | else if (numAllPageB > numAllPageA) { |
056 | for (var numPageNo = 0; numPageNo < numAllPageA; numPageNo++) { |
057 | //console.println(numPageNo); |
058 | var numOrgPos = numAllPageA + numPageNo; |
059 | //console.println(numOrgPos); |
060 | var numInsPos = (numPageNo * 2); |
061 | console.println(numInsPos); |
062 | this.movePage({ |
063 | nPage: numOrgPos, |
064 | nAfter: numInsPos |
065 | }); |
066 | |
067 | } |
068 | } |
069 | |
070 | //【C】のパスに保存 |
071 | this.saveAs({ cPath: strSaveDocFilePath, bCopy: true, bPromptToOverwrite: true }); |
072 | this.closeDoc({ bNoSave: true }); |
073 | //【C】のマージ済みファイルを開く |
074 | var objMergedPDFdoc = app.openDoc(strSaveDocFilePath); |
075 | if (objMergedPDFdoc) { |
076 | app.execMenuItem("ShowHideThumbnails"); |
077 | app.execMenuItem("ShowRulers"); |
078 | this.viewState = { overViewMode: 2 }; |
079 | console.println("ファイルがオープンしました。"); |
080 | } else { |
081 | console.println("ファイルのオープンに失敗しました。"); |
082 | } |
AppleScriptで生成しました |
| 固定リンク