cfdocument PDF显示印地语语言字符串为空

问题描述 投票:2回答:2

这里,根据我的业务逻辑,我应该支持所有语言。所以我根据国家/地区选择显示了一个字符串。一切都对我有利。但是对cfdocument有问题。在这里,我提出了示例代码/演示代码。

注意:我已经看过CFDocument PDF not showing Japanese data,但在印地语中对我没有更多帮助。

<cfoutput>
    <table border='1px;'>
        <tr>
            <td>Name</td>
            <td>Age</td>
            <td>अनुरोध आईडी</td>
        </tr>
        <tr>
            <td>Kannan</td>
            <td>29</td>
            <td>108</td>
        </tr>
    </table>
</cfoutput>

将正确显示,如下图所示。

enter image description here

但是,当我在cfdocument中使用该印地语字符串时,不支持该字符串。就像我下面的图片。

<cfoutput>
    <cfdocument format="PDF" overwrite="Yes">
        <table border='1px;'>
            <tr>
                <td>Name</td>
                <td>Age</td>
                <td>अनुरोध आईडी</td>
            </tr>
            <tr>
                <td>Kannan</td>
                <td>29</td>
                <td>108</td>
            </tr>
        </table>
    </cfdocument>
</cfoutput>

enter image description here

注意:我尝试过所有类型,但没有运气,我尝试过使用cfprocessingdirectivecfsettingSetLocale()meta tags cfsavecontents

请让我知道是否有任何建议。提前致谢 !

coldfusion internationalization cfml lucee cfdocument
2个回答
1
投票

从CF10 + Windows服务器迁移以来,我花了很多时间才能解决这个问题,在Windows Server中,我们需要的所有语言均已开箱即用,已经迁移到Linux + Docker上的CF2016,在其中中文,日文,韩文和其他语言-我无法记得我们是否测试过印地语-都坏了。

不幸的是,对于您的问题,没有一个简单的“正确”答案,因为这取决于正确纠正两个关键问题,并且该方法将根据您的服务器操作系统,Java版本和CF版本而略有不同。但这对于评论来说太长了,我将冒着发布答案的风险。这两个关键点是:

  1. 确保CF可以访问并希望找到它们的路径中提供了合适的字体-使用CF Admin->字体进行确认
  2. 确保为您需要支持的每种语言配置了JVM字体配置。

((1)是简单的部分,并且在其他地方有充分的文档说明,包括先前评论中提到的Ben Nadel链接-https://www.bennadel.com/blog/2987-testing-foreign-and-unicode-character-rendering-with-the-cfdocument-tag-in-coldfusion.htm这样做并重新启动CF服务将使您到达一个点,如果您在CSS中显式声明了cffont,则cfdocument将能够呈现每个字体。但是,当您需要支持多种语言并且不知道哪种语言预先适用于特定元素,并且/或者一个元素中包含多种语言时,这是不理想的。

就是(2)的来源,您应该能够在CSS中为包含多种语言的元素(例如,英语和北印度语)在同一段中指定一种字体(例如Arial / Helvetica / sans-serif);然后Java会检测超出当前字体的字符序列,并使用JVM字体配置替换那些字符的合适字体,而无需在html / css中声明它。对于印地语,我相信这通常是Windows上的梵文或Kruti。

不幸的是,这是棘手的部分,因为它随Java版本和平台的不同而有所不同,而且似乎没有得到很好的记录。在过去的日子里,Sun和OS厂商非常擅长为我们维护一个不错的基本配置。如今,这似乎是事后的想法,尤其是在许多Linux版本上。

此链接提供了有关在某些环境下如何使用字体配置的示例:https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html您可能会使用其他方法。如果搜索java [your java platform version] font properties config [your OS],则应该以正确的路径结束。


0
投票

经过长时间的分析,我提供了解决方案。也就是说,我们可以下载字体ttf文件(根据您需要的语言)。我需要印地语,所以我已经从这里https://fonts.webtoolhub.com/font-n17979-kruti-dev-010.aspx?lic=1下载了它。并执行以下步骤。

步骤1: Coldfusion admin - > setting - > font Management步骤2:添加新的字体管理。 (在这里您可以下载所需语言的ttf文件,然后将其粘贴到本地。并在浏览器目录选项中提到了本地路径)。财政年度:请看下面的屏幕。enter image description here

Step3:然后,我们可以在HTML的style属性中使用所需的字体。style="font-family:Kruti Dev 010;"

示例代码:

<cfoutput>
    <div>
        <cfdocument format="PDF" overwrite="Yes" fontembed="true">
            <table border='1px;' style="font-family:Kruti Dev 010;">
                <tr>
                    <td>Name</td>
                    <td>Age</td>
                    <td id='test'>  Request ID  </td>
                </tr>
                <tr>
                    <td id='testVal'>Kannan</td>
                    <td>29</td>
                    <td>108</td>
                </tr>
            </table>
            <p style="font-family:verdana;">This is a heading</p>
            <p style="font-family:courier;">This is a paragraph.</p>

             <p style="font-family:Kruti Dev 010;">This is a paragraph.</p>
        </cfdocument>
    </div>
</cfoutput>

使用cfdocument在PDF中输出样本:

enter image description here

我希望这会有所帮助。谢谢 !

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.