Javascript für InDesign erweitern

  • JavaScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von nafets.

    Javascript für InDesign erweitern

    Moin zusammen!

    Ich hoffe, ich finde hier jemanden, der mir helfen kann :)

    Also... ich habe ein Javascript-JSX für InDesign gefunden, welches mir automatisiert die Einzelseiten eines mehrseitiges PDF auf Einzelseiten in Indesign plaziert.
    Nun habe ich aber des Öfteren folgendes Problem:
    Ich benötige nach jeder platzierten Seite eine Leerseite, die mit der B-Musterseite verknüpft ist (für z.B. gleichbleibende Rückseiten).
    Die vom Script bislang eingefügte Musterseite ist standardgemäß mit der A-Musterseite verknüpft.

    Kann mir jemand das Script dementsprechend erweitern? Ich selbst hab das bereits probiert, doch reichen meine Kenntnisse absolut dafür nicht aus... ich bekomme nur Fehlermeldungen! :D

    Das wäre echt großartig!

    Hier der Code:

    PHP-Quellcode

    1. //PlaceMultipagePDF.jsx
    2. //An InDesign JavaScript
    3. /*
    4. @@@BUILDINFO@@@ "PlaceMultipagePDF.jsx" 3.0.0 15 December 2009
    5. */
    6. //Places all of the pages of a multi-page PDF.
    7. //
    8. main();
    9. function main(){
    10. //Make certain that user interaction (display of dialogs, etc.) is turned on.
    11. app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    12. //Display a standard Open File dialog box.
    13. var myPDFFile = File.openDialog("Choose a PDF File");
    14. if((myPDFFile != "")&&(myPDFFile != null)){
    15. var myDocument, myPage;
    16. if(app.documents.length != 0){
    17. var myTemp = myChooseDocument();
    18. myDocument = myTemp[0];
    19. myNewDocument = myTemp[1];
    20. }
    21. else{
    22. myDocument = app.documents.add();
    23. myNewDocument = false;
    24. }
    25. alert(myDocument.constructor.name);
    26. if(myNewDocument == false){
    27. myPage = myChoosePage(myDocument);
    28. }
    29. else{
    30. myPage = myDocument.pages.item(0);
    31. }
    32. myPlacePDF(myDocument, myPage, myPDFFile);
    33. }
    34. }
    35. function myChooseDocument(){
    36. var myDocumentNames = new Array;
    37. myDocumentNames.push("New Document");
    38. //Get the names of the documents
    39. for(var myDocumentCounter = 0;myDocumentCounter < app.documents.length; myDocumentCounter++){
    40. myDocumentNames.push(app.documents.item(myDocumentCounter).name);
    41. }
    42. var myChooseDocumentDialog = app.dialogs.add({name:"Choose a Document", canCancel:false});
    43. with(myChooseDocumentDialog.dialogColumns.add()){
    44. with(dialogRows.add()){
    45. with(dialogColumns.add()){
    46. staticTexts.add({staticLabel:"Place PDF in:"});
    47. }
    48. with(dialogColumns.add()){
    49. var myChooseDocumentDropdown = dropdowns.add({stringList:myDocumentNames, selectedIndex:0});
    50. }
    51. }
    52. }
    53. var myResult = myChooseDocumentDialog.show();
    54. if(myResult == true){
    55. if(myChooseDocumentDropdown.selectedIndex == 0){
    56. myDocument = app.documents.add();
    57. myNewDocument = true;
    58. }
    59. else{
    60. myDocument = app.documents.item(myChooseDocumentDropdown.selectedIndex-1);
    61. myNewDocument = false;
    62. }
    63. myChooseDocumentDialog.destroy();
    64. }
    65. else{
    66. myDocument = "";
    67. myNewDocument = "";
    68. myChooseDocumentDialog.destroy();
    69. }
    70. return [myDocument, myNewDocument];
    71. }
    72. function myChoosePage(myDocument){
    73. alert(myDocument.name);
    74. var myPageNames = new Array;
    75. //Get the names of the pages in the document
    76. for(var myCounter = 0; myCounter < myDocument.pages.length;myCounter++){
    77. myPageNames.push(myDocument.pages.item(myCounter).name);
    78. }
    79. var myChoosePageDialog = app.dialogs.add({name:"Choose a Page", canCancel:false});
    80. with(myChoosePageDialog.dialogColumns.add()){
    81. with(dialogRows.add()){
    82. with(dialogColumns.add()){
    83. staticTexts.add({staticLabel:"Place PDF on:"});
    84. }
    85. with(dialogColumns.add()){
    86. var myChoosePageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:0});
    87. }
    88. }
    89. }
    90. myChoosePageDialog.show();
    91. var myPage = myDocument.pages.item(myChoosePageDropdown.selectedIndex);
    92. myChoosePageDialog.destroy();
    93. return myPage;
    94. }
    95. function myPlacePDF(myDocument, myPage, myPDFFile){
    96. var myPDFPage;
    97. app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia;
    98. var myCounter = 1;
    99. var myBreak = false;
    100. while(myBreak == false){
    101. if(myCounter > 1){
    102. myPage = myDocument.pages.add(LocationOptions.after, myPage);
    103. }
    104. app.pdfPlacePreferences.pageNumber = myCounter;
    105. myPDFPage = myPage.place(File(myPDFFile), [0,0])[0];
    106. if(myCounter == 1){
    107. var myFirstPage = myPDFPage.pdfAttributes.pageNumber;
    108. }
    109. else{
    110. if(myPDFPage.pdfAttributes.pageNumber == myFirstPage){
    111. myPage.remove();
    112. myBreak = true;
    113. }
    114. }
    115. myCounter = myCounter + 1;
    116. }
    117. }


    Ich bedanke mich im Voraus für die Hilfe!

    Liebe Grüße,
    Andreas
    Wenn du willst, dass jemand anderes ne fertige Lösung für dich programmiert, bist du im normalen Forum an der falschen Stelle. Eigentlich sieht das aber doch machbar aus - in der Antwort hier (graphicdesign.stackexchange.co…ges-between-existing-ones; Suchstichwort indesign jsx document pages add - mit der Google-Suche dazu findest du jede Menge hilfreicher Posts die eigentlich alles abdecken, was du brauchst) gibt es ne Zeile Code, wo die Musterseite für eine bestimmte Seite festgelegt wird, was man problemlos einfach auf die aktuell hinzugefügte Seite abändern kann und ne leere Seite hinzuzufügen sollte glaube ich kein Problem sein.

    Gibt es aber eigentlich überhaupt einen Grund, warum du deine Vorder- und Rückseiten über zwei verschiedene Musterseiten verwaltest? Ich habe bisher für sowas immer einfach Druckbögen verwendet, wo dann pro Muster-"seite" jeweils eine Vorder- und Rückseite definiert sind.