Я написал следующий код для генерации PDF:Как сломать PDF Страница в itextsharp PDF
path = Server.MapPath("PDF-Files")
filename = path + "/mydata.pdf"
document = New iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 5.0F, 5.0F, 5.0F, 5.0F)
Dim bfTimes As BaseFont
Dim times As iTextSharp.text.Font
bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, False)
times = New iTextSharp.text.Font(bfTimes, 8, iTextSharp.text.Font.NORMAL)
Dim writer As PdfWriter
writer = PdfWriter.GetInstance(document, New FileStream(filename, FileMode.Create))
Dim ev As New itsEvents
writer.PageEvent = ev
If document.IsOpen Then
document.Close()
End If
document.Open()
Dim spacing As Integer
spacing = 0
Dim curY, lineHeight As Double
curY = document.Top
lineHeight = 0
Const maxPerLine As Integer = 3
For k As Integer = 0 To ds.Tables(0).Rows.Count - 1
Dim table As PdfPTable
table = New PdfPTable(3)
table.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER
table.TotalWidth = 200.0F
table.LockedWidth = True
Dim cell As PdfPCell
cell = New PdfPCell()
cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("id").ToString(), times))
cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("name").ToString() + " " + dsLabelTemp.Tables(0).Rows(k)("city").ToString() + "(" + dsLabelTemp.Tables(0).Rows(k)("post").ToString() + ")", times))
cell.AddElement(New iTextSharp.text.Paragraph(ds.Tables(0).Rows(k)("userpersonal").ToString(), times))
cell.Colspan = 3
cell.HorizontalAlignment = 0
cell.Border = iTextSharp.text.Rectangle.NO_BORDER
cell.Padding = 20.0F
table.AddCell(cell)
table.WriteSelectedRows(0, -1, document.Left + spacing, curY, writer.DirectContent)
spacing = spacing + 200
lineHeight = Math.Max(lineHeight, table.TotalHeight)
If 0 = (k + 1) Mod maxPerLine Then
curY = curY - lineHeight
spacing = 0
lineHeight = 0
End If
Next
document.Close()
ShowPdf(filename)
Когда выше кода выполняются в идеальном порядке и дает выход, но он не показывает, если страница 1 завершена.
В изображении выше вы можете проверить, что он не показывает полные записи.
Я хочу сломать страницу, если страница заполнена или увеличить высоту страницы.
Как перенести данные на вторую страницу, если моя первая страница заполнена?
Если вы хотите iTextSharp распространять таблицу по разным страницам, то почему вы используете 'WriteSelectedRows()'? Почему вы просто не добавляете 'table' в' document'? Где вы узнали, как написать iTextSharp-код? Можете ли вы уволить своего учителя или выбросить книгу, которую вы читали? –
Потому что мне нужно написать 3 таблицы в 1 строке, а затем перерыв на новую строку и после закрытия первой страницы, затем нужно перенаправить на 2-ю страницу. – deepak
Этот комментарий не является ответом на мой вопрос. То, что вы говорите, не имеет смысла, и вы доказываете это своим ответом: 'document.Add (table)' был именно тем, что вам нужно. –