显示/保存与代码中无位置的行关联的NS高级pdf / html模板时出错

时间:2019-07-19 08:31:44

标签: javascript html pdf netsuite suitescript

当我将代码写到NS高级pdf模板中时,我开始看到未反映在代码中的错误。有关第13行中的错误的详细信息:“第13行中的错误,模板中的第142列。 详细信息... <tr> kid is <p> not <td>: ignoring

我试图从出现代码的给定行中删除代码,但是它没有任何效果,即使如果注释了整个行或移动了行,也会弹出给定的错误。

<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
    <link name="NotoSans" type="font" subtype="truetype" src="${nsfont.NotoSans_Regular}" src-bold="${nsfont.NotoSans_Bold}" src-italic="${nsfont.NotoSans_Italic}" src-bolditalic="${nsfont.NotoSans_BoldItalic}" bytes="2" />
    <#if .locale == "zh_CN">
        <link name="NotoSansCJKsc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKsc_Regular}" src-bold="${nsfont.NotoSansCJKsc_Bold}" bytes="2" />
    <#elseif .locale == "zh_TW">
        <link name="NotoSansCJKtc" type="font" subtype="opentype" src="${nsfont.NotoSansCJKtc_Regular}" src-bold="${nsfont.NotoSansCJKtc_Bold}" bytes="2" />
    <#elseif .locale == "ja_JP">
        <link name="NotoSansCJKjp" type="font" subtype="opentype" src="${nsfont.NotoSansCJKjp_Regular}" src-bold="${nsfont.NotoSansCJKjp_Bold}" bytes="2" />
    <#elseif .locale == "ko_KR">
        <link name="NotoSansCJKkr" type="font" subtype="opentype" src="${nsfont.NotoSansCJKkr_Regular}" src-bold="${nsfont.NotoSansCJKkr_Bold}" bytes="2" />
    <#elseif .locale == "th_TH"> <!-- in this line error appears -->
        <link name="NotoSansThai" type="font" subtype="opentype" src="${nsfont.NotoSansThai_Regular}" src-bold="${nsfont.NotoSansThai_Bold}" bytes="2" />
    </#if>
    <style type="text/css">table { font-size: 9pt; table-layout: fixed; width: 100%; }
th { font-weight: bold; font-size: 8pt; vertical-align: middle; padding: 5px 6px 3px; background-color: #e3e3e3; color: #333333; padding-bottom: 10px; padding-top: 10px; }
td { padding: 4px 6px; }
b { font-weight: bold; color: #333333; }
</style>
</head>
<body>
</body>
</pdf>

如何清除此错误,或者我该怎么做才能解决我的问题?

1 个答案:

答案 0 :(得分:2)

您的错误消息与模板中的实际行不匹配的原因是NetSuite如何处理高级PDF / HTML模板。这里有两个图书馆。首先,Freemarker处理您的模板,以合并记录中的字段并生成XML文档,然后将其传递到BFO引擎,该引擎呈现PDF。如果BFO阶段出现错误,则显示的行号将指向生成的Freemarker输出中的行,而不是原始模板中的行。

就您所遇到的实际错误而言,听起来您的模板具有<p>标记作为<tr>的直接子代。

<table>
  <tr>
    <p>Problematic p tag (direct child of table row element)</p>
  </tr>
</table>

您需要添加一个<td>标签

<table>
  <tr>
    <td>
       <p>Paragraph is now correctly in a table cell (td)</p>
    </td>
  </tr>
</table>