在第一个文本下面绘制第二个文本

时间:2016-09-30 00:20:10

标签: vb.net itext

我想在我的PDF上绘制2个文本。 第一个文本应与左上角对齐。 这很好。

我正在使用:

canvas = stamper.GetOverContent(i)
watermarkFont = iTextSharp.text.pdf.BaseFont.CreateFont(iTextSharp.text.pdf.BaseFont.HELVETICA, iTextSharp.text.pdf.BaseFont.CP1252, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
watermarkFontColor = iTextSharp.text.BaseColor.RED

canvas.MoveTo(0, 0) 'I think the canvas is the space that we draw onto. My documents always start at position X=0 and Y=0, so move to 0,0 should be fine
canvas.BeginText()
canvas.SetFontAndSize(watermarkFont, 12)
canvas.SetColorFill(watermarkFontColor)
canvas.ShowTextAligned(Element.ALIGN_TOP, uText, 0, 830, 0) 'is 830 the width of the available space?
canvas.EndText()

现在我想在第一个文本下面大约100个像素处绘制另一个文本。

我正在使用:

canvas.MoveTo(0, 100) 'let's draw the second text at X=100, Y=100
canvas.BeginText()
canvas.SetFontAndSize(watermarkFont, 12)
canvas.SetColorFill(watermarkFontColor)
canvas.ShowTextAligned(Element.ALIGN_CENTER, uBewirtung, 0, 830, 0)
canvas.EndText()

然而,第二篇文字根本没有显示出来。 我怀疑我在文件外面画画,但我没有看到我的错误。

1 个答案:

答案 0 :(得分:1)

MoveTo()方法用于绘制路径(图形状态下的线和形状),而不是文本(文本状态)。它会向内容流添加m运算符。如果您是PDF专家,则应使用SetTextMatrix() / BT文本块中的ET方法 <{3}}

注意 if ;这很重要。如果您不是PDF专家,那么您就不应该使用这些方法。您应该使用ColumnText.ShowTextAligned()代替BeginText()EndText()以及您在中间添加的所有行。这些方法适用于使用PDF语法的人。