iTextSharp使用压模创建PDF

时间:2018-07-19 07:45:24

标签: asp.net itext

我需要一种可以使用Stamper创建新PDF的方法(我承认Itextsharp是我的新手,但我并不完全了解Stamper是什么)。 到目前为止,我是通过使用压模编辑以前的pdf文档来创建TextField的:

using (PdfStamper stamper = new PdfStamper(new PdfReader(Server.MapPath("~/PDFs/"+TemplateId+".pdf")), File.Create(Server.MapPath("~/PDFs/addacro.pdf"))))
{              
    iTextSharp.text.pdf.TextField tf = new iTextSharp.text.pdf.TextField(stamper.Writer, new iTextSharp.text.Rectangle(0, 0, 595, 842), "Vertical");
    stamper.AddAnnotation(tf.GetTextField(), 1);
    stamper.Close();
}

对于新文档(不存在),我将如何做同样的事情

谢谢

编辑

我知道这些是http://itextsupport.com/apidocs/itext5/5.5.9/com/itextpdf/text/pdf/PdfStamper.html

中的构造函数
PdfStamper()
PdfStamper(PdfReader reader, OutputStream os)
PdfStamper(PdfReader reader, OutputStream os, char pdfVersion) 
PdfStamper(PdfReader reader, OutputStream os, char pdfVersion, boolean append) 

所有阅读文档的人似乎都有输出流...

1 个答案:

答案 0 :(得分:1)

要使用itext 5从头开始创建pdf,请使用itext $.mobile.initializePage();和itext DocumentPdfWriter是用于将附加内容标记到现有pdf上的类。

对于类似于基于压模的示例的文本字段:

PdfStamper

主要区别在于Document document = new Document(); Stream stream = new FileStream(@"emptyTextField.pdf", FileMode.Create); PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream); document.Open(); TextField tf = new iTextSharp.text.pdf.TextField(pdfWriter, new iTextSharp.text.Rectangle(0, 0, 595, 842), "Vertical"); pdfWriter.AddAnnotation(tf.GetTextField()); document.Close(); 不采用页码参数,而是假定当前正在处理的页面,即文档的当前最后一页。


您说您是itextsharp的新手。如果您的工作不受该iText v5的束缚,则最好改用并学习新的itext 7。