使用iTextSharp在PDF草稿表单上书写

时间:2016-01-25 18:45:58

标签: c# asp.net itextsharp

我想在PDF上使用itexsharp填写草稿表单。但是,当我运行代码它不起作用。数据隐藏在PDF格式下。您可以在下面看到详细代码。我该如何解决?

enter image description here

我认为图片中的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();

3 个答案:

答案 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;