【问题标题】:Text frames disappearing after applying a ParagraphStyle应用 ParagraphStyle 后文本框消失
【发布时间】:2017-07-10 09:17:37
【问题描述】:

至少可以说我没有太多 Indesign 经验,但我被要求调查是否可以(使用脚本的 indesign 服务器)开始一个新文档,应用一个主跨页,插入一些段落和应用一些段落样式。

我想出的解决办法是这样的

// 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();

当我注释掉 applyParagraphStyle 代码时,它可以工作并且可以看到我的文本。

从我尝试应用段落样式的那一刻起,文本就被隐藏了。然后,当我在 Indesign 中打开保存的 indd 文件并在空白文本框中单击 command+shift 时,会出现文本,并且我还看到出现了一个额外的图层。

我也尝试以或多或少相同的方式应用 CharacterStyles,但这不会产生任何问题。

我认为问题在于我可能以错误的方式处理这个问题?

【问题讨论】:

  • 尝试将 textframe.recompose() 添加到您的循环中
  • 不幸的是同样的行为:(

标签: javascript adobe-indesign indesign-server


【解决方案1】:

最后我想出了以下解决我的问题的方法。我不知道我是否过度设计了一点,或者这是在艺术规则之下。

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();  

【讨论】:

    【解决方案2】:

    您正在应用主传播,然后对其进行修改。我认为更好的方法是覆盖页面上的文本框。试试这个:

    // 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
    

    如果你因为某种原因需要更改主传播,请尝试先修改它,然后再应用到页面。

    【讨论】:

    • 在这种情况下我也不幸得到了空白文档
    • 我基于你的帖子的测试文件工作正常,所以还有别的东西
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 2014-02-27
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多