[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt PDF-Export per Script funktioniert nicht mehr (CS5, WIN)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

PDF-Export per Script funktioniert nicht mehr (CS5, WIN)

cwenet
Beiträge gesamt: 1120

19. Okt 2010, 08:38
Beitrag # 1 von 3
Bewertung:
(1510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

folgendes Script lief prima unter CS4:

Code
if(app.documents.length != 0){   
var myFolder = Folder.selectDialog ("Choose a destination folder");
if(myFolder != null){
var myDocument = app.activeDocument;
var myItems, myDocumentName, myBaseName, myPDFPreset;

displayDialog();
}
}
else{
alert("Please open a document and try again.");
}

function findItems() {
//Clear the find/change preferences.
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;

app.findTextPreferences.appliedParagraphStyle = "Nummer";
app.findTextPreferences.findWhat = "";
myItems = myDocument.findText();

//Clear the find/change preferences after the search.
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

// Export the pages
exportPages();
}

function exportPages() {
for (var i = 0; i < myItems.length; i++) {
var myPage = findPage(myItems[i]);
var myPageName = myPage.name;
app.pdfExportPreferences.pageRange = myPageName;

var myNiceFileName = myItems[i].lines[0].contents; // only get first line, add a string replace() around to remove illigal chars or reg expr
//alert(myNiceFileName);

var myRegExp = new RegExp("&#8201;","gi");
myPageName = myNiceFileName.replace(myRegExp, '');

//var myFilePath = myFolder + "/" + myBaseName + "_" + myNiceFileName + ".pdf";
var myFilePath = myFolder + "/" + myPageName + ".pdf";
var myExportFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myExportFile, false, myPDFPreset);
}
}

function findPage(theObj) {
var thePage = theObj;
if (thePage.hasOwnProperty("baseline")) {
thePage = thePage.parentTextFrames[0];
}
while (thePage.constructor.name != "Page") {
var whatIsIt = thePage.constructor.name;
switch (whatIsIt) {
case "Story" :
thePage = thePage.textFrames[-1].parent;
break;
case "Character" :
thePage = thePage.parentTextFrames[0];
break;
case "Cell" :
try {
thePage = thePage.insertionPoints[0].parentTextFrames[0];
break;
} catch (e) {
// must be overset, so ignore
return null;
}
case "Application" :
// must be off page, so ignore
return null;
}
thePage = thePage.parent;
}
return thePage
}

function displayDialog() {
myDocumentName = myDocument.name;
var myPDFPresets = app.pdfExportPresets;
var myPDFPresetNames = new Array;
for (i = 0; i < myPDFPresets.length; i++) {
myPDFPresetNames.push(myPDFPresets[i].name);
}

var myDialog = app.dialogs.add();
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()) {
staticTexts.add({staticLabel:"Base name:", minWidth:130});
}
with(dialogColumns.add()) {
var myBaseNameField = textEditboxes.add({editContents:myDocumentName, minWidth:160});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"PDF preset: ", minWidth:130});
}
with(dialogColumns.add()){
var myPDFPresetsDropdown = dropdowns.add({stringList:myPDFPresetNames, selectedIndex:0});
}
}
}
var myResult = myDialog.show({name:"ExportPages"});
if(myResult == true){
myBaseName = myBaseNameField.editContents;
myPDFPreset = myPDFPresetNames[myPDFPresetsDropdown.selectedIndex];
findItems();
//Remove the dialog box from memory.
myDialog.destroy();
} else{
myDialog.destroy();
}
}


Unter CS5 habe ich jetzt die Fehlermeldung:

Fehler 21
Null ist kein Object
Fehlerquelle: var myPageName = myPage.name;

Kann mir bitte jemand helfen, damit das Script wieder unter CS5 läuft?

Gruss
Christoph
X

PDF-Export per Script funktioniert nicht mehr (CS5, WIN)

zaphodbeeblebroxx
Beiträge gesamt: 408

19. Okt 2010, 21:12
Beitrag # 2 von 3
Beitrag ID: #454578
Bewertung:
(1485 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Christoph,

für CS5 musst Du die function findPage ändern, da ab CS5 das Eltern-Element eines pageItems nicht mehr die Seite sondern der Druckbogen ist. Wenn man die Seite benötigt, geht das über "parentPage".

Siehe hier:
http://forums.adobe.com/message/2728489#2728489

Tausche die function findPage gegen folgenden Code aus:
Code
function findPage(theObj) { 
if (theObj.hasOwnProperty("baseline")) {
theObj = theObj.parentTextFrames[0];
}
while (theObj != null) {
if (theObj.hasOwnProperty ("parentPage")) return theObj.parentPage;
var whatIsIt = theObj.constructor;
switch (whatIsIt) {
case Page : return theObj;
case Character : theObj = theObj.parentTextFrames[0]; break;
case Footnote :; // drop through
case Cell : theObj = theObj.insertionPoints[0].parentTextFrames[0]; break;
case Note : theObj = theObj.storyOffset; break;
case Application : return null;
}
if (theObj == null) return null;
theObj = theObj.parent;
}
return theObj
} // end findPage



als Antwort auf: [#454469]

PDF-Export per Script funktioniert nicht mehr (CS5, WIN)

cwenet
Beiträge gesamt: 1120

20. Okt 2010, 06:17
Beitrag # 3 von 3
Beitrag ID: #454590
Bewertung:
(1459 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank Matthias,

für die ausführliche Antwort;
jetzt klappt es weieder.

Grüße Christoph


als Antwort auf: [#454578]