如何在iTextSharp中绘制水平线?

时间:2016-05-23 09:56:43

标签: pdf itextsharp

我正在创建一个标签,左侧有地址,右侧有另一个地址。我只是想在中间创建一条线来分隔它们。因此,该行需要一直到标签的长度(从270到0)

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

所以例如显示我使用的地址:

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

标签处于横向状态,因此旋转设置为270

1 个答案:

答案 0 :(得分:3)

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

您正在使用低级方法(使用showTextAligned()),因此您必须使用路径构造和路径绘制运算符和操作数。所有这些运算符和操作数都在chapter 14 of my book中解释。此链接向您显示Java中的示例,但如果向下滚动,您将找到.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的值。