【问题标题】:Builder c++ Rave Reports encoding problem with cyrillicBuilder c++ Rave 报告西里尔文的编码问题
【发布时间】:2011-07-29 18:43:16
【问题描述】:

当我尝试将 rave 项目保存在 pdf\html 文件中时,编码不正确。 选择格式并按保存时,它可以在ISO-8859-1代码中保存。 但我需要cp1251(西里尔文)。

例如“Ïëîùàäü”而不是“Площадь”。

【问题讨论】:

    标签: c++ character-encoding internationalization rave-reports cp1251


    【解决方案1】:

    当我想将 reprt 保存为 pdf 格式时,我遇到了同样的问题。我必须创建 TRvRenderPDF 并将其设置为 RenderObject 但未正确查看 pdf 文件。

    1. TRvRenderPDF 组件不兼容 unicode(这非常糟糕),这就是为什么报告中的所有文本都转换为具有活动代码页的 Ansi(对于西里尔文,它是 CP1251)。现在我们有了 CP1251 编码的 pdf 文件。
    2. 默认 TRvRenderPDF 使用字体 TYPE1 Helvetica 生成 pdf(按照 pdf 格式的标准,它是内置的)。但是文本是用编码 ISO 8859-1(或 CP1252)解释的,但它的编码是 CP1251,这就是为什么我们有“Ïëîùàäü”或类似的东西。

    我们能做什么:

    1. 获取字体 TYPE1(CP1252),其中服务符号(CP1251 中的西里尔字母中的数字)替换为西里尔字形。例如a link,我们需要安装它。
    2. 现在我们需要将生成的 pdf 文档中的旧字体名称 (Helvetica) 替换为新字体名称 (AGHelvetica)。您可以使用文本编辑器或您的程序(读取文件 -> 查找 -> 替换 -> 保存文件)。

    所有情况。

    附:对不起我的英语。

    P.P.S.如果设置 pdf 渲染 EmbedBaseFonts 的属性 = true,则 pdf 文档使用 TrueType 字体保存,但问题仍然存在。新看 unicode 渲染?但不是这个。

    【讨论】:

      【解决方案2】:

      我猜想解决您的问题的最佳方法是使用 Unicode,而不是 CP1251 之类的代码页。是否可以在 Rave Reports 中使用 Unicode?​​p>

      【讨论】:

        猜你喜欢
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 2023-03-25
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多