如何在 iTextSharp 中绘制水平线?

How to draw a horizontal line in iTextSharp?

我正在创建一个标签,其左侧有一个地址,右侧有另一个地址。我只想创建一条从中间向下的线将它们分开。所以这条线需要一直延伸到标签的长度(从 270 到 0)

我正在使用 iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent;

例如显示我使用的地址:

cb.ShowTextAligned(int.Parse("50"), Company.Current.Address1, 270, 260, 270);

标签是横向的,因此旋转设置为 270

如果您使用高级方法(使用 document.Add()),则使用 separator 来绘制线条。很奇怪你不使用高级方法。您声称使用 showTextAligned() 是因为您需要横向工作,但如果您需要横向工作,为什么不直接定义横向页面呢?

您正在使用低级方法(使用 showTextAligned()),因此您必须使用路径构建和路径绘制运算符和操作数。 chapter 14 of my book 中解释了所有这些运算符和操作数。此 link 向您展示了 Java 中的示例,但如果向下滚动,您会发现 link 到 .cs 文件。

如果你有一个PdfContentByte对象cb,你可以这样画一条线:

cb.MoveTo(x1, y1);
cb.LineTo(x2, y2);
cb.Stroke();

x1y1x2y2 的值将取决于您用来绘制文本的坐标。在您的例子中,您开始在坐标 x = 270, y = 260 处编写文本。我会将 x1 定义为 270,将 y1 定义为 260 - bf.GetWidthPoint(Company.Current.Address1)

注意这个参数是错误的:int.Parse("50")showTextAligned() 方法的第一个参数应该是一个有效的对齐方式。 50 不是有效的对齐值。您应该将其替换为 Element.ALIGN_LEFTElement.ALIGN_RIGHTElement.ALIGN_CENTER。显然,如果您更改文本的对齐方式,则必须更改 y 的值。