gpt4 book ai didi

java - 无法识别带有 Cp1252 的 DocumentException Arial

转载 作者:行者123 更新时间:2023-11-29 07:54:48 24 4
gpt4 key购买 nike

在过去的几个月里,我生成了数千个字体为 Courier 的 pdf(在开发时在 Windows 7 上,在测试和生产时在 OpenSuse 上)。

现在我的目标是使用 Arial。所以我在我们的属性文件中切换了字体名称,我得到了这个异常:

Stacktrace snippet: com.itextpdf.text.DocumentException: Font 'Arial' with 'Cp1252' is not recognized. at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:708) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:615) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:450)

在谷歌搜索了一段时间后,我找到了解决方案。我只需要在设置中使用“Arial.ttf”(如文件名)。但在那之后,我得到了另一个异常:

java.io.IOException: Arial.ttf not found as file or resource.
at com.itextpdf.text.io.RandomAccessSourceFactory.createByReadingToMemory(RandomAccessSourceFactory.java:224)
at com.itextpdf.text.io.RandomAccessSourceFactory.createBestSource(RandomAccessSourceFactory.java:173)
at com.itextpdf.text.pdf.RandomAccessFileOrArray.<init>(RandomAccessFileOrArray.java:147)
at com.itextpdf.text.pdf.TrueTypeFont.process(TrueTypeFont.java:625)
at com.itextpdf.text.pdf.TrueTypeFont.<init>(TrueTypeFont.java:369)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:699)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:615)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:450)

所以这里的提示是,itextpdf 正在寻找一个文件。所以我只是将文件名 C:\\Windows\\Fonts\\Arial.ttf 输入到我们的配置中。现在可以了!

但目标只是使用“Arial”作为字体名称。可能吗?

非常感谢!

最佳答案

不可能只使用名​​称 Arial,因为 Arial 并未列为 14 种标准 Type 1 字体之一(而 Courier 是这 14 种字体之一)。

如果你想使用 Arial,你总是需要引用 arial.ttf 文件,是的,这可能意味着你需要提供 c:/windows/fonts/arial.ttf作为路径。

如果您想让您的应用程序独立于平台,您可以将字体作为资源随代码一起提供,并使用该资源的路径。

另一种解决方案是使用 FontFactory并注册所有字体。请注意,注册字体的初始调用可能需要一些时间,因为 FontFactory 将在您的硬盘上搜索尽可能多的字体,查看可能包含字体文件的目录(取决于操作系统)。看看 FontFactoryExample并尝试使用 register()registerDirectory()registerDirectories() 方法。

关于java - 无法识别带有 Cp1252 的 DocumentException Arial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18611762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com