我们有一个脚本可以将我们的Indesign文档导出为HTML,其中一个例程是导出表格。在这个脚本中,我们遍历每个Tables-> Rows->单元格并评估一些属性(即bottomEdgeStrokeType,topEdgeStrokeType等...)并将它们传输到HTML。
昨天我们在转换一个特定文档时出现问题,因为有些单元格完全缺少“bottomEdgeStrokeType”属性。我通过输出每个单元格的属性并将有缺陷的单元格与其他单元格进行比较来发现这一点。
这行下面的错误:“此请求的对象无效。”。
var cellType = cell["bottomEdgeStrokeType"];
现在,为了解决这个问题,我已经把它包裹在一个try catch块来处理它不存在的情况,但现在令我困惑的是,Extendscript如何实例化一个缺少属性的对象?
Indesign版本:CS5.5
答案 0 :(得分:1)
财产不仅未定义'如果它根本不存在(例如要求溢流文本中的字符的父文本框),但InDesign的Javascript引擎也无法为多个值返回合理准确的结果。
如果你要求""段落的磅值,其中此段落包含多个大小,不良ID不会考虑返回类似CONSTANT.Mixed
的内容,或仅返回第一个值,或者(我可能更喜欢的)一个值数组;它会返回undefined
。
那么单个表格单元格如何具有多个底部笔划?如果它下面的单元格被分成多个单元格,并且其中一个单元格有一个" top"中风,但另一方没有。
很难推荐适当的解决方案。您可以首先测试当前单元格是否已合并" (就InDesign的内部表模型而言)与columnSpan
;如果是这样,迭代跨越的列数并测试 next 行的单元格的顶部笔划,理论上应与上面单元格的底部笔划匹配。 (我发现自己想知道这是否总是正确的.ID的桌面模型是...... 很奇怪。尽管功能重叠,但它并不完全像HTML表格。)< / p>
如果columnSpan
大于1 且等于当前单元格下方的单元格数量,则可以测试其所有&#34; top&#34;值是相同的,如果是这样,请使用该值。 (我从来没有对此进行测试,因此ID表的模型可能只是失败因为一个单元被合并,无论是否相同的值。)
可以尝试标记此单元格的下一行以输出&#34; top&#34;笔画也是如此 - 但交替的顶部和底部笔画可能在CSS中并排排列很好。也许最好只将第一个最高笔画值翻译成&#34;&#34;&#34;当前单元格的底部笔划属性,并在需要时手动修复(如何?),或者合理的操作,希望没有人会注意到它。