Crystal Reports切断PDF格式的文本

时间:2010-03-05 22:30:13

标签: pdf text crystal-reports crystal-reports-2008 crystal-reports-10

我在Crystal Reports Cutting Off Text in PDF上发现了这个帖子,但它没有解决我的问题。

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

enter image description here

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

我正在使用与Visual Studio 2008捆绑在一起的Crystal Reports。文本区域已经“can grow”检查,字体设置为Helvetica LT Condensed,粗体14,行间距设置为正常的0.75倍。

任何人都有任何想法如何解决这个问题?

10 个答案:

答案 0 :(得分:5)

我也遇到过这种情况 - Crystal似乎对文本框边框的位置感到困惑。我建议在文本框中添加一个小的右缩进(右键单击文本框,选择'格式对象',选择'段落'选项卡,然后在右侧文本框中输入小数字(可能是.2左右)。应该有助于获得合适的保证金。

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

{table_name.field_name} + chr(13) + chr(10)

答案 1 :(得分:2)

我想我已经发现了问题。边界子报告宽度小于字段对象的宽度。调整它的宽度固定了右侧的截断。

另一方面,在底部截断的文本似乎是调整行间距太小的结果。如果将行间距设置为原始文本点大小的倍数并使其太小,则该行的底部将被截断。我将其更改为“精确”并输入特定的点大小(例如,对于我的16磅文本,行间距为18磅),这似乎解决了这个问题。如果行间距太小,那么Crystal似乎会掩盖文本的底部。

答案 2 :(得分:2)

  • 右键单击文本字段
  • 选择常用标签
  • 在水平对齐部分,我将其更改为“Justified”。

使用Can Grow时,这会将文本调整到适当的范围而不会过早地切断。

答案 3 :(得分:0)

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

尝试执行以下操作:

文字对象>右键单击>格式文字>边框标签

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

答案 4 :(得分:0)

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

数据库标签 - >验证数据库

答案 5 :(得分:0)

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

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

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

希望我发现的能帮助他人。

答案 6 :(得分: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

答案 7 :(得分: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

答案 8 :(得分:0)

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

  1. 软件热修复
  2. 默认打印机
  3. 表格创作
  4. 软件热修复:您需要下载包含Hot Fix 20的CRRuntime。此Hot Fix解决了制作PDF时的截断问题。您可以在http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_64bit_13_0_20.msi

    找到它

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

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

答案 9 :(得分:0)

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