我需要一种可以使用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)
所有阅读文档的人似乎都有输出流...
答案 0 :(得分:1)
要使用itext 5从头开始创建pdf,请使用itext $.mobile.initializePage();
和itext Document
。 PdfWriter
是用于将附加内容标记到现有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。