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

无法在FOPTransformer中包含Arial字体

姬经义
2023-03-14

我正在开发一个具有一些表单的应用程序,然后使用 FOP 创建 pdf 文件。正在生成的PDF文件是时间新罗马,但我希望它们使用Arial字体。我在项目名称中添加了 arial.ttf-

这个ttf和代码必须放在alfresco-amp文件中,但现在我还没有将它作为arial的jar文件添加。ttf,因为我不确定如何仅使用.ttf文件创建jar文件,以下是我为实现这一点所做的工作,但pdf仍在使用新的roman:fopconfig:

<fop version="0.94">
 <base>./</base>
 <font-base>./</font-base>
 <renderer mime="application/postscript">
 <fonts>
        <font kerning="yes" embed-url="/fonts/arial.ttf" encoding-mode="auto">
            <font-triplet name="Arial" style="normal" weight="normal" />
        </font>
    </fonts>
   </renderer>
</fop>

创建了一个类文件,如下所示:

import java.io.InputStream;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;

public class ClasspathUriResolver implements URIResolver
{

  public Source resolve(String href, String base) throws TransformerException
  {
    Source source = null;
    InputStream inputStream = ClassLoader.getSystemResourceAsStream(href);
    if (inputStream != null)
    {
      source = new StreamSource(inputStream);
    }
    return source;
  }
}

这是我为 FOPTranformer 编写的代码的一部分:

   FopFactory fopFactory = FopFactory.newInstance();
     FOURIResolver uriResolver = (FOURIResolver)fopFactory.getURIResolver();
     uriResolver.setCustomURIResolver(new ClasspathUriResolver());
     FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

共有1个答案

班承德
2023-03-14

我认为您需要在创建FopFactory时加载字体配置,参见http://XML graphics . Apache . org/fop/1.0/embedding . html # config-external

但是,如果您在XSL-FO文件中将“sans-serf”指定为ont-group,FOP将默认使用Arial字体。

 类似资料:
  • 首先,我正在发送电子邮件给数量的客户,可能会像16000封邮件,不幸的是,我发现问题在我的自定义字体。我不能加载到我的邮件页面。我试过这个: With link tag in HTML 不要告诉我让它成为图像,因为我不能,原因是邮件表单将通过PHP生成。 任何帮助都将不胜感激。

  • Verisign证书如下所示。 我已经使用以下命令将证书导入到JKS密钥库中: 我已经验证了keytool可以从新创建的密钥库中读回证书详细信息。 我能做些什么来解决这个问题吗?

  • 问题内容: 我正在尝试编写一个简单的Array扩展,该扩展提供了“ distinct”方法。这是我到目前为止的内容: 问题是“包含”语句失败,如下所示: 找不到包含所提供参数的“包含”的重载 我很确定类型约束是正确的。有任何想法吗? 问题答案: 斯威夫特1.x 元素中的元素不必是,即它们不必与。 这意味着您不能为 所有 可能的数组编写该函数。而且Swift不允许您仅扩展Arrays的子集。 这意味

  • 我在尝试将cassandra依赖性纳入项目的pom时遇到了一些问题。xml。 处理POM时遇到一些问题:[错误]无法确定概要文件doclint-java8-disable@com的Java版本。数据税。cassandra:cassandra驱动程序父级:2.1.6,/根/。m2/repository/com/datastax/cassandra/cassandra驱动父级/2.1.6/cassan

  • 我正在开发一个使用JasperReports的Java项目。我在使用相同技术的其他项目中工作过几次,当试图在Unix环境中打印报表时,我也遇到了同样的问题。 null 但是,我想了解Jasper是如何处理字体的,以及它是如何搜索安装在Unix环境中的字体的。也许一个更好的问题是:JVM如何处理本机字体?有人能就这个问题给我详细解释一下吗?如何在运行时为JVM提供系统字体?