已解决:无法在BIRT PDF报告中显示印地语字符

问题描述 投票:0回答:1

我在BIRT生成的pdf文件中看不到印地语字符。我试图做到这一点的方法如下:

  1. 我创建了一个rptdesign文件。您可以从here下载。该文件仅包含2个标签-名称和类。
  2. 通过将翻译文件添加为资源,将rptdesign文件与翻译文件相关联。转换文件的名称为translation_hi_IN.properties。可以从here下载翻译文件。我已经使用了本地化功能,并使用此翻译文件将“名称”标签关联到北印度语单词。
  3. 我已经在代码中添加了以下几行,以便在Tomcat上运行Web应用程序时,它能够访问rptdesign文件和翻译文件。

    EngineConfig config = new EngineConfig();
    config.setResourcePath("D:/rptDesignFiles");
    
  4. 我创建了fontsConfg_pdf.xml,以便为印地语脚本加载Mangal字体。可以从here下载。我已将这个fontsConfg_pdf.xml文件放置在与rptDesign文件相同的文件夹中。在代码中,我添加了以下几行

    URL fontConfig = null;
    try {
        fontConfig = new URL("file:///D:/rptDesignFiles/fontsConfig_pdf.xml");
        config.setFontConfig(fontConfig);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

    当我生成报告时,我可以在日志中看到它首先加载了org.eclipse.birt.runtime-4.2.1a.jar中存在的fontsConfig.xml,然后加载了我的自定义fonsConfig_pdf.xml

但是我只看到生成的pdf中“名称”标签的空白。

我浏览了很多论坛,但无法找出错误。有人可以指导我哪里出问题了。非常感谢!

localization pdf-generation birt hindi
1个回答
0
投票

我能够解决此问题。所以我想我会发布我的解决方案。

我所做的更改是:

  1. 不是将我的rptdesign文件与translation_hi_IN.properties关联,而是将我的rptdesign文件与translation.properties关联。这是默认属性文件,其中包含以我的默认语言(在我的情况下为英语)对我的按键进行的翻译。类似于:

    n1=Name
    

我创建了另一个翻译文件translation_hi_IN.properties,并将其与tanslation.properties放在同一文件夹中。其中包含我的北印度语翻译:

    n1=\u0928\u093E\u092E

我可以根据所选的语言在代码中设置语言环境,从而在默认语言和北印度语之间切换:

    PDFRenderOption pdfOptions = new PDFRenderOption(options);

    // set this locale if you want to render in Hindi language. Set no locale if text needs to be rendered in default language.
    pdfOptions.setOption(IPDFRenderOption.LOCALE, new Locale("hi", "IN"));

    IRunAndRenderTask task = birtEngine.createRunAndRenderTask(runnable)

    // set this locale if you want to render in Hindi language. Set no locale if text needs to be rendered in default language.
    Locale locale = new Locale("hi", "IN");
    task.setLocale(locale);
    task.setRenderOption(pdfOptions);
  1. 还修改了fontsConfig_pdf.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <font>
        <font-aliases>
            <mapping name="serif" font-family="Times-Roman" />
            <mapping name="sans-serif" font-family="Helvetica" />
            <mapping name="monospace" font-family="Courier" />
        </font-aliases>
        <font-encodings>
            <encoding font-family="Times-Roman" encoding="Cp1252" />
            <encoding font-family="Helvetica" encoding="Cp1252" />
            <encoding font-family="Courier" encoding="Cp1252" />
            <encoding font-family="Zapfdingbats" encoding="Cp1252" />
            <encoding font-family="Symbol" encoding="Cp1252" />
            <encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
            <encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
            <encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
            <encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
            <encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
            <encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
            <encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
            <encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
            <encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
            <encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
            <encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />       
        </font-encodings>
        <composite-font name="all-fonts">
            <font font-family="Times-Roman" catalog="Western" />
            <font font-family="STSong-Light" catalog="Chinese_S" />
            <font font-family="MSung-Light" catalog="Chinese_T" />
            <font font-family="HeiseiKakuGo-W5" catalog="Japanese" />
            <font font-family="HYGoThic-Medium" catalog="Korean" />
            <font font-family="Mangal"/> <!-- Added this line for Hindi -->
        </composite-font>       
    </font>
    

进行这些修改后,它起作用了!希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.