首页 文章

JasperReports字体RMI应用程序与轻客户端应用程序消耗jaspers

提问于
浏览
2

我正在使用学术应用程序,包括2个部分,服务器和客户端......

在客户端,用户使用表单进行交互(CRUD)并向服务器调用报告请求(报告类似于Day销售) .

客户端应用程序向服务器应用程序发送RMI请求,服务器通过RMI请求(响应)向此客户端返回JasperPrint对象 .

有一次在客户端应用程序中,这个JasperPrint将附加在JFrame上,并向用户显示 .

...好...

今天我需要创建一个新的报告,这个报告使用特定的字体(比如证书字体),我已经在JVM服务器机器上安装了这个字体(/usr/lib/jvm/jdk-1.7.0/jre/lib/fonts /)只...在客户端没有 .

当客户端用户调用此报告时,客户端应用程序将引发一个jasper字体未找到异常...引用此字体 .

我相信JasperPrint附加在JFrame上时尝试使用客户端可用的字体 . 只需要这个字体 .

问题是:我如何能够客户端不需要安装此字体来查看此报告,并且,我不是在我的所有应用程序中将JasperPrint视图转换为PDF视图?

FacadeRMI调用的示例代码:

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.

最好的祝福 .

1 回答

  • 1

    我找到了解决这个问题的方法 . 昨天我使用Jasper Font Extension XML将提到的字体打包在一个jar文件中,描述了字体属性 . 这个jar被添加到客户端应用程序类路径中,而JasperPrint通常会在客户端中呈现相应的报告,而不会在其计算机上安装必需的字体 .

    在这里与主建筑师交谈,这个解决方案可以使用,因为最终的jar有一个小的尺寸,不会影响视觉或任何应用程序的逻辑 .

    基于Jasper规范,我在Eclipse上创建了一个简单的Java项目,具有以下结构:

    project-fonts/
    src/
    diploma.ttf
    Arial Narrow.ttf
    irfonts.xml
    jasperreports_extension.properties
    

    irfonts.xml:

    <?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>
    

    jasperreports_extension.properties:

    net.sf.jasperreports.extension.registry.factory.fonts = net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory net.sf.jasperreports.extension.simple.font.families.ireport = irfonts.xml

    要将此项目打包到jar文件,我将此jar添加到客户端应用程序buildpath之后使用了Eclipse .

    参考(由Alex提供)

    http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions

    感谢您的支持,祝您度过愉快的一天 .

相关问题