[GastForen Programme Print/Bildbearbeitung Adobe InDesign Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

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

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

Sandera
Beiträge gesamt: 10

13. Mai 2008, 13:40
Beitrag # 1 von 7
Bewertung:
(2261 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe vor ein Dokument mit mehreren Seiten als Einzelseiten zu speichern. Dafür habe ich hier folgenden Code gefunden:

Code
//ExportEachPageAsPDF.js    
//Exports each page of an InDesign CS document as a separate PDF to
//a selected folder using the selected PDF export settings.
//Display a "choose folder" dialog box.
if(app.documents.length != 0){
var myFolder = Folder.selectDialog ("Choose a Folder");
if(myFolder != null){
myExportPages(myFolder);
}
}
else{
alert("Please open a document and try again.");
}
function myExportPages(myFolder){
var myPageName, myFilePath, myFile;
var myDocument = app.activeDocument;
var 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){
var myBaseName = myBaseNameField.editContents;
var myPDFPresetName = myPDFPresetNames[myPDFPresetsDropdown.selectedIndex];
//Remove the dialog box from memory.
myDialog.destroy();
for(var myCounter = 0; myCounter < myDocument.pages.length; myCounter++){
myPageName = myDocument.pages.item(myCounter).name;
app.pdfExportPreferences.pageRange = myPageName;
//The name of the exported files will be the base name + the page name + ".pdf".
//If the page name contains a colon (as it will if the document contains sections),
//then remove the colon.
var myRegExp = new RegExp(":","gi");
myPageName = myPageName.replace(myRegExp, "_");
myFilePath = myFolder + "/" + myBaseName + "_" + myPageName + ".pdf";
myFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myFile, false, myPDFPresets.item(myPDFPresetName));
}
}
else{
myDialog.destroy();
}
}


Nun habe ich auf jeder Seite einen Rahmen mit Textinhalt mit dem Absatzformat "Name". Dieser Textinhalt soll Basis für die Bezeichnung der einzelnen PDF-Dokumente sein.
Gibt es eine Möglichkeit den Inhalt des Textes mit genau diesem Absatzformat auszulesen?

Besten Dank.

Viele Grüße
Sandra
X

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

zaphodbeeblebroxx
Beiträge gesamt: 408

13. Mai 2008, 19:15
Beitrag # 2 von 7
Beitrag ID: #350087
Bewertung:
(2209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Sandra,

versuch es mal damit:

Code
//ExportEachPageWithParaStyleAsPDF.js     
//Exports each page of an InDesign CS document as a separate PDF to
//a selected folder using the selected PDF export settings.
//Display a "choose folder" dialog box.
if(app.documents.length != 0){
var myFolder = Folder.selectDialog ("Choose a Folder");
if(myFolder != null){
myExportPages(myFolder);
}
}
else{
alert("Please open a document and try again.");
}
function myExportPages(myFolder){
var myPageName, myFilePath, myFile;
var myDocument = app.activeDocument;
var myDocumentName = "";
var myParaStyleName = "Name";
var myPDFPresets = app.pdfExportPresets;
var myPDFPresetNames = app.pdfExportPresets.everyItem().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){
//var myBaseName = myBaseNameField.editContents;
var myPDFPresetName = myPDFPresetNames[myPDFPresetsDropdown.selectedIndex];
//Remove the dialog box from memory.
myDialog.destroy();
for(var myCounter = 0; myCounter < myDocument.pages.length; myCounter++){
myPageName = myDocument.pages.item(myCounter).name;
myPageTF = myDocument.pages.item(myCounter).textFrames;
myBaseName = "";
oneTF = 0;
while (oneTF < myPageTF.length){
try{
app.findPreferences = app.changePreferences = null;
app.findPreferences.appliedParagraphStyle = myDocument.paragraphStyles.item(myParaStyleName);
myFoundItem = myPageTF[oneTF].texts[0].search("");
}
catch(e){
myFoundItem = "";
}
oneTF += 1;
if (myFoundItem.length != 0){
myBaseName = myFoundItem[0].contents.replace("\r", "").replace("\n", "");
oneTF = myPageTF.length;
}
else{
myRegExp = new RegExp(":","gi");
myPageName = myPageName.replace(myRegExp, "");
myBaseName = "Seite_" + myPageName;
}
}
app.pdfExportPreferences.pageRange = myPageName;
//The name of the exported files will be the base name + the page name + ".pdf".
//If the page name contains a colon (as it will if the document contains sections),
//then remove the colon.
myFilePath = myFolder + "/" + myBaseName + ".pdf";
myFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myFile, false, myPDFPresets.item(myPDFPresetName));
}
}
else{
myDialog.destroy();
}
}


Das Skript sucht in den Textrahmen jeder Seite nach dem Text, der mit dem AF "Name" formatiert ist. Das AF muss im Dokument vorhanden sein und sollte nur einmal je Seite vorkommen. Wird das AF auf einer Seite nicht gefunden, so wird die PDF-Datei mit "Seite_ " + Seitenzahl benannt.


als Antwort auf: [#350037]

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

Sandera
Beiträge gesamt: 10

13. Mai 2008, 22:38
Beitrag # 3 von 7
Beitrag ID: #350101
Bewertung:
(2176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

das ist ja super. Vielen herzlichen Dank dafür... besser geht's ja gar nicht :-)
Funktioniert einwandfrei...

Viele Grüße
Sandra


als Antwort auf: [#350087]

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

zaphodbeeblebroxx
Beiträge gesamt: 408

14. Mai 2008, 09:53
Beitrag # 4 von 7
Beitrag ID: #350131
Bewertung:
(2139 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Sandra,

was ich noch vergessen hatte zu erwähnen:

Wenn Du in Deinem Dokument auf verschiedenen Seiten denselben Text mit dem AF "Name" hast (ergibt gleiche Dateinamen beim PDF-Export!) wird beim PDF-Export das vorherige PDF überschrieben.


als Antwort auf: [#350101]

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

Sandera
Beiträge gesamt: 10

14. Mai 2008, 10:11
Beitrag # 5 von 7
Beitrag ID: #350134
Bewertung:
(2133 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

stopp... alles wieder zurück ;-)
Es läuft doch nicht. Ich hatte zum Test auf den einzelnen Seiten "Seite 1", "Seite 2" usw. in das "Name"-Feld geschrieben und daher ist mir beim Export nicht aufgefallen, dass er die Ersetzung mit "Seite_1" usw. vornimmt.
Hab mir mal angeschaut welche Länge "myFoundItem" hat und da wird immer NULL zurückgegeben, obwohl was in dem Feld steht.
Hast Du ne Idee?

Besten Dank.

Sandra


als Antwort auf: [#350131]

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

Sandera
Beiträge gesamt: 10

14. Mai 2008, 10:46
Beitrag # 6 von 7
Beitrag ID: #350141
Bewertung:
(2117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Fehler tritt übrigens an folgender Stelle auf, wenn ich das richtig sehe:
app.findPreferences = app.changePreferences = null;


als Antwort auf: [#350134]

Inhalt mit bestimmten Absatzformat über JavaScript ansprechen

Sandera
Beiträge gesamt: 10

14. Mai 2008, 11:15
Beitrag # 7 von 7
Beitrag ID: #350153
Bewertung:
(2100 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So... ein letztes Mal ;-)
Der Fehler lag darin, dass ich CS3 verwende. Ich habe das Skript nun in einen Ordner namens "Version 4.0 Scripts" geschoben und in *.jsx umbenannt und jetzt läuft's.

Vielen Dank nochmals!


als Antwort auf: [#350141]
X