我正在使用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")
答案 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
添加额外的空白页面。