abcpdf7 vb6是字母包装,而不是自动换行

时间:2013-05-15 16:30:25

标签: asp-classic abcpdf

我正在研究一些遗留代码和系统,并尝试自动调整文本的工作状态。 尽管代码工作得很好。这也将实际的单个单词包含在两个单词中。

例如QUALITY

变为

enter image description here

有没有人知道如何保持包装,但删除信件包装。

感谢

代码:

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

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

感谢

1 个答案:

答案 0 :(得分:2)

abcPDF只会在以下情况下换行:

  1. 包装在
  2. 没有足够的水平空间来容纳正在设置的单词
  3. 活动矩形中有另一条线的垂直空间
  4. 因此,这些条件相当于有足够的垂直空间但没有足够的水平空间用于某些特别长的单词。因此,找到正确字体大小的启发式方法是首先水平测试,只使用字符串中最长的单词,在缩小字体大小时缩小到字体大小以上的临时矩形;然后,一旦你有正确的字体大小以避免字母换行,回到测试与原始的矩形和完整的字符串,继续减少字体大小,直到截断完全消失。

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