3

我希望在将一段文本绘制在页面上并检查其 y 位置之前,判断它是否适合页面底部。

有谁知道ABCPDF是否可以做到这一点?

4

4 回答 4

2

根据我的经验,处理这个问题的最好方法是不要担心它是否适合通过尝试测量。

  1. 将您正在写入的矩形设置为从当前位置一直延伸到媒体框的底部。
  2. 将文本写入矩形,然后检查文本是否被截断。如果它被截断,则删除您刚刚编写的对象。如果没有,那么一切都很好,你可以找到你写的文本的范围。
  3. 如果不合适,移动到/创建下一页,将矩形设置为整页并重新尝试文本写入。
  4. 如果被截断,那么你就有问题了,因为如果不减小字体大小、行距或其他东西,你的文本将永远不会适合单个页面。

这不是不可克服的,因为您可以跨页面链接文本,但这是一个不同的问题。

于 2011-12-01T17:03:12.970 回答
2

据我记得,当我做 PDF 的时候(比如...... 6-7 年前使用 ABCPDF),我们使用了 Graphics.MeasureString 方法的分配时间。
你可能想看看MSDN

于 2011-11-04T21:25:43.937 回答
0

是的,ABCPDF 会告诉你这个信息:如果文本不能添加到当前矩形,yourPdfDocInstance.AddHtml() 将返回 0(并且不添加任何文本)

于 2011-12-16T15:55:30.580 回答
0

如果 graphics.Measurestring 对您不起作用,另一个选项是从字面上测量某些字体的大小,以便您知道一行中有多少个字母,然后可以计算出在给定矩形中将有多少行并调整大小相应地使用 yVal = lineCount * 5 之类的矩形。

如果我没记错的话,由于某种原因,我无法使用 measurestring 函数,因此不得不以尴尬的方式进行操作,但在我有多个不同大小的盒子的情况下,它确实工作得很好。

于 2011-11-23T09:55:40.150 回答