java - 在java中将svg转换为pdf时更改字体

标签 java pdf fonts svg batik

我有一个用于将 svg 转换为 pdf 的 java 程序。在该 svg 文件中,我指定了 Myriad Pro Light 作为样式,在转换为 pdf 后,字体出现了其他内容。任何人都可以建议我如何以编程方式配置字体样式。

最佳答案

Batik 依靠 AWT 字体来呈现 SVG 文本。如果系统上找不到该字体或未注册该字体,您最终将得到默认的“sans serif”字体。

您必须确保“Myriad pro light”字体已安装在您的系统上,并且它的系列名称与 SVG 文件中引用的系列名称完全相同(查看 font-family 属性);如果需要,请在 SVG 文件中更正它。

如果无法在系统范围内安装字体,您可以在使用类似这样的方法创建 SVGDocument 实例之前在运行时注册它

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = new FileInputStream(new File("path_to_myriad.ttf"));
java.awt.Font font;
try {
    font = java.awt.Font.createFont(java.awt.Font.TRUETYPE_FONT, is);
    ge.registerFont(font);
} catch (FontFormatException e) {
    e.printStackTrace();
}

关于java - 在java中将svg转换为pdf时更改字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977293/

相关文章:

c# - 如何删除/替换当前使用的字体

java - sftp java客户端保持sshd进程在远程机器上运行

java - 为 "select ... limit ?,?"准备好的查询检索元数据时出现 MySQLSyntaxErrorException

r - 在 R 中将 pdf 转换为 png

java - JasperReports 字体扩展 +~JF*****.tmp 文件

ios - 使用自定义字体而不包含在info.plist ios中

java - 可选接口(interface)问题

java - 捕获异常或对 Arrays.copyOf 进行空检查是好习惯吗

pdf - FPDF分页问题

php - 使用 PHP 从 PDF 中提取图像