C# 如何使用itextsharp识别pdf文件中的页尾

C# 如何使用itextsharp识别pdf文件中的页尾,c#,pdf,itextsharp,background-image,C#,Pdf,Itextsharp,Background Image,嗨 我正在使用itextsharp生成一个pdf文件。我正在将一个背景图像放在上面,并希望该图像出现在所有页面上。但当第一页完成时,文本会自动移动到下一页,这样图像就不会出现在新页面上 有没有一种方法可以识别页面的结尾,这样我们就可以添加一个新页面,然后先设置图像,使其出现在背景中,然后再添加剩余的文本 我只想在pdf文件的所有页面上都有一个背景图像。只需检查PdfWriter.PageNumber属性,如下所示: using (FileStream fs = File.Crea

嗨 我正在使用itextsharp生成一个pdf文件。我正在将一个背景图像放在上面,并希望该图像出现在所有页面上。但当第一页完成时,文本会自动移动到下一页,这样图像就不会出现在新页面上

有没有一种方法可以识别页面的结尾,这样我们就可以添加一个新页面,然后先设置图像,使其出现在背景中,然后再添加剩余的文本


我只想在pdf文件的所有页面上都有一个背景图像。

只需检查PdfWriter.PageNumber属性,如下所示:

        using (FileStream fs = File.Create("test.pdf"))
        {
            Document document = new Document(PageSize.A4, 72, 72, 72, 72);
            PdfWriter writer = PdfWriter.GetInstance(document, fs);

            document.Open();
            int pageNumber = -1;

            for (int i = 0; i < 20; i++)
            {
                if (pageNumber != writer.PageNumber)
                {
                    // Add image
                    pageNumber = writer.PageNumber;
                }

                // Add something else
            }

            document.Close();
        }
使用(FileStream fs=File.Create(“test.pdf”))
{
文档=新文档(PageSize.A4、72、72、72、72);
PdfWriter writer=PdfWriter.GetInstance(文档,fs);
document.Open();
int pageNumber=-1;
对于(int i=0;i<20;i++)
{
if(页码!=writer.pageNumber)
{
//添加图像
pageNumber=writer.pageNumber;
}
//添加其他内容
}
document.Close();
}

我建议您使用页面事件:

myWriter.setPageEvent(new BackgroundPageEvent(backgroundImage));

class BackgroundPageEvent extends PdfPageEventHelper {
  Image backgroundImage = null;
  public BackgroundPageEvent( Image img ) {
    backgroundImage = img;
  }
  public void onStartPage(PdfWriter writer, Document doc) {
    PdfContentByte underContent = writer.getDirectContentUnder();
    underContent.addImage(backgroundImage);
  }
}
使用上述代码,在创建每个页面时,
backgroundImage
将添加到“内容下”。不需要担心什么时候自己添加它。。。iText会帮你解决这个问题,每页的第一个内容就是你的图片。您可能需要使用addImage的各种替代来获得所需的大小

我相信如果当前页面大小在您的程序中发生变化,您也可以查询
doc
。如果没有,您应该能够使用绝对位置/比例(这可能是您已经在做的事情)创建传入的图像


PdfPageEvent还有许多其他可以覆盖的事件。PdfPageEventHelper覆盖所有带有“无操作”的基本事件,因此您可以只覆盖所需的事件:

  • 开始页
  • 一页
  • 一次性文件
  • 段落
  • 段落结束
  • 第一章
  • 单瓣
  • 截面
  • 区段端
  • OnGenericTag

通用标记实际上非常方便。您可以为文档中的任何内容提供一个通用标记(字符串),您的OnGenericTag覆盖将被用于绘制标记内容的rect调用。各种漂亮的可能性。

如果你在“添加其他东西”中添加了一些大的东西,你实际上可以跳过一页。如果下一页出现了一些问题,您可以使用“背景”图像覆盖部分内容(取决于您添加图像的方式),感谢AS-CII提供解决方案。我可以使用您的解决方案在所有pdf页面上设置背景图像。