Рендеринг значения настраиваемого поля как HTML не буквальное значение - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь получить HTML контент для печати в шаблонах NetSuite Advanced PDF / HTML. Кто-нибудь знает, возможно ли это?

В этом примере custbody_print_content - это настраиваемое поле. Его значение:

<h1>Tiger</h1>

Исходный код шаблона выглядит следующим образом:

<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">

<pdf>
  <body>
    ${record.custbody_print_content}
  </body>
</pdf>

Я получаю этот вывод:

<h1>Tiger</h1>

, но я не хочу буквальный HTML. Я хочу интерпретировать HTML, например:

Тигр



Я попробовал некоторые из встроенных модулей, которые были упомянуты в комментариях, но я все еще не получить то, что я хочу. На рисунке ниже показан шаблон и распечатка. Пример Zebra имеет желаемый результат.

enter image description here


Ответы [ 2 ]

2 голосов
/ 21 марта 2020

Вы можете использовать встроенные no_es c. Например,

 ${record.custbody_print_content?no_esc}

Также я не думаю, что это должно иметь значение, но ваш xml необычен тем, что в нем нет элемента головы

Попробуйте избавиться от лишнего. пробел между DOCTYPE и элементом <pdf> и добавьте его перед открывающим тегом <body>

<head>
    <link name="verdana" type="font" subtype="opentype" src="${nsfont.verdana}" src-bold="${nsfont.verdana_bold}" bytes="2"></link>
</head>
0 голосов
/ 25 марта 2020

Похоже, NetSuite избегает html при сохранении. Это означает, что когда вы вводите это в текстовое поле формы:

<b>Marmot</b>

NetSuite «экранирует» его и сохраняет его так:

&lt;b&gt;Marmot&lt;/b&gt;

Итак, в шаблоне FreeMarker вам нужно чтобы скрыть это. Мне не удалось найти встроенную функцию для этого, но я могу использовать ?replace. Мое текущее решение выглядит так:

<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">

<pdf>
    <body>
        ${record.custbody_print_content?replace('<br />', '')?replace('&lt;', "\l")?replace('&gt;', "\g")}
    </body>
</pdf>

Если кто-нибудь знает более простой способ сделать это, то дайте мне знать.

...