Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java i报告外部字体_Java_Jasper Reports_Ireport - Fatal编程技术网

Java i报告外部字体

Java i报告外部字体,java,jasper-reports,ireport,Java,Jasper Reports,Ireport,我正在尝试在PDF文档中使用外部字体。通过设置->字体->安装新字体安装后,我在iReport中使用它没有问题 问题是,当我将新字体导出为扩展并将jar添加到java项目的类路径时,无法生成PDF,并且失败 JRFontNotFoundException:Font'Arial Custom'对JVM异常不可用 我做错了什么? 多谢各位 UPD#1: jasperreports_extensions.properties net.sf.jasperreports.extension.registr

我正在尝试在PDF文档中使用外部字体。通过设置->字体->安装新字体安装后,我在iReport中使用它没有问题

问题是,当我将新字体导出为扩展并将jar添加到java项目的类路径时,无法生成PDF,并且失败

JRFontNotFoundException:Font'Arial Custom'对JVM异常不可用

我做错了什么? 多谢各位

UPD#1:

jasperreports_extensions.properties

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1329192368547=fonts/fontsfamily1329192368547.xml
fontsfamily1329192368547.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>

   <fontFamily name="Arial Custom">
       <normal><![CDATA[fonts/arial.ttf]]></normal>
       <bold><![CDATA[fonts/arialbd.ttf]]></bold>
       <italic><![CDATA[fonts/ariali.ttf]]></italic>
       <boldItalic><![CDATA[fonts/arialbi.ttf]]></boldItalic>
       <pdfEncoding><![CDATA[Identity-H]]></pdfEncoding>
       <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
       <locales>
               <locale><![CDATA[en_US]]></locale>
       </locales>
   </fontFamily>    

</fontFamilies>


字体目录包括所有ttf文件。我刚刚将jar添加到类路径中。

这是我的工作示例

字体定义文件(我从字体的jar文件中找到):


jar文件位于应用程序的类路径中

下面是我的java代码:

String defaultPDFFont=“Arial”;
setProperties(“net.sf.jasperreports.awt.ignore.missing.font”,“true”);
setProperty(“net.sf.jasperreports.default.font.name”,DefaultPdfont);
JasperReport-JasperReport=JasperCompileManager.compileReport(reportSource);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数);
jaspeexportmanager.exportReportToPdfFile(jasperPrint,outputFileName);
我设置了
net.sf.jasperreports.awt.ignore.missing.font
属性,以防止在缺少字体的情况下出现错误(
JRFontNotFoundException:font'Arial Custom'对JVM异常不可用)。我设置了
net.sf.jasperreports.default.font.name
属性来确定将在生成的pdf文件中使用的字体

您可以阅读有关此属性的信息:和


生成的pdf文件使用了这种字体(
Arial
,在本示例中)。

您能发布带有字体定义的xml文件以及使用这种字体的jrxml文件片段吗?谢谢您的回复。请参阅问题中的更新Alex询问了一段.jrxml。你还没有发布,谢谢!我找到了问题所在-我将字体安装为embedded.JRProperties.setProperty deprivated need:DefaultJasperReportsContext context=DefaultJasperReportsContext.getInstance();JRPropertiesUtil.getInstance(context.setProperty(“net.sf.jasperreports.awt.ignore.missing.font”,“true”);