应用 ParagraphStyle 后文本框消失
Text frames disappearing after applying a ParagraphStyle
我至少可以说没有很多 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,但这没有出现任何问题。
我认为问题在于我可能以错误的方式处理这个问题?
您正在应用主点差然后对其进行修改。我认为更好的方法是覆盖页面上的文本框架。试试这个:
// 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
如果由于某些原因必须更改母版传播,请尝试先修改它,然后再应用到页面。
最后我想出了以下解决问题的方法。我不知道是我设计过度了还是这符合艺术规则。
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();
我至少可以说没有很多 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,但这没有出现任何问题。
我认为问题在于我可能以错误的方式处理这个问题?
您正在应用主点差然后对其进行修改。我认为更好的方法是覆盖页面上的文本框架。试试这个:
// 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
如果由于某些原因必须更改母版传播,请尝试先修改它,然后再应用到页面。
最后我想出了以下解决问题的方法。我不知道是我设计过度了还是这符合艺术规则。
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();