2017-07-10 2 views
0

Ich habe nicht viel Indesign-Erfahrung, aber ich wurde gebeten zu untersuchen, ob es möglich war, ein neues Dokument zu starten, einen Master anzuwenden Seite ausbreiten, Absätze einfügen und einige Absatzformate anwenden.Textrahmen, die nach dem Anwenden eines ParagraphStyle verschwinden

Die Lösung kam ich ist diese

// define template 
var indesignTemplate = new File("/e/mytemplate.indt"); 

// open the template 
var doc = app.open(indesignTemplate); 

// get master page 
var masterPage = doc.masterSpreads.item("A-Master"); 

// get first page 
var page = doc.pages.item(0); 

// apply master page to our first page 
page.appliedMaster = masterPage 

// get paragraph style 
var paragraphStyle = doc.paragraphStyles.item("_2.ondertitel_bladzijde"); 

for (var i = 0; i < masterPage.textFrames.length; i++) { 
    var textframe = masterPage.textFrames.item(i); 
    if (textframe.label === "flow") { 
     for (var x = 0; x < 5; x++) { 
      // insert another new paragraph 
      textframe.parentStory.insertionPoints.item(-1).contents = "Lorem ipsum dolor... \r\r"; 
     } 

     for (var x = 0; x < textframe.paragraphs.length; x++) { 
     textframe.paragraphs.item(0).applyParagraphStyle(paragraphStyle); 
     } 

    } 
} 

//Save the document (fill in a valid file path). 
doc.save(new File("/c/mybook.indd")); 

// Save the document as an PDF 
doc.exportFile(ExportFormat.pdfType, new File("/c/mybook.pdf")); 

// close the document. 
app.documents.item(0).close(); 

Dies funktioniert und kann meinen Text sehen, wenn ich den applyParagraphStyle Code auskommentieren.

Von dem Moment an, in dem ich versuche, einen Absatzstil anzuwenden, wird der Text ausgeblendet. Wenn ich dann die gespeicherte INDD-Datei in Indesign öffne und Befehl + Shift in den leeren Textrahmen klicke, erscheint der Text und ich sehe auch eine zusätzliche Ebene.

Ich habe auch versucht, CharacterStyles in mehr oder weniger die gleiche Weise anzuwenden, aber das gibt keine Probleme.

Ich nehme an, dass das Problem in der Tatsache liegt, dass ich mich vielleicht auf die falsche Weise nähern kann?

+0

Try textframe.recompose(), um Ihre Schleife –

+0

gleiche Verhalten leider hinzufügen :( –

Antwort

1

Am Ende kam ich auf die folgenden, die mein Problem behoben. Ich weiß nicht, ob ich ein bisschen übermäßig bin oder das unter den Regeln der Kunst steht.

var indesignTemplate = new File("/e/boek_nl.indt"); 

// open the template 
var doc = app.open(indesignTemplate); 

// get master page 
var masterPage = doc.masterSpreads.item("A-Master"); 

// get first page 
var page = doc.pages.item(0); 

// apply master page to our first page 
page.appliedMaster = masterPage 

// get paragraph style 
var paragraphStyle = doc.paragraphStyles.item("_2.ondertitel_bladzijde"); 

// get text frame 
function getTextFrame(pageObj, frameName) { 
    var allItems = pageObj.appliedMaster.pageItems.everyItem().getElements(); 

for(var j=0;j<allItems.length;j++) 
{ 
    if(allItems[j].label === frameName) { 
     return allItems[j].override(pageObj); 
    } 
} 

var textFrame = getTextFrame(page, "flow") 

// insert a paragraph 5 times 
for (var x = 0; x < 5; x++) { 
    textFrame.parentStory.insertionPoints.item(-1).contents = "text \r\r"; 
} 

// apply paragraph style 
textFrame.paragraphs.item(0).applyParagraphStyle(paragraphStyle); 

//Save the document (fill in a valid file path). 
doc.save(new File("/c/boek_nl.indd")); 

// Save the document as an PDF 
doc.exportFile(ExportFormat.pdfType, new File("/c/boek_nl.pdf")); 

// close the document. 
app.documents.item(0).close(); 
0

Sie wenden Master Spread an und modifizieren es dann. Ich denke, der bessere Ansatz wäre, Textrahmen auf der Seite zu überschreiben. Versuchen Sie folgendes:

// define template 
var indesignTemplate = new File("/e/mytemplate.indt"); 

// open the template 
var doc = app.open(indesignTemplate); 

// get master page 
var masterPage = doc.masterSpreads.item("A-Master"); 

// get first page 
var page = doc.pages.item(0); 

// apply master page to our first page 
page.appliedMaster = masterPage; // you are missing closing semicolon here 

// get paragraph style 
var paragraphStyle = doc.paragraphStyles.item("_2.ondertitel_bladzijde"); 

for (var i = 0; i < page.textFrames.length; i++) { 
    var textframe = page.textFrames.item(i); 
    if (textframe.label === "flow") { 
     textframe.override(page); 
     for (var x = 0; x < 5; x++) { 
      // insert another new paragraph 
      textframe.parentStory.insertionPoints.item(-1).contents = "Lorem ipsum dolor... \r\r"; 
     } 

     for (var x = 0; x < textframe.paragraphs.length; x++) { 
     textframe.paragraphs.item(0).applyParagraphStyle(paragraphStyle); 
     } 

    } 
} 

//Save the document (fill in a valid file path). 
doc.save(new File("/c/mybook.indd")); 

// Save the document as an PDF 

Wenn Sie Master-Spread aus irgendeinem Grund ändern müssen, versuchen Sie es zuerst zu ändern, und dann auf die Seite an.

+0

In diesem Fall bekomme ich auch das leere Dokument leider –

+0

Datei Mein Test basiert auf Ihre Post funktioniert gut, so ist es etwas anderes –

Verwandte Themen