首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ITextRenderer - HTML转换问题

ITextRenderer - HTML转换问题
EN

Stack Overflow用户
提问于 2022-04-25 12:30:41
回答 1查看 965关注 0票数 0

总之,我正在使用Thymleaf、ITextRenderer、Spring来尝试生成PDF文件。

输入: JSON文件

Java :读取JSON文件,对其进行处理以检索信息并将其保存在JavaObjects中。这些信息将显示在PDF中。

代码语言:javascript
运行
复制
final TemplateEngine templateEngine;
private final ObjectMapper objectMapper;

//reportAsBytes  will be sent to HTML file
byte[] reportAsBytes = generateReport(
            TEST_TEMPLATE,
            objectMapperWithNullValues.valueToTree(dataForReport)
        );

 public byte[] generateReport(String templateId, JsonNode data) {
        Map<String, Object> dataAsMap = convertDataToMap(data);
        String reportAsHtml = generateReportAsHtml(templateId, dataAsMap, 'en');
        return generatePdfReportAsBytes(reportAsHtml);
    }

 private Map<String, Object> convertDataToMap(JsonNode data) {
        return objectMapper.convertValue(data, new TypeReference<Map<String,Object>>() {});
    }

  private String generateReportAsHtml(String templateId, Map<String, Object> jsonData, Locale reportLocale) {
        Context context = new Context();
        context.setVariable("data", jsonData);
        context.setLocale(reportLocale);
        return templateEngine.process(templateId, context);
    }

  private byte[] generatePdfReportAsBytes(String reportAsHtml) {
        ITextRenderer renderer = createRenderer();
        renderer.setDocumentFromString(reportAsHtml);
        renderer.layout();

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        renderer.createPDF(outputStream);
        return outputStream.toByteArray();
    }

Thymleaf: HTML模板具有位置持有者${" data ".javaobject}来从Java获取数据以填充PDF文件。

正确生成PDF报告。但是,当具有'>‘、'<’、'&‘等特殊字符的任何javaObject的字符串值停止生成报表时。

这里有人指路吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-25 13:41:16

我有这个问题的答案。

我们可以对具有特殊字符并希望显示在PDF文件中的文本进行清理。

代码语言:javascript
运行
复制
private String sanitizeHtmlString(String text) {
 return nonNull(label) ? HtmlUtils.htmlEscape(label) : null;
}

HtmlUtils可以在spring-web-5.3.18.jar中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71999568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档