我正在与学术应用程序有两个部分,服务器和客户端...
今天,我需要创建一个新的报告,该报告使用一种特定的字体(如证书字体),并且我只在JVM服务器计算机上(/usr/lib/JVM/jdk-1.7.0/jre/lib/fonts/)安装了这种字体,而不是在客户机上。
当客户端用户调用此报告时,客户端应用程序抛出一个jasper font not found异常...引用此字体。
我相信JasperPrint在添加到JFrame时可以尝试使用客户端可用的字体..就这个字体。
ReportsManager rm = FacadeFactoryLocal.newInstance(ReportsManager.class);
JasperPrint jasperPrint = rm.geraRelatorio(reportFile, parameters);
// ...
JFrame viewer = new JFrame("Report content");
viewer.setPreferredSize(new Dimension(800, 600));
viewer.setLocationRelativeTo(null);
JasperViewer jrViewer = new JasperViewer(print, true);
viewer.getContentPane().add(jrViewer.getContentPane());
new FrameConfig(viewer); // show the frame with validations.
我找到了解决这个问题的办法。昨天,我使用Jasper字体扩展XML将前面提到的字体打包到一个jar文件中,描述字体属性。这个jar被添加到客户机应用程序类路径中,JasperPrint通常在客户机中呈现相应的报表,而不需要在它们的机器上安装所需的字体。
在这里与主架构师交谈,这个解决方案可以使用used,因为最终的jar有一个小尺寸,不影响视觉或任何应用程序的逻辑。
基于Jasper规范,我在Eclipse上创建了一个简单的Java项目,其结构如下:
project-fonts/
src/
diploma.ttf
Arial Narrow.ttf
irfonts.xml
jasperreports_extension.properties
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="Diploma">
<normal><![CDATA[diploma.ttf]]></normal>
<bold><![CDATA[diploma.ttf]]></bold>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
<fontFamily name="Arial Narrow">
<normal><![CDATA[Arial Narrow.ttf]]></normal>
<bold><![CDATA[Arial Narrow.ttf]]></bold>
<boldItalic><![CDATA[Arial Narrow.ttf]]></boldItalic>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
</fontFamilies>
net.sf.jasperReports.extension.registry.factory.fonts=net.sf.jasperReports.engine.fonts.simple.font.familes.ireport=irfonts.xml
为了将这个项目打包到jar文件中,在将这个jar添加到客户端应用程序BuildPath之后,我使用了Eclipse。
参考资料(亚历克斯提供)
http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions
谢谢你的支持,祝你有美好的一天。
要编写RMI Java应用程序,您必须按照以下步骤操作 - 定义远程接口 开发实现类(远程对象) 开发服务器程序 开发客户端程序 编译应用程序 执行应用程序 定义远程接口 远程接口提供特定远程对象的所有方法的描述。 客户端与此远程接口通信。 要创建远程接口 - 创建一个扩展属于该包的预定义接口Remote的接口。 声明此接口中客户端可以调用的所有业务方法。 由于远程调用期间可能存在网络问题,因此可
我想创建一个服务,可以拒绝\撤销对用户的移动邮件应用程序的访问。 具体来说,我想暂时撤销使用office365在线交换邮件对移动邮件客户端应用程序(如Nine)的访问,该应用程序被认证为Azure Active Directory应用程序。 到目前为止,我想出了如何执行类似或部分操作: > 我可以使用此链接手动撤消azure AD应用:https://account.activedirectory
我需要一个用于java spring应用程序的graphQL客户端,以与另一个基于graphQL API的微服务通信。我知道Apollo Android,但它似乎没有用maven实现(也许你知道maven的一些链接或示例等)。有什么想法和建议吗?提前感谢!
我正在尝试让一个简单的HTTP控制台应用程序作为Azure服务应用程序运行。它所做的只是在连接时返回OK。它在我的笔记本电脑上运行良好,我可以使用VS2019发布到Azure ok。问题是用于监听的前缀。 在我的笔记本电脑上,我可以使用超文本传输协议://: 80/; https://: 443/,但在Azure中,我得到一个错误:[例外]访问被拒绝。 本文https://github.com/p
我是Spring Framework的新手。试图制作一个基于Java的Spring MVC项目。这是我的主要应用程序类 当我运行项目时,我得到了错误 为什么Spring不能显示JSP文件?
我需要编写一个基于桌面的客户端应用程序,它在进行基于SAML的SSO身份验证后对SharePoint服务器进行一些Web服务方法调用。 我发现SAML SSO主要用于处理所有细节的浏览器。根据这个问题,SAML 2.0中似乎有一种技术称为ECP,专门用于启用非基于浏览器的客户端。 然而,SharePoint 2010/2013等一些应用程序仅支持SAML 1.1;在这种情况下可以使用什么?