0

我已经安装了 BI 发布者桌面,它可以帮助我们从带有示例数据的 RTF 文件生成和可视化 PDF。我们使用的 RTF 文件是英文和中文字符的混合,并带有示例 XML 数据,我们能够看到我们想要的 PDF。

正如预期的PDF 当我们在我们的 java 代码中使用相同的 RTF(使用 BI 发布者 Java API)来创建 PDF 时,所有的中文字符都被替换为问号 (?)。

生成的 PDF

下面是我们将 RTF 转换为 PDF 的代码

        RTFProcessor rtfp = new RTFProcessor(pTemplate);
        ByteArrayOutputStream xslOutStream = new ByteArrayOutputStream();
        rtfp.setOutput(xslOutStream);
        
        rtfp.process();

        //Use XSL Template and Data from the VO to generate report and return the OutputStream of report
        ByteArrayInputStream xslInStream = new ByteArrayInputStream(xslOutStream.toByteArray());

        FOProcessor processor = new FOProcessor();
        ByteArrayInputStream dataStream =
            new ByteArrayInputStream((byte[])pXmlOut); ///amDpc.getXMLData(pVoInstName));
        processor.setData(dataStream);
        processor.setTemplate(xslInStream);
        
        ByteArrayOutputStream pdfOutStream = new ByteArrayOutputStream();
        processor.setOutput(pdfOutStream);
        byte outFileTypeByte = FOProcessor.FORMAT_PDF;
        
        processor.setOutputFormat(outFileTypeByte); 
        processor.generate();

        dataBytes = pdfOutStream.toByteArray();

谷歌搜索建议将字体文件添加到 BI 发布者 $oracle_top 位置或 $java_home/jre/lib/fonts 位置。由于不直接使用 BI 发布者,因此排除了选项 1 ($oracle_top),选项 2 需要测试部署在 PROD 服务器上的所有 ADF 应用程序,我想避免这种情况。

关于如何打印汉字有什么建议吗?

软件版本:Oracle BI Publisher Desktop 12.2.1.4.0

4

1 回答 1

1

这是通过将字体放在 $java_home/jre/lib/fonts 位置下实现的。不需要服务器反弹。

于 2021-04-09T07:41:45.337 回答