-
倚天杖
我找到了一种方法(不知道这是否是最好的方法,但它确实有效)string oldFile = "oldFile.pdf";string newFile = "newFile.pdf";// open the readerPdfReader reader = new PdfReader(oldFile);Rectangle size = reader.GetPageSizeWithRotation(1);Document document = new Document(size);// open the writerFileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);PdfWriter writer = PdfWriter.GetInstance(document, fs);document.Open();// the pdf contentPdfContentByte cb = writer.DirectContent;// select the font propertiesBaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252,BaseFont.NOT_EMBEDDED);cb.SetColorFill(BaseColor.DARK_GRAY);cb.SetFontAndSize(bf, 8);// write the text in the pdf contentcb.BeginText();string text = "Some random blablablabla...";// put the alignment and coordinates herecb.ShowTextAligned(1, text, 520, 640, 0);cb.EndText();cb.BeginText();text = "Other random blabla...";// put the alignment and coordinates herecb.ShowTextAligned(2, text, 100, 200, 0);cb.EndText();// create the new page and add it to the pdfPdfImportedPage page = writer.GetImportedPage(reader, 1);cb.AddTemplate(page, 0, 0);// close the streams and voilá the file should be changed :)document.Close();fs.Close();writer.Close();reader.Close();我希望这对某人==有用(并在此处发布任何错误)
-
慕运维8079593
除了上述出色的答案之外,以下内容还显示了如何向多页文档的每一页添加文本: using (var reader = new PdfReader(@"C:\Input.pdf")) { using (var fileStream = new FileStream(@"C:\Output.pdf", FileMode.Create, FileAccess.Write)) { var document = new Document(reader.GetPageSizeWithRotation(1)); var writer = PdfWriter.GetInstance(document, fileStream); document.Open(); for (var i = 1; i <= reader.NumberOfPages; i++) { document.NewPage(); var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); var importedPage = writer.GetImportedPage(reader, i); var contentByte = writer.DirectContent; contentByte.BeginText(); contentByte.SetFontAndSize(baseFont, 12); var multiLineString = "Hello,\r\nWorld!".Split('\n'); foreach (var line in multiLineString) { contentByte.ShowTextAligned(PdfContentByte.ALIGN_LEFT, line, 200, 200, 0); } contentByte.EndText(); contentByte.AddTemplate(importedPage, 0, 0); } document.Close(); writer.Close(); } }
-
尚方宝剑之说
这对我有用,包括使用OutputStream:PdfReader reader = new PdfReader(new RandomAccessFileOrArray(Request.MapPath("Template.pdf")), null); Rectangle size = reader.GetPageSizeWithRotation(1); using (Stream outStream = Response.OutputStream) { Document document = new Document(size); PdfWriter writer = PdfWriter.GetInstance(document, outStream); document.Open(); try { PdfContentByte cb = writer.DirectContent; cb.BeginText(); try { cb.SetFontAndSize(BaseFont.CreateFont(), 12); cb.SetTextMatrix(110, 110); cb.ShowText("aaa"); } finally { cb.EndText(); } PdfImportedPage page = writer.GetImportedPage(reader, 1); cb.AddTemplate(page, 0, 0); } finally { document.Close(); writer.Close(); reader.Close(); } }