Asp.net 如何使用itextsharp根据现有pdf的文本在不同页面上编写文本

Asp.net 如何使用itextsharp根据现有pdf的文本在不同页面上编写文本,asp.net,pdf,c#-4.0,itext,Asp.net,Pdf,C# 4.0,Itext,如何在超过1页的现有pdf上的不同页面上编写文本。 例如“Hitesh第二页”,我想把这个词写在第二页上 “Hitesh第三页”我想把这个词写在第三页 下面的代码只适用于只有一页的pdf string fileName = "test.pdf"; string oldFile = System.Web.Hosting.HostingEnvironment.MapPath("~/AuthDoc/CoverPage.pdf");

如何在超过1页的现有pdf上的不同页面上编写文本。 例如“Hitesh第二页”,我想把这个词写在第二页上 “Hitesh第三页”我想把这个词写在第三页

下面的代码只适用于只有一页的pdf

   string fileName = "test.pdf";
                string oldFile = System.Web.Hosting.HostingEnvironment.MapPath("~/AuthDoc/CoverPage.pdf");
                string newFile = System.Web.Hosting.HostingEnvironment.MapPath(fileName);
                // open the reader
                PdfReader reader = new PdfReader(oldFile);
                Rectangle size = reader.GetPageSizeWithRotation(1);
                Document document = new Document(size);

                // open the writer
                FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
                PdfWriter writer = PdfWriter.GetInstance(document, fs);
                document.Open();

                // the pdf content
                PdfContentByte cb = writer.DirectContent;

                // select the font properties
                BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                cb.SetColorFill(BaseColor.DARK_GRAY);
                cb.SetFontAndSize(bf, 8);
                string text = "";
                cb.BeginText();
                text = "Hitesh Third Page";
                cb.ShowTextAligned(3, text,500,500, 0);
                cb.EndText();

  cb.BeginText();
                text = "Hitesh Second Page";
                cb.ShowTextAligned(2, text,500,500, 0);
                cb.EndText();
                PdfImportedPage page = writer.GetImportedPage(reader, 1);
                cb.AddTemplate( page, 0, 0);             
                document.Close();
                fs.Close();
                writer.Close();
                reader.Close();
                byte[] bytes = System.IO.File.ReadAllBytes(newFile);
                return bytes;
谢谢, Hitesh

当使用文档/PDF编写器对创建文档时,您将按照页面的最终顺序创建页面,即先创建第一个页面,然后创建第二个页面,然后创建第三个页面

在代码中,您似乎试图从创建第三个页面开始,然后继续创建第二个页面。您必须对代码进行相应的排序

对代码进行排序后,可以使用文档方法NewPage切换到下一页:

document.NewPage();
不过,请注意,如果页面上没有任何内容,iText将忽略NewPage调用。要覆盖此设置,可以在调用NewPage之前使用PdfWriter属性PageEmpty使iText相信它不是空的:

尽管如此

如何在现有pdf上的不同页面上编写文本

对于这样的任务,您不应该首先使用Document/PdfWriter对,而应该使用PdfReader/PdfStamper对!在PdfStamper中,您可以在页面之间自由跳转

writer.PageEmpty = false;
document.NewPage();