当前位置: 首页 > 知识库问答 >
问题:

对飞碟使用自定义字体会导致PDF损坏

丁和歌
2023-03-14

我有一个用飞碟生成的工作PDF。然而,当我现在想添加自定义字体时,生成的PDF会损坏。浏览器没有下载文件,而是显示各种奇怪的符号。

通过在类路径上添加ttf字体文件并调用addFont来添加自定义字体:

            renderer.getFontResolver().addFont("/fonts/Montserrat-Regular.ttf", BaseFont.IDENTITY_H, true);
            renderer.getFontResolver().addFont("/fonts/Montserrat-Italic.ttf", BaseFont.IDENTITY_H, true);
            renderer.getFontResolver().addFont("/fonts/Montserrat-Bold.ttf", BaseFont.IDENTITY_H, true);
            renderer.getFontResolver().addFont("/fonts/Montserrat-BoldItalic.ttf", BaseFont.IDENTITY_H, true);

并在CSS中指定字体:

html {
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;
}

共有1个答案

范兴文
2023-03-14

问题是由于在响应的输出流中生成PDF后设置了响应标头。

我的控制器是这样的:

    @GetMapping("/{id}/download-pdf")
    @Secured(Roles.ADMIN)
    public void downloadPDFResource(@PathVariable("id") EntityId entityId,
                                    HttpServletRequest request, HttpServletResponse response,
                                    Locale locale) throws IOException {
        byte[] pdf = pdfService.generatePdf("details-pdf", context);
        response.getOutputStream().write(pdf);
        response.setContentType("application/pdf");
        response.addHeader("Content-Disposition",
                           "attachment; filename=" + "document.pdf");

        response.getOutputStream().flush();
    }

修复是将内容类型和标题的设置移动到方法的顶部:

    @GetMapping("/{id}/download-pdf")
    @Secured(Roles.ADMIN)
    public void downloadPDFResource(@PathVariable("id") EntityId entityId,
                                    HttpServletRequest request, HttpServletResponse response,
                                    Locale locale) throws IOException {
        response.setContentType("application/pdf");
        response.addHeader("Content-Disposition",
                           "attachment; filename=" + "document.pdf");

        byte[] pdf = pdfService.generatePdf("details-pdf", context);
        response.getOutputStream().write(pdf);

        response.getOutputStream().flush();
    }
 类似资料:
  • 我正在使用飞碟的HTML到PDF转换。我需要生产一个输出PDF与600dpi的字母大小。我怎样才能做到这一点呢?

  • 我使用的罐子来自maven repo 我正在测试的代码来自以前的堆栈解决方案 我担心它可能过时了,因为图书馆被贬值了。测试以下代码时: 这一行我有以下错误:

  • 我正在使用飞碟生成pdf文件。我想要第一页,第二页是横向模式,其余的是纵向模式。所以,我这样做: 但是它会自动在第一个pdf文件中创建2个空白页?如何修复它?

  • 问题内容: 我正在尝试在JFrame中使用特殊字体,但遇到了问题。我有一个这样定义的JLabel: 并且我有一个名为CUSTOMFONT-MEDIUM.TTF(TrueType字体)的文件,但是编写了以下内容: 代码会编译,并且一切正常,除了不会显示“ lab”,因此没有文本。我想这是因为我从未指定字体大小,但是我所做的任何尝试都失败了。有人可以帮我吗? 问题答案: 您创建的字体必须先在中注册,以

  • 我有一个jsp文件,我喜欢使用飞碟将其转换为PDF。以下是jsp文件: 以下是我用于将html解析为pdf的servlet代码: } } 我有个例外 有人能帮我吗?有没有可能从这种html页面创建pdf

  • 我正在创建一个包含希腊字符的XHTML。在下面找到一个简单的例子。 当我打印结果时,我得到了。 有什么能帮忙的吗?