InDesign服务器-更新文本框架内容导致丢失或额外的内容
InDesign Server - Updating text frame contents results in missing or extra content
我正在尝试使用InDesign Server的SOAP API更新一系列文本框架。当我试图改变文本框的内容时,返回的结果有时会丢失或额外的内容。
下面是我用来更新文本框的函数:
function update_text(textframe_id, value) {
for (var i = 0; i < document.textFrames.length; i++) {
if (document.textFrames.item(i).id == textframe_id) {
var textframe = document.textFrames.item(i);
textframe.contents = value;
}
}
}
每次脚本运行时,它打开文档,进行更改,保存文档,生成JPG预览图像并关闭文档。为了将这个问题与SOAP接口和我调用它的PHP脚本隔离开来,我没有向脚本传递任何参数,只是在JS中使用字符串字面值来传递新文本。
那么,如果我像这样更新一系列文本框架:
update_text(601, "Some text here");
update_text(550, "Some text here");
update_text(527, "Some text here");
update_text(504, "Some text here");
update_text(466, "Some text here");
在正常情况下,我得到的结果是:
601: "Some text here"
550: "Some text "
527: "Some text here"
504: "Some text here"
466: "Some text here"
Textframe 550总是省略我给它的最后一个单词。
另一个问题是,如果我给任何文本框架一个字符串,甚至中等长度,它被切断。如果我尝试将每个文本框的内容设置为"这里是一些很长的文本,不同的文本框将在不同的点切断。",结果如下:
601: "Here is some very long "
550: "Here is some very long text "
527: "Here is some very long text which different textframes will "
504: "Here is some "
466: "Here is some "
奇怪的是,截断的文本将被"记住",并在下次运行脚本时作为垃圾重新注入,无论我传入什么。因此,如果我重新运行脚本并尝试将每个文本框架更改为非常短的内容,如"Spam",我将得到以下结果:
601: "Spamtext which different "
550: "Spamwhich different "
527: "Spamcut off at different points."
504: "Spamvery "
466: "Spamvery long text "
如果我试着再运行一次,我得到这个:
601: "Spamtextframes will cut "
550: ""
527: "Spam"
504: "Spamlong "
466: "Spamwhich "
依此类推,直到旧文本用完。
即使我重新启动IDS,这个问题仍然存在,所以(我猜)它必须以某种方式保存到文档中。
当我刚刚运行脚本来测试IDS重启时,当我刷新所有旧文本时,textframe 504也开始跳过每次提交的最后一个单词…
任何想法是什么导致这种行为,我如何才能得到IDS改变文本框架,无论我给它?
我在使用textframe时遇到了麻烦。内容取决于所涉及的文本框架的大小。尝试设置textframe.parentStory.contents
相关文章:
- 使用Javascript更新输入框中的文本
- 基于单选框更新页眉,选中并选择输入文本
- jQuery基于下拉选择更新帮助文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- Angular JS-文本框未在独立范围内更新
- 浏览器之间的文本区域更新方式不同
- 表单文本框未自动更新
- 在文本输入区域中创建双向更新
- 如何在d3中更新带有附带文本的条形图
- 如何更新按钮内部的文本,每行重复一次
- 为什么我的文本框没有用查询结果更新
- 更改<pre>在文本区域更新时阻止内容
- CKeditor不会在源代码模式下更新文本区域
- 当输入位于标签内时,更新无线电标签文本
- 页面重定向后,使用选定的选项文本更新下拉菜单文本
- 使用JavaScript用图像和文本更新页面后,iPad上的Chrome浏览器中的网站闪烁/闪烁
- 使用CloudMQTT进行Node JS实时文本更新
- 确定下拉列表选择并将文本更新到数据库
- Javascript POST请求更新,没有HTML文本更新
- 等待UI文本更新