12

我在Crystal Reports Cut Off Text in PDF上找到了这篇文章,但它并没有解决我的问题。

我有一个水晶报表,其中包含文本对象中的一个字段(用于控制行距)并选择了“可以增长”。当我将 Crystal Report 导出为 PDF 时,会出现文本被截断的情况。

在此处输入图像描述

在此示例中,文本在右侧被截断,但在某些情况下,当文本由多行组成时,最后一行的底部将被部分截断。

我正在使用与 Visual Studio 2008 捆绑在一起的 Crystal Reports。文本区域已选中“可以增长”,字体设置为 Helvetica LT Condensed,粗体 14,行距设置为正常的 0.75 倍。

有人对我该如何解决这个问题有任何想法吗?

4

10 回答 10

7

我也遇到过这个问题——Crystal 似乎对文本框边框的位置有点困惑。我建议在文本框中添加一个小的右缩进(右键单击文本框,选择“格式化对象”,选择“段落”选项卡,然后在右文本框中输入小数字(可能是 0.2 左右)。这个应该有助于右边距。

至于底部截止,您没有可以添加的边距。你可以在文本的末尾添加一个换行符,因为它来自数据库?或者,您可以尝试使用公式字段来添加换行符:

{table_name.field_name} + chr(13) + chr(10)
于 2010-03-05T22:46:07.980 回答
2

我想我已经发现了问题所在。边界子报表宽度小于字段对象的宽度。调整它的宽度修复了右侧发生的截断。

附带说明一下,底部截断的文本似乎是由于将行距调整得太小所致。如果将行距设置为原始文本点大小的倍数并使其太小,则行的底部将被截断。我将其更改为“精确”并输入了特定的磅值(例如,我的 16 磅文本的行距为 18 磅),这似乎解决了问题。如果行距太小,Crystal 会掩盖文本的底部。

于 2010-03-12T20:29:38.143 回答
2
  • 右键单击文本字段
  • 选择常用选项卡
  • 在“水平对齐”部分,我将其更改为“对齐”。

这将文本调整为正确跨越,并且在使用 Can Grow 时不会过早切断。

于 2010-08-05T21:40:05.063 回答
0

我试过了,它解决了这个问题。

尝试执行以下操作:

文本对象>右键单击>设置文本格式>边框选项卡

更改线条样式:右/左/上/下为单一并将颜色更改为白色。

于 2012-11-02T12:46:36.923 回答
0

我在更新存储过程时遇到了这个问题。我根据请求的更改将我拉到报告中的描述字段从 VARCHAR(100) 更改为 VARCHAR(150)。预览模式下的 Crystal 报表存储了 100 个字符的旧限制,并且正在截断标签。当我再次验证数据库时,这已得到纠正。

数据库选项卡 -> 验证数据库

于 2013-11-05T14:01:34.643 回答
0

我也发现了这一点。只发生在 HTML 视图中。我做了一些事情,我需要在 3 个街区做不同的事情,并尝试了许多场景来选择最好的。- 将文本从左对齐到对齐 - 抓住文本框的右边缘并从右边距将其拉出 - 将字体从 Times New Roman 切换到另一个(奇怪) - 从 BI LP 导出为 CR RPT 和从 CR 2013 客户端导出为 PDF - 更改字体大小 - 我们有一个“和/或”中线并将其更改为“和/或”

我们采用了合理的对齐方式,因为它接近一条完整的线,并且看起来与原始对齐方式没有什么不同。

许多奇怪的解决方法可以纠正它。对我来说,这表明报告中存在系统升级故障。

希望我的发现对其他人有所帮助。

于 2014-08-28T19:06:50.310 回答
0

如果您尝试了所有方法但仍然无法正常工作,您可以尝试以下方法:

     Local StringVar inString := 'Your text string here.......';

     Local NumberVar strLen := Length (inString);
     Local StringVar result := "";
     Local NumberVar maxLen := 45;    // adjust the length of text per line
     Local NumberVar idx := 0;
     Local NumberVar proceed := 0;

     While strLen > maxLen Do
     (
      proceed := 1;
      idx := maxLen;
      While (mid(inString,idx,1) <> " "  and idx > 1) Do
      (
       idx := idx -1;
       );
      if (idx = 1) then 
             result := result + mid(inString,1,maxlen) + chr(10)
      else
         (
             result := result + mid(inString, 1, idx-1)+ chr(10);
             strLen := strLen-idx;
             inString := mid(inString, idx+1, strLen)
         )
      );

     if proceed = 1 then
      (
        result := result + inString
       )
      else
       (
       result := inString
     );
  result
于 2015-12-11T16:53:48.537 回答
0

在使用 Crystal Reports 的一个环境中,设置注册表项对我们很有帮助:ForceLargerFonts = 0

怎么找?

对于 64 位版本的 MS Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\Export\PDF

对于 32 位版本的 MS Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\Export\PDF

另请参阅 https://apps.support.sap.com/sap/support/knowledge/public/en/0001835763上的以下解决方案

于 2017-10-04T13:38:30.067 回答
0

这是一个难题,您必须从 3 个不同的方面进行攻击:

  1. 软件热修复
  2. 默认打印机
  3. 表单创作

软件热修复: 您需要下载包含热修复 20 的 CRRuntime。此热修复解决了制作 PDF 时的截断问题。您可以在http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_64bit_13_0_20.msi找到它

默认打印机: 您在创作报表时使用的打印机必须与您呈现报表的打印机相匹配。在我们的服务器上,除了 Microsoft XPS Document Writer 之外,没有安装任何打印机。确保在编写报告时选择它作为默认打印机。

表单创作:将数据库字段添加到报表时,不要将其从字段资源管理器拖到设计图面上。首先在设计图面上插入一个文本对象。当您按照自己喜欢的方式定位和调整文本对象的大小后,将数据库字段拖到文本对象上。您将看到大括号中的数据库项目的名称出现在文本对象中。无论出于何种原因,当数据库字段被文本对象包围时,它的包装会更好。

于 2018-01-11T18:28:02.877 回答
0

这让我整晚都在紧张!!对我有用的是:如果您使用带有数据集的水晶报表(链接到数据集),很可能您更改了数据库中字段的长度。因此,如果长度为 10 并且例如调整为 20,则无论您做什么,报告都会读取字段长度为 10 个字符的“旧”数据集并将其截断为 10(我不知道为什么这样做那)......信不信由你,我只是从我的“旧”数据集中复制了查询,创建了一个新数据集,瞧!它就像魅力一样...

于 2021-05-26T08:18:12.887 回答