如何使用itextsharp基于退出pdf的文本在不同页面上书写文本

时间:2018-02-01 10:28:50

标签: asp.net pdf c#-4.0 itext

如何在退出pdf的不同页面上编写文本,这些页面有1页以上。 例如'Hitesh Second Page'我想在第二页上写下这个单词 'Hitesh Third Page'我想在第三页上写下这个词

下面的代码只适用于有一页的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

1 个答案:

答案 0 :(得分:1)

使用Document / PdfWriter对创建文档时,您可以按照最终顺序创建页面,即首先创建第一页,然后是第二页,然后是第三页,..

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

只要您对代码进行了排序,就可以使用Document方法NewPage切换到下一页:

document.NewPage();

请注意,如果相关页面上没有任何内容,iText会忽略NewPage来电。要覆盖此内容,您可以在调用PdfWriter之前使用PageEmpty属性NewPage让iText认为它不为空:

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

虽然说过......

  

如何在退出pdf的情况下在不同页面上书写文字

对于此类任务,您不应该使用Document / PdfWriter对开始,使用PdfReader / PdfStamper对!在PdfStamper中,您可以在页面之间自由跳转......