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

使用开放列表和阿帕奇 poi 将 DOCX 转换为 PDF 会导致在 Docker 上运行时缺少符号

夏侯浩气
2023-03-14

我正在使用此代码将docx转换为pdf:

try {
        PdfOptions options = PdfOptions.create();
        PdfConverter.getInstance().convert(firstDoc, out, options);
    } catch (IOException ex) {
        throw new IllegalArgumentException("Conversion failed.");
    }
    return prepareResponseEntity(out);

它在Windows上运行得很好,但当它在docker上运行时,转换会跳过诸如“ą_cęįshųunzzo”和西里尔字母之类的符号。

我试着在模板中嵌入字体。改变。docx模板来解放字体“sans”并导入它的‘TTF’文件,但什么都不管用。我不能安装微软字体,因为这个应用程序用于商业目的。

我有什么选择?

共有1个答案

万俟超
2023-03-14

我找到了一个解决方案:

try {
        PdfOptions options = PdfOptions.create();
        options.fontProvider((familyName, encoding, size, style, color) -> {
            try {
                BaseFont baseFont = BaseFont.createFont("fonts/LiberationSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
                return new Font(baseFont, size, style, color);
            } catch (Exception e) {
                throw new IllegalArgumentException("Font was not found" + e);
            }
        });
        PdfConverter.getInstance().convert(firstDoc, out, options);
    } catch (IOException ex) {
        throw new IllegalArgumentException("Conversion failed");
    }
    return prepareResponseEntity(out);

您还需要将字体.ttf文件添加到资源文件夹,它就可以工作了!

 类似资料:
  • 我有1000. docx文件,我想转换成pdf,所以我写了一个程序来做到这一点,但我永远无法通过所有1000文件之前抛出一个错误。我使用。我正在使用LibreOffice4.2.0.4和JODConver2.2.2。这是我的转换代码(在此之前,我只是迭代目录中的所有. docx文件): 在抛出错误之前,我总是可以转换至少50个文件左右;这是我遇到的错误之一: 其他错误示例包括: 和 和 和 在每种

  • 我使用dox4j和pdfbox分两步将docx文件的第一页转换为图像,但我目前每次都得到< code>OutOfMemoryError。 我已经能够确定,在调用方法时,在这个过程的最后一步抛出了异常,然而,我已经使用这个方法的第二步转换pdf一段时间了,现在没有问题,所以我不知道可能是什么原因,除非dox4j编码pdf的方式是我尚未测试或已损坏的。 我尝试将替换为,并且pdf的正确呈现似乎并不比我

  • 我花了大量的时间试图确定到底出了什么问题,使用LibreOffice将pdf转换为docx(以及doc转换为docx)的代码。 我使用了两个windows run接口来测试运行一些我发现相关的代码,也尝试了python,但两者都不起作用。 我在Windows上安装了LibreOffice v6.0.2。 我一直在使用此代码的变体尝试将某些pdf文件转换为与特定pdf文件不相关的docx: 我已经在

  • 我正在努力寻找用Python将PDF文件转换为.docx文件的方法。 我见过其他与此相关的帖子,但在我的情况下,它们似乎都不正常。 我特别使用 这给了我输出[1],但在我的文件夹中找不到任何.docx文档。 我已经安装了LibreOffice 5.3。 有什么线索吗? 提前谢谢你!

  • 我正试图用Docx4J将一个DOCX文件转换为PDF,并收到两个不同文档的两个不同的异常。 1)对于文档1,第一个文档的org.docx4j.utils.singletRaversAlutilVisitorCallback.apply(SingletRaversAlutilVisitorCallback.java:27)中出现一个NullPointerException。 下面包含的代码是否是在P

  • 我在运行时生成了一个docx文档,我想将其转换为PDF,而无需实际将文件保存在本地 PdfConverter无效。我怎样才能做到这一点?