2

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

注意:我已经查看了CFDocument PDF,它没有显示日语数据,但在印地语中对我没有帮助。

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

如预期的那样正确显示,如下图所示。

在此处输入图像描述

但是,当我在不支持的 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>

在此处输入图像描述

注意:我试过以下所有类型但没有运气,我试过了cfprocessingdirectivecfsetting SetLocale() meta tags cfsavecontents

如果有任何建议,请告诉我。提前致谢 !

4

2 回答 2

1

在从 CF10 + Windows 服务器迁移到我们需要的所有语言都有开箱即用的工作字体之后,我花了很多时间来完成这个,迁移到 Linux + Docker 上的 CF2016,其中有中文、日文、韩文和其他 - 我不记得是否我们测试了印地语 - 都坏了。

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

  1. 确保合适的字体在 CF 可以访问并期望找到它们的路径中可用 - 使用 CF Admin -> Fonts 确认这一点
  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 中明确声明,cfdocument 将能够呈现每种字体。但是,当您需要支持多种语言并且事先不知道哪种语言适用于特定元素,和/或在一个元素中混合使用多种语言时,这并不理想。

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

不幸的是,这是正确处理的棘手部分,因为它因 Java 版本和平台而异,而且似乎没有很好的文档记录。在过去的日子里,Sun 和操作系统供应商非常擅长为我们维护一个体面的基本配置。这些天来,它似乎是事后才想到的,尤其是在许多 Linux 版本上。

此链接提供了一个字体配置如何在某些环境中工作的示例:https : //docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html 不过,您可能会使用不同的方法。如果您搜索,java [your java platform version] font properties config [your OS]那么您应该最终走上正确的道路。

于 2019-11-19T15:59:24.533 回答
1

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

第 1 步: Coldfusion admin - > setting - > font Management
第 2 步:添加新的字体管理。(在这里您可以下载所需语言的 ttf 文件,然后将其粘贴到本地。并在浏览器目录选项中提及您的本地路径)。FYR:请看我下面的屏幕。 在此处输入图像描述

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 格式输出示例:

在此处输入图像描述

我希望这对某人有所帮助。谢谢 !

于 2019-11-21T11:50:50.357 回答