【问题标题】:How to add a blank page to a pdf using iTextSharp?如何使用 iTextSharp 在 pdf 中添加空白页?
【发布时间】:2011-01-31 11:48:16
【问题描述】:

我正在尝试做一些我认为很简单的事情,但它并不是那么简单,而且谷歌也没有提供帮助。

我正在使用 iTextSharp 将 PDF 文档(字母)合并在一起,以便一次打印它们。如果一个字母的页数是奇数,我需要附加一个空白页,这样我们就可以双面打印这些字母。

这是我目前用于合并所有字母的基本代码:

// initiaise
 MemoryStream pdfStreamOut = new MemoryStream();
    Document document = null;
    MemoryStream pdfStreamIn = null;
    PdfReader reader = null;
    int numPages = 0;
    PdfWriter writer = null;


for int(i = 0;i < letterList.Count; i++)
{
    byte[] myLetterData = ...;
    pdfStreamIn = new MemoryStream(myLetterData);
    reader = new PdfReader(pdfStreamIn);
    numPages = reader.NumberOfPages;

    // open the streams to use for the iteration
    if (i == 0)
    {
        document = new Document(reader.GetPageSizeWithRotation(1));
        writer = PdfWriter.GetInstance(document, pdfStreamOut);
        document.Open();
    }

    PdfContentByte cb = writer.DirectContent;
    PdfImportedPage page;

    int importedPageNumber = 0;
    while (importedPageNumber < numPages)
    {
        importedPageNumber++;
        document.SetPageSize(reader.GetPageSizeWithRotation(importedPageNumber));
        document.NewPage();
        page = writer.GetImportedPage(reader, importedPageNumber);
        cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
    }
}

我尝试过使用:

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

在 for 循环结束时有奇数页没有成功。

【问题讨论】:

    标签: c# pdf itextsharp


    【解决方案1】:

    嗯,我快到了。该文档实际上不会创建页面,直到您在其上放置一些东西,所以只要我添加了一个空表,bam!成功了!

    如果我要合并的文档的页数为奇数,下面是添加空白页的代码:

    if (numPages > 0 && numPages % 2 == 1)
    {
        bool result = document.NewPage();
        document.Add(new Table(1));
    }
    

    如果这在较新的版本中不起作用,请尝试以下方法:

    document.Add(new Chunk());
    

    【讨论】:

    • 添加表格对我不起作用。可能是由于 ITextSharp 的更新版本。 Add(new Chunk()); 为我工作。
    • 我可以确认,对于较新的版本,您应该添加 Chunk 而不是表格。完美运行!
    【解决方案2】:

    另一种成功的替代方法。

    if (numPaginas % 2 != 0)
                {
                    documentoPdfUnico.SetPageSize(leitorPdf.GetPageSizeWithRotation(1));
                    documentoPdfUnico.NewPage();
                    conteudoPdf.AddTemplate(PdfTemplate.CreateTemplate(escritorPdf, 2480, 3508), 1f, 0, 0, 1f, 0, 0);
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2016-05-28
      • 2015-09-15
      • 1970-01-01
      • 2012-05-17
      • 2013-09-30
      相关资源
      最近更新 更多