我想在PDF上使用itexsharp填写草稿表单。但是,当我运行代码它不起作用。数据隐藏在PDF格式下。您可以在下面看到详细代码。我该如何解决?
我认为图片中的Square可能是图像格式。
string oldFile ="~\Document\oldFile.pdf";
string newFile ="~\Document\newFile.pdf";
PdfReader reader = new PdfReader(oldFile);
Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
PdfContentByte cb = writer.DirectContent;
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.DARK_GRAY); cb.SetFontAndSize(bf, 8);
cb.BeginText();
string text = TextBox1.Text;
cb.ShowTextAligned(1, text, 350, 710, 0); // or cb.SetTextMatrix(1, text, 350, 710, 0);
cb.EndText();
cb.BeginText();
text = TextBox1.Text;
cb.ShowTextAligned(2, text, 520, 640, 0);
cb.EndText();
cb.BeginText();
text = "Signature";
cb.ShowTextAligned(3, text, 100, 200, 0);
cb.EndText();
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
document.Close();
fs.Close();
writer.Close();
reader.Close();
答案 0 :(得分:3)
如果这是可编辑的形式(您可以使用Adobe Reader填写的那个),那么您应该查看 PdfStamper 和 AcroFields
这是一篇关于它的好文章http://www.codeproject.com/Articles/23112/Fill-in-PDF-Form-Fields-using-the-Open-Source-iTex
答案 1 :(得分:1)
尝试放
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
在添加自己的文字之前。 您在页面上写下文本,然后重叠原始pdf。
答案 2 :(得分:0)
本文How to bring added images using iTextSharp in C# to the forefront表明PDF中的z顺序取决于添加到内容中的对象的顺序。因此,首先导入源页面,然后绘制文本,这应该可以解决问题。
正方形也可能是实际的表格字段。如果是这种情况,您可以使用Acrobat打开PDF以查找其名称(如果您没有Acrobat可用,则通过iTextSharp编码枚举它们)并使用PdfStamper类来实际填写& #34;