我在Crystal Reports Cutting Off Text in PDF上发现了这个帖子,但它没有解决我的问题。
我有一个Crystal Report,它包含文本对象中的一个字段(用于控制行间距)并选择了“可以增长”。当我将Crystal Report导出为PDF时,会出现文本被截断的情况。
在此示例中,文本在右侧被截断,但在某些情况下,当文本由多行组成时,最后一行的底部将被部分切除。
我正在使用与Visual Studio 2008捆绑在一起的Crystal Reports。文本区域已经“can grow”检查,字体设置为Helvetica LT Condensed,粗体14,行间距设置为正常的0.75倍。
任何人都有任何想法如何解决这个问题?
答案 0 :(得分:5)
我也遇到过这种情况 - Crystal似乎对文本框边框的位置感到困惑。我建议在文本框中添加一个小的右缩进(右键单击文本框,选择'格式对象',选择'段落'选项卡,然后在右侧文本框中输入小数字(可能是.2左右)。应该有助于获得合适的保证金。
至于底部截止,没有可以添加的边距。您可以在文本末尾添加换行符,因为它来自数据库吗?或者,您可以尝试使用公式字段添加换行符:
{table_name.field_name} + chr(13) + chr(10)
答案 1 :(得分:2)
我想我已经发现了问题。边界子报告宽度小于字段对象的宽度。调整它的宽度固定了右侧的截断。
另一方面,在底部截断的文本似乎是调整行间距太小的结果。如果将行间距设置为原始文本点大小的倍数并使其太小,则该行的底部将被截断。我将其更改为“精确”并输入特定的点大小(例如,对于我的16磅文本,行间距为18磅),这似乎解决了这个问题。如果行间距太小,那么Crystal似乎会掩盖文本的底部。
答案 2 :(得分:2)
使用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个不同的方面进行攻击:
软件热修复:您需要下载包含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(我不知道为什么这样做)那)...信不信由你我只是从我的“旧”数据集中复制了查询,创建了一个新的数据集,瞧!它像魅力一样工作......