Asp.net 如何使用itextsharp根据现有pdf的文本在不同页面上编写文本
如何在超过1页的现有pdf上的不同页面上编写文本。 例如“Hitesh第二页”,我想把这个词写在第二页上 “Hitesh第三页”我想把这个词写在第三页 下面的代码只适用于只有一页的pdfAsp.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");
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();