2009年11月9日月曜日

InDesignを使ってPDFをページごとに分割

PDFをページごとに分割するのに、InDesignを使ってみる。
こういうことにInDesignを使う事はまず無い。普通はAcrobatや、ほかの便利なフリーウェアとか使うよね?
それでもInDesignでやりたいと思う事もあります。
#target "InDesign"

var pdfFile=File.openDialog ("PDFを選択して下さい", pdfCheck, false);
if(pdfFile){
//pdfを分割
var pageFileAry=burstPDF(pdfFile);
alert(pageFileAry.length+"ページにpdfを分割しました。");
};

function burstPDF(pdfFile){
//$.writeln(pdfFile);
//PDF読み込み設定:メディアサイズ
app.pdfPlacePreferences.pdfCrop=PDFCrop.CROP_MEDIA;
var actDoc=app.documents.add();
var imgObj= actDoc.textFrames.add();
//1ページ目を取り込む
var i=1
app.pdfPlacePreferences.pageNumber = i;
var ppdf=imgObj.place(pdfFile);
//$.writeln(ppdf);
//フィット
imgObj.fit(FitOptions.FRAME_TO_CONTENT);
//ページサイズを合わせる
var bounds=imgObj.geometricBounds;
actDoc.documentPreferences.pageWidth=bounds[3]-bounds[1];
actDoc.documentPreferences.pageHeight=bounds[2]-bounds[0];
imgObj.move([0,0]);
//pdf書き出し
var ary=[];
do{
var flag=true;
try{
var burstPdfPath=cutEx(pdfFile.fsName)[0]+"_"+i+".pdf";
var burstPdf=new File(burstPdfPath);
//$.writeln(burstPdfPath);
actDoc.exportFile(ExportFormat.pdfType, burstPdf, false, "PDFX1a 2001 JPN");
ary.push(burstPdfPath);
i++;
app.pdfPlacePreferences.pageNumber = i;
imgObj.place(pdfFile);
if(app.pdfPlacePreferences.pageNumber!=i){flag=false};
}catch(e){
//$.writeln(e);
flag=false
};
}while(flag);
actDoc.close(SaveOptions.NO);
return ary;
};

function pdfCheck(file){
//PDFを選択するフィルタ
var flag=false;
if(file.name.match(/\.pdf$/) || file instanceof Folder){flag=true};
return flag;
};

function cutEx(path){
//拡張子を切る
var pathTxt=path, exText="";
var dirCutNo=( (/\//.test(path))? path.lastIndexOf("/") : 0 );
if(/\./.test(path.slice(dirCutNo))){
pathTxt=path.slice(0, path.lastIndexOf("."));
exText=path.slice(path.lastIndexOf("."));
};
return [pathTxt,exText];
};

0 件のコメント: