无法根据模板itextsharp中PDF生成的内容创建下一页

时间:2019-04-05 05:04:20

标签: itext

我正在使用itextsharp创建PDF。但是,当我的内容超过1页时,它不会创建文本并将其附加到下一页。下面是我的源代码。无法确定这有什么问题。请指导。

    Dim pdfTemplate As String = "C:\Program Files\mycrm\Documents\Client\Statement_.pdf"
    Dim newFile As String = "D:\test.pdf"

    Dim pdfReader As New PdfReader(pdfTemplate)
    Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create))

    Dim pdfFormFields As AcroFields = pdfStamper.AcroFields
    pdfFormFields.SetField("[CLIENT NAME]", "siddhesh")

    'For adding table
    Dim PdfTable As New PdfPTable(2)
    Dim PdfPCell As PdfPCell = Nothing

    For column As Integer = 0 To 1
        PdfPCell = New PdfPCell(New Phrase(New Chunk(column.ToString())))
        PdfTable.AddCell(PdfPCell)
    Next

    For rows As Integer = 0 To 100
        For column As Integer = 0 To 1
            PdfPCell = New PdfPCell(New Phrase(New Chunk(rows.ToString() + column.ToString())))
            PdfTable.AddCell(PdfPCell)
        Next
    Next
    PdfTable.HeaderRows = 1
    pdfStamper.FormFlattening = True

    PdfTable.SetTotalWidth(New Single() {
 (iTextSharp.text.PageSize.A4.Rotate().Height - 25) / 10,
 (iTextSharp.text.PageSize.A4.Rotate().Height - 25) / 10

})

    PdfTable.WriteSelectedRows(0, 50, 35, 460, pdfStamper.GetOverContent(1)) 'X Y départ en bas à gauche? plus yPos est au plus le texte est haut

    PdfTable.CompleteRow()

    pdfStamper.Close()
    MsgBox("Exported")

1 个答案:

答案 0 :(得分:0)

PdfTable.WriteSelectedRows记录为

/**
* Writes the selected rows to the document.
* 
* @param rowStart   the first row to be written, zero index
* @param rowEnd     the last row to be written + 1. If it is -1 all the
*                   rows to the end are written
* @param xPos       the x write coodinate
* @param yPos       the y write coodinate
* @param canvas     the <CODE>PdfContentByte</CODE> where the rows will
*                   be written to
* @return the y coordinate position of the bottom of the last row
*/
virtual public float WriteSelectedRows(int rowStart, int rowEnd, float xPos, float yPos, PdfContentByte canvas) 

您使用

PdfTable.WriteSelectedRows(0, 50, 35, 460, pdfStamper.GetOverContent(1)) 'X Y départ en bas à gauche? plus yPos est au plus le texte est haut

因此,您仅在第1页上明确地绘制了表格的前50行,而完全忽略了其余行。

因此,您的观察

  

当我的内容超过1页时,它不会创建文本并将其附加到下一页。

正是预期的结果。

要绘制所有行,可以迭代并在第2页上绘制50..99行,在第3页上绘制100..149行,依此类推。PdfPTable的属性Size返回表中的行;您可以使用它来确定循环的频率。

如果您加载到PdfReader中的文档没有足够的页面,则可以使用PdfStamper.InsertPage添加额外的空白页面。