在CrystalReports中水平缩小文本

时间:2018-10-10 15:46:41

标签: fonts crystal-reports fontforge

我有以下问题。 我正在 CrystalReports 中重新创建A3大小的标签,并且有一个文本字段必须为Arial 115,粗体,通常宽度为0.5。

一个人可以使用<p style="font-family: 'Arial'; font-weight:bold; font-size: 115px;transform:scaleX(0.5);">SOME LONGER TEXT (scaled down)</p> <p style="font-family: 'Arial'; font-weight:bold; font-size: 115px;">SOME LONGER TEXT (no scaling)</p>在HTML中完成此操作。

transform

尽管CrystalReports对HTML有所了解,但它不支持productFlavors { free{ } pro{ applicationIdSuffix ".pro" } }

所以我问是否有办法。 该报告是.net程序的一部分,可能对此有一些API函数吗?

我考虑过要生成和安装所需的缩小字体(共有6种),但我不知道怎么做。

更新我已经在下面发布了我的解决方案。

3 个答案:

答案 0 :(得分:0)

我建议使用HTML作为中介,因为它有点复杂,所以我尚未对其进行测试,因此可能需要一些调试才能开始工作。

首先将一个cssClass值添加到Crystal文档中的文本对象(在属性中)。像shrinkobject之类的东西。

接下来将水晶报表导出为html文本。

然后使用样式标签注入html文本,例如:

html = html.Replace("<HTML>", "<HTML><style>p.shrinkObject {transform:scaleX(0.5);}</style>");

然后该html应该应用CSS值,并可以呈现给打印机。

答案 1 :(得分:0)

您可以使用UFL(用户功能库)来计算适合给定边界区域内的文本的最大字体大小。创建您自己的列表或查看第三方UFL的here的列表。

这是我的UFL中的description of GetFontSizeToFitText()函数。

答案 2 :(得分:0)

我最终要做的事情:

  1. 获取字体文件(以我为例:C:\ Windows \ Fonts \ arialbd.ttf);
  2. FontForge中打开它(“关于”表示它是2017年7月31日的版本);
  3. 更改其名称(元素-字体信息-PS名称)。我最后得到了字体名称:ArialShrunk-050-BoldMT,家族名称:Arial Shrunk 050,人类名称:Arial Shrunk 050 Bold;当被问及更改唯一ID时,请按“更改”;
  4. 更改或删除翻译后的字体名称(元素-字体信息-TTF名称),否则将不会安装(因为Windows由于某种原因检查了本地化的字体名称)。我删除了所有不是“英语(美国)”的行。
  5. 另存为.sfd;
  6. 编辑-选择-值得输出的字形;
  7. 元素-变换-变换;
  8. 来源设置为Glyph Origin;对Scale执行的第一个操作,对50进行 X 的操作(在100保留 Y ); 转换所有图层也转换转换图层舍入为整数也变换宽度也变换变换字距类变换简单定位特征和间距对set up FontForge "Transform"-window
  9. 按OK并稍等;
  10. 文件-生成字体,确保选择TrueType,取消选中Validate Before Saving(单击保存);按生成,然后在“查找可能太大”中按确定-警告;
  11. 找到新生成的ArialShrunk-050-BoldMT.ttf文件,双击它,然后按 Install 安装字体。

现在有一种新的系统范围字体Arial Shrunk 050供我使用,尤其是在CrystalReports中。

这不是很理想,但是由于我不需要生成太多缩放比例变化,因此可以使用。