我正在创建一个标签,其左侧有一个地址,右侧有另一个地址。我只想在中间创建一条线来将它们分开。因此该线需要一直延伸到标签的长度(从 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中进行了解释。 。此链接向您显示 Java 中的示例,但如果向下滚动,您将找到指向 .cs
文件的链接。
如果您有一个 PdfContentByte
对象 cb
,您可以像这样画一条线:
cb.MoveTo(x1, y1);
cb.LineTo(x2, y2);
cb.Stroke();
x1
、y1
和 x2
、y2
的值取决于您用于绘制的坐标你的文字。在您的情况下,您开始在坐标 x = 270, y = 260
处写入文本。我将 x1
定义为 270
,将 y1
定义为 260 - bf.GetWidthPoint(Company.Current.Address1)
。
请注意,这个参数是错误的:int.Parse("50")
。 showTextAligned()
方法的第一个参数应该是有效的对齐方式。 50
不是有效的对齐值。您应该将其替换为 Element.ALIGN_LEFT
、Element.ALIGN_RIGHT
或 Element.ALIGN_CENTER
。显然,如果更改文本的对齐方式,则必须更改 y
的值。
关于pdf - 如何在iTextSharp中绘制水平线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387918/