InDesign 사용자가 InDesign 문서에서 페이지 범위를 선택하고 해당 페이지에서 새 문서를 만들 수있는 기능을 제공해야합니다. 이것은 간단하게 들리지만, 그렇지 않습니다. ...ExtendScript를 사용하여 InDesign (CS6)에서 다른 문서 페이지의 하위 집합으로 새 문서를 만들려면 어떻게해야합니까?
나는 이것을하는 많은 다른 방법을 시도했지만 어느 정도는 실패했습니다. 일부 방법은 모든 페이지를 단일 스프레드에 배치합니다 (때로는 InDesign 충돌을 일으 킵니다).
원본 문서 : 내가 할 수 있었던 가장 여전히 처음에 문제와 말 (아래 스크린 샷 참조)이있다 (아래 코드 참조)
을 새 문서 :
질문 : 스크린 샷에 표시된 문제없이 다른 문서 페이지의 하위 집합 (ExtendScript를 사용하는 InDesign에서)에서 새 문서를 만들려면 어떻게해야합니까?
참고 : 스크립트의 동작은 CS5.5 및 CS6에서 상당히 다릅니다. 제 질문은 CS6에 관한 것입니다.
두 번째 스크린 샷은 첫 번째 스크린 샷에 표시된 문서에 다음 코드를 적용하여 얻은 :
CODE
var firstPageName = { editContents: "117" }; // This page number is actually entered by the user in an integerEditbox
var lastPageName = { editContents: "136" }; // This page number is actually entered by the user in an integerEditbox
var sourceDocument = app.activeDocument;
var destDocument = app.documents.add();
destDocument.importStyles(ImportFormat.paragraphStylesFormat, new File(sourceDocument.filePath + "/" + sourceDocument.name), GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);
destDocument.importStyles(ImportFormat.characterStylesFormat, new File(sourceDocument.filePath + "/" + sourceDocument.name), GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);
destDocument.viewPreferences.horizontalMeasurementUnits = sourceDocument.viewPreferences.horizontalMeasurementUnits;
destDocument.viewPreferences.verticalMeasurementUnits = sourceDocument.viewPreferences.verticalMeasurementUnits;
destDocument.documentPreferences.facingPages = sourceDocument.documentPreferences.facingPages;
destDocument.documentPreferences.pageHeight = sourceDocument.documentPreferences.pageHeight;
destDocument.documentPreferences.pageWidth = sourceDocument.documentPreferences.pageWidth;
destDocument.documentPreferences.pageSize = sourceDocument.documentPreferences.pageSize;
var sourceSpreads = sourceDocument.spreads;
var nbSourceSpreads = sourceSpreads.length;
var firstPageFound = false;
var lastPageFound = false;
var i;
var newSpreadNeeded;
var currentDestSpread;
for (i = 0; !lastPageFound, i < nbSourceSpreads; ++i) {
newSpreadNeeded = true;
var sourcePages = sourceSpreads[i].pages;
var nbSourcePages = sourcePages.length;
var j;
for (j = 0; !lastPageFound, j < nbSourcePages; ++j) {
if (sourcePages[j].name === firstPageName.editContents) {
firstPageFound = true;
destDocument.documentPreferences.startPageNumber = parseInt(firstPageName.editContents); // We want to preserve page numbers
}
if (firstPageFound) {
// Copy this page over to the new document.
var firstInNewSpread = false;
if (newSpreadNeeded) {
currentDestSpread = destDocument.spreads.add();
newSpreadNeeded = false;
firstInNewSpread = true;
}
var newPage = sourcePages[j].duplicate(LocationOptions.AT_END, currentDestSpread);
var k;
for (k = 0; k < newPage.index; ++k) {
currentDestSpread.pages[k].remove();
}
}
if (sourcePages[j].name === lastPageName.editContents) {
lastPageFound = true;
}
}
}
destDocument.spreads[0].remove();