JDK:21
x-easy-pdf:3.2.1
Операционная система: CentOS 7
Файл шрифта: simfang.ttf
Проблемный скриншот представлен ниже:
Локальная операционная система: macOS
Нормальное отображение представлено ниже:
```xml
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xe="http://www.x-easypdf.cn/ns">
fo:layout-master-set
<fo:simple-page-master master-name="A4" margin="20px" page-height="29.7cm" page-width="21cm">
<fo:region-body margin-top="3cm"/>
<fo:region-before extent="3cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:static-content flow-name="xsl-region-before">
<fo:block-container height="3cm" width="50%" position="absolute" top="0cm" left="0cm">
fo:block
<fo:external-graphic src="${logo}" content-height="2.5cm" content-width="auto" />
</fo:block>
</fo:block-container>
<fo:block-container width="50%" height="3cm" position="absolute" top="0cm" right="0cm">
<fo:block text-align="right">
fo:instream-foreign-object
<xe:barcode content="https://xj.maxminds.cn/task/history/detail/${task.taskHistoryId}"
height="2.5cm" type="qr_code" width="2.5cm" words="Сканирование для просмотра онлайн"
words-family="黑体" words-color="#abb2bf"/>
</fo:instream-foreign-object>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block font-family="黑体">
<fo:table table-layout="fixed">
fo:table-body
fo:table-row
<fo:table-cell number-columns-spanned="4" text-align="center" border="1 solid black" margin="0" padding="0">
<fo:block font-weight="500">
fo:inline${task.taskName}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineНазвание задачи</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline
${task.taskName}
</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineСтатус выполнения</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline
<#if task.status=='0'>В ожидании</#if>
<#if task.status=='1'>В процессе</#if>
<#if task.status=='2'>Выполнено</#if>
<#if task.status=='3'>Пропущено сроки</#if>
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineКатегория задачи</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${task.taskTypeName!''}</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineНаименование оборудования</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${task.equipmentName}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineПроект</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="3" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inline${task.projectName}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineДата начала</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline
<#if task.allowPostStartTime??>
${task.allowPostStartTime?string("yyyy-MM-dd HH:mm")}
</#if>
</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineДата окончания</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline
<#if task.allowPostEndTime??>
${task.allowPostEndTime?string("yyyy-MM-dd HH:mm")}
<#else>
Без ограничений
</#if>
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineИсполнитель</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${task.operatorName!''}</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineДата последнего действия</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline
<#if task.lastOptTime??>
${task.lastOptTime?string("yyyy-MM-dd HH:mm")!''}
</#if>
</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
fo:table-row
<fo:table-cell number-columns-spanned="4" text-align="center" border="1 solid black" margin="0" padding="0">
<fo:block font-weight="500">
fo:inlineДетали задачи</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
<#if form.checkItems??>
fo:table-row
<fo:table-cell number-rows-spanned="${form.checkItems?size}" text-align="center" display-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inlineЭлементы проверки и обслуживания</fo:inline>
</fo:block>
</fo:table-cell>
<#if form.checkItems[0].status == "normal">
<fo:table-cell text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inlineНормальное состояние</fo:inline>
</fo:block>
</fo:table-cell>
</#if>
<#if form.checkItems[0].status == "error">
<fo:table-cell text-align="center" border="1 solid black" margin="0" padding="0">
<fo:block color="red">
fo:inlineОшибка</fo:inline>
</fo:block>
</fo:table-cell>
</#if>
<fo:table-cell number-columns-spanned="2" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inline${form.checkItems[0].label}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
<#list form.checkItems[1..] as item>
fo:table-row
<#if item.status == "normal">
<fo:table-cell text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inlineНормальное состояние</fo:inline>
</fo:block>
</fo:table-cell>
</#if>
<#if item.status == "error">
<fo:table-cell text-align="center" border="1 solid black" margin="0" padding="0">
<fo:block color="red">
fo:inlineОшибка</fo:inline>
</fo:block>
</fo:table-cell>
</#if>
<fo:table-cell number-columns-spanned="2" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inline${item.label}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</#list>
</#if>
<#if form.localtion??>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineЛокация</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="3" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inline${form.localtion}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</#if>
<#if form.images?exists>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineФотографии местности</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="3" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
<#if (form.images!?size > 0)>
<#list form.images as img>
fo:inline
<fo:external-graphic src="${img.url}" content-height="2.5cm" content-width="auto" />
</fo:inline>
</#list>
<#else>
fo:inline</fo:inline>
</#if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</#if>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inlineДополнительные сведения</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="3" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
fo:inline${form.otherDesc!''}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
<#if form.signatureList?exists>
<#list form.signatureList as signature>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${signature.itemName}</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="3" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
<#if signature.value?exists>
<fo:external-graphic src="${signature.value}" content-height="2.5cm" content-width="auto" />
<#else>
fo:inline</fo:inline>
</#if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</#list>
</#if>
<#if checkSignList?exists>
fo:table-row
<fo:table-cell number-columns-spanned="4" text-align="center" border="1 solid black" margin="0" padding="0">
<fo:block font-weight="500">
fo:inlineПроверочные подписи</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
<#list checkSignList as checkSign>
fo:table-row
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${checkSign.signer}</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" text-align="center" border="1 solid black" margin="0" padding="0">
fo:block
<#if signature.signValue?exists>
<fo:external-graphic src="${signature.signValue}" content-height="2.5cm" content-width="auto" />
<#else>
fo:inline</fo:inline>
</#if>
</fo:block>
</fo:table-cell>
<fo:table-cell border="1 solid black" text-align="center" margin="0" padding="0">
fo:block
fo:inline${signature.createTime!''}</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</#list>
</#if>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>