0

我正在研究一些遗留代码和系统,并试图让文本自动调整大小。然而,尽管代码运行良好。这也将实际的单个单词包装成两个单词。

例如质量

变成

在此处输入图像描述

有谁知道如何保持自动换行,但删除字母换行。

谢谢

编码:

truncated = 1
fontSize = 127
thewords = Request("words")   ' try QUALITY    

do while Cint(truncated) = 1

set theDoc = Server.CreateObject("ABCpdf7.Doc") 
fontSize = fontSize - 2

if fontSize <= 0 Then
   exit do
end if

theDoc.Rect.Width = 273
theDoc.Rect.Height = 202
theDoc.Color.Alpha = 0
theDoc.FillRect()
theDoc.Color.Alpha = 255 
theDoc.FrameRect()
theFont1 = "C:\inetpub\wwwroot\fonts\fonts\Helvetica.ttf"
theDoc.Font = theDoc.EmbedFont(theFont1, Latin, False, False, True)
theDoc.Fontsize = fontsize
theDoc.VPos = 0.5
theDoc.color = "75 68 67 90"
oText = theDoc.AddTEXT(thewords)
truncated = theDoc.GetInfo(oText, "Truncated")
'Response.Write(truncated & "<br>")

Loop      
Data = theDoc.Rendering.GetData("testing.png")
Response.ContentType = "image/png"
Response.BinaryWrite Data

我知道这是旧代码,甚至是旧版本,但这是系统运行的。如果有人有线索,那将不胜感激。

谢谢

4

1 回答 1

2

abcPDF 仅在以下情况下将换行:

  1. 包装开启
  2. 没有足够的水平空间来容纳正在设置的单词之一
  3. 活动矩形中有另一条线的垂直空间

因此,这些条件相当于有足够的垂直空间,但没有足够的水平空间来容纳一些特别长的单词。因此,找到正确字体大小的启发式方法是首先水平测试,仅使用字符串中最长的单词,在一个临时矩形中,当您减小字体大小时,该矩形会缩小到比字体大小大一圈;然后,一旦你有正确的字体大小来避免字母换行,回到使用原始 rect 和完整字符串进行测试,继续减小字体大小直到截断完全消失。

如果您要设置的实际上是具有不同字体或大小的 HTML,这将变得更加棘手;但是对于单一字体和样式的纯文本,应该没问题。

于 2013-05-17T14:37:41.097 回答