如何在 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();
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
的值。
我正在创建一个标签,其左侧有一个地址,右侧有另一个地址。我只想创建一条从中间向下的线将它们分开。所以这条线需要一直延伸到标签的长度(从 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();
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
的值。