gpt4 book ai didi

java - 如何在运行时以编程方式加载字体扩展?

转载 作者:行者123 更新时间:2023-12-02 01:19:49 25 4
gpt4 key购买 nike

我了解 jasperreports_extension.properties 以及如何放入类路径以使字体可用于 jasper 报告。

我想在运行时动态加载它们的字体,而不是在应用程序启动时在类路径上提供它们。

Jasper 中是否有我可以使用的 API?如果有,如何使用?如果可能的话,我更喜欢 Jasper 5.x 的答案。

最佳答案

您可以通过创建 JasperReportsContext 实例(例如 SimpleJasperReportsContext)以编程方式注册字体扩展和其他扩展类型,将扩展添加到上下文对象,然后在以下情况下使用它:填写和导出报告。

代码看起来像这样:

//create the context object and the font extension
SimpleJasperReportsContext jasperReportsContext = new SimpleJasperReportsContext();

SimpleFontFamily fontFamily = new SimpleFontFamily(jasperReportsContext);
fontFamily.setName("family name");//to be used in reports as fontName
fontFamily.setPdfEmbedded(true);
fontFamily.setPdfEncoding("Identity-H");

SimpleFontFace regular = new SimpleFontFace(jasperReportsContext);
regular.setTtf("font ttf path");
fontFamily.setNormalFace(regular);

jasperReportsContext.setExtensions(FontFamily.class, Arrays.asList(fontFamily));

//use the context when filling and exporting reports
//note that there are variations here depending on the API you use for filling and exporting
JasperPrint jasperPrint = JasperFillManager.getInstance(jasperReportsContext).fill(jasperReport, params);
...
JasperExportManager.getInstance(jasperReportsContext).exportToPdf(jasperPrint);
...
JRPdfExporter exporter = new JRPdfExporter(jasperReportsContext);

关于java - 如何在运行时以编程方式加载字体扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57918748/

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