iTextSharp:多创建一个页面,复制最后一页

问题描述 投票:0回答:1

我有一个PDF文件,每页上都有页眉,页脚等。如果文本很长(我有可变文本),则需要扩展页面数。例如:

        if (countOfRecords > 120)
        {
            // add one more page like second page of template (which does not have content, only header/footer
        }

有可能吗?

c# itext
1个回答
1
投票

我通过以下方式实现它:用“空”页面创建PDF文件(仅具有必要的页眉/页脚),然后根据需要将其添加到主PDF中多少次:

        PdfReader pdfReader = new PdfReader(model.Input);
        Document document = new Document(pdfReader.GetPageSizeWithRotation(1));

        using (MemoryStream ms = new MemoryStream())
        {
            PdfWriter writer = PdfWriter.GetInstance(document, ms);
            document.Open();

            PdfContentByte cb = writer.DirectContent;

            PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
            cb.AddTemplate(page, 0, 0);

            int countOfPages = (int)Math.Ceiling(Convert.ToDecimal(model.ActiveDriverList.Count - countDriversOnFirstPage) / countDriversOnEmptyPage);


            for (int i = 0; i < countOfPages; i++)
            {
                PdfReader readerPage = new PdfReader(model.EmptyPage);
                readerPage.ConsolidateNamedDestinations();

                document.SetPageSize(pdfReader.GetPageSizeWithRotation(1));
                document.NewPage();

                PdfImportedPage importedPage = writer.GetImportedPage(readerPage, 1);
                cb = AddTextDriversNextPage(cb, model.ActiveDriverList, i + 1);
                cb.AddTemplate(importedPage, 0, 0);
            }

            document.Close();
            writer.Close();
            return ms.ToArray();
        }
© www.soinside.com 2019 - 2024. All rights reserved.