【问题标题】:Merging PDF fields from identical forms in ITextSharp在 ITextSharp 中合并来自相同表单的 PDF 字段
【发布时间】:2012-12-11 11:36:21
【问题描述】:

我有两个 PDF 表格 - 一个原始表格和一个新表格。新表单上有x 额外的acro fields 数量,但它没有原始PDF 字段。

我想将旧 PDF 中的字段合并到新 PDF 表单中。新字段/字段会移动旧字段的一些占位符,因此它们可能会重叠或不在正确的位置,但这无关紧要。

我的尝试

//Get the old PDF
PdfReader oldPdfReader = new PdfReader("Old.Pdf");
MemoryStream oldMs = new MemoryStream();
PdfStamper oldPdfStamper = new PdfStamper(oldPdfReader, oldMs);
//Get the new PDF
PdfReader newPdfReader = new PdfReader("New.Pdf");
MemoryStream newMs = new MemoryStream();
PdfStamper newPdfStamper = new PdfStamper(newPdfReader, newMs);

foreach(var oldField in oldPdfStamper.AcroFields.Fields)
{
   //Do a check to see if the field isn't already added
   if(!newPdfStamper.AcroFields.Fields.Any(x => x.Key == oldField.Key))
      newPdfStamper.AcroFields.Fields.Add(oldField);
}

即使调试命中add,这也只会输出新字段,我认为这是不正确的,我需要以某种方式绘制字段。

我也试过下面的例子:

Merging multiple PDFs using iTextSharp in c#.net

它将来自New.PDF 的新字段放在上面,但不会继承Old.PDF 的字段。关于如何合并两个 PDF 表单中的 AcroFields 有什么想法吗?

【问题讨论】:

    标签: c# pdf itextsharp


    【解决方案1】:
      //Get the old PDF
      PdfReader oldPdfReader = new PdfReader(@"old.pdf");
      MemoryStream oldMs = new MemoryStream();
      PdfStamper oldPdfStamper = new PdfStamper(oldPdfReader, oldMs);
      //Get the new PDF
      PdfReader newPdfReader = new PdfReader(@"new.pdf");
      MemoryStream newMs = new MemoryStream();
      PdfStamper newPdfStamper = new PdfStamper(newPdfReader, newMs);
      AcroFields af = oldPdfStamper.AcroFields;
    
      foreach (var oldField in oldPdfStamper.AcroFields.Fields)
      {
        var rectangles = af.GetFieldPositions(oldField.Key).Select(x => x.position.GetRectangle(x.position.Top, x.position.Bottom));
        foreach (var rectangle in rectangles)
        {
          TextField tf = new TextField(newPdfStamper.Writer, rectangle, oldField.Key);
          newPdfStamper.AddAnnotation(tf.GetTextField(), af.GetFieldPositions(oldField.Key).First().page);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多