Невозможно создать следующие страницы на основе содержимого в генерации PDF из шаблона itextsharp - PullRequest
0 голосов
/ 05 апреля 2019

Я использую 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 голосов
/ 18 июня 2019

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

Таким образом, вы явно рисуете только первые 50 строк таблицы над страницей 1 и полностью игнорируете остальныестрок.

Таким образом, ваше наблюдение,

, когда мой контент переходит за 1 страницу, не создает и не добавляет текст на следующую страницу.

именно то, что и следовало ожидать.

Чтобы нарисовать все строки, вы можете повторять и рисовать строки 50..99 на странице 2, 100..149 на странице 3 и т. д. PdfPTable имеет свойство Size возвращает количество строк в таблице;Вы можете использовать это, чтобы определить, как часто вы должны выполнять цикл.

Если в документе, загруженном в PdfReader, недостаточно страниц, вы можете добавить дополнительные пустые страницы, используя PdfStamper.InsertPage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...