如何修改VB中的iTextSharp.text.Rectangle左上角位置?

How to Modify a iTextSharp.text.Rectangle Top left position in VB?

我正在使用 VB 中的 itextsharp dll 生成 PDF。在PDF中,需要在矩形和文本之间增加space。我尝试设置边距并更改矩形坐标,但顶部矩形和文本之间的 space 未创建。请参阅附件。 下面是我用来生成 PDF

的代码
                Dim reader As PdfReader = New PdfReader(tempFile)
                Dim size As Rectangle = reader.GetPageSize(1)
                Dim AcroAVDoc As Document = New Document(iTextSharp.text.PageSize.A4.Rotate())
                AcroAVDoc.SetMargins(0, 0, 0, 0)
                Dim FS As FileStream = New FileStream(newFile, FileMode.Create, FileAccess.Write)
                Dim writer As PdfWriter = PdfWriter.GetInstance(AcroAVDoc, FS)
                AcroAVDoc.Open()
                If (SaveDoc) Then
                   
                    Dim cb As PdfContentByte = writer.DirectContent

                    Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
                    cb.SetColorFill(BaseColor.BLACK)
                    cb.SetFontAndSize(bf, 11)

                    cb.BeginText()
                    Dim text As String = "HeaderText  " + TableData(HeaderText)
                    ''put the alignment And coordinates here
                    cb.SetTextMatrix(240, 583)
                    cb.ShowText(text)
                    cb.EndText()

                    ''create the New page And add it to the pdf
                    Dim Page As PdfImportedPage = writer.GetImportedPage(reader, 1)
                    Dim psize As Rectangle = reader.GetPageSizeWithRotation(1)

                    cb.AddTemplate(Page, 0, -1.0F, 1.0F, 0, 0, psize.Height)

                    'AcroAVDoc.Save(1, newFile)
                End If
                AcroAVDoc.Close()
                FS.Close()
                writer.Close()
                reader.Close()

您的代码的作用(如果 SaveDoctrue)是

  • 正在 newFile 中创建横向 A4 页面大小的新 PDF 文件,
  • 在其第一页绘制字符串 text,并且
  • 在同一首页上绘制 tempFile 中 PDF 第一页的旋转静态内容。

因此,要修改文本相对于从其他文件复制的内容的位置,您必须将绘制文本的位置调整为 and/or 绘制导入内容的位置。

您通过设置文本矩阵(仅平移坐标)来设置您绘制的文本的位置:

cb.SetTextMatrix(240, 583)

您通过设置变换矩阵(全矩阵)来设置您绘制的导入页面内容的位置:

cb.AddTemplate(Page, 0, -1.0F, 1.0F, 0, 0, psize.Height)

第二个到第五个参数(0, -1.0F, 1.0F, 0)定义绕左下角顺时针旋转90°,第六个和第七个参数(0, psize.Height)定义向上平移。由于围绕左下角的旋转会将内容旋转出可见页面区域,因此需要向上平移才能将其移回视图中。

要调整文本相对于导入页面的位置,只需尝试稍微更改文本的 240, 583 and/or 和导入页面的 0, psize.Height (例如正负 10) 直到符合您的期望。