将注释从PDF复制到另一个

时间:2018-01-12 12:48:25

标签: pdf itext

我需要提取" pAnnotedFileName"中的所有注释。并将它们应用于" pOriginalFileName"并将此修改保存在新文件" pDestinationFileName"中。

当我检查vOriginalPage.GetAsArray(PdfName.ANNOTS)的结果时,我发现我的文档没有任何注释。在我执行操作后,当我重新检查vOriginalPage.GetAsArray(PdfName.ANNOTS)时,我看到该文档有信息,但是当我打开新文档时,我看不到任何信息。注解。我试图用iTextSharp做这件事。

知道我做错了什么?

我有使用的代码。

private static void CopyAnnotation(string pAnnotedFileName, string pOriginalFileName, string pDestinationFileName)
{
  PdfReader vAnnotedReader = new PdfReader(pAnnotedFileName);
  PdfReader vOriginalReader = new PdfReader(pOriginalFileName);

  Dictionary<int, PdfArray> vAnnotations = new Dictionary<int, PdfArray>();

  for (int vPageNumber = 1; vPageNumber <= vAnnotedReader.NumberOfPages; vPageNumber++)
  {
    PdfDictionary vPage = vAnnotedReader.GetPageN(vPageNumber);

    vAnnotations.Add(vPageNumber, vPage.GetAsArray(PdfName.ANNOTS));
  }

  PdfStamper vStamper = new PdfStamper(vOriginalReader, new FileStream(pDestinationFileName, FileMode.Create));

  for (int vPageNumber = 1; vPageNumber <= vOriginalReader.NumberOfPages; vPageNumber++)
  {
    PdfDictionary vOriginalPage = vOriginalReader.GetPageN(vPageNumber);

    var vBeforeAnnotation = vOriginalPage.GetAsArray(PdfName.ANNOTS);

    vOriginalPage.Put(PdfName.ANNOTS, vAnnotations[vPageNumber]);

    var vAfterAnnotation = vOriginalPage.GetAsArray(PdfName.ANNOTS);
  }

  vStamper.Close();

  vAnnotedReader.Close();
  vOriginalReader.Close();
}

由于

0 个答案:

没有答案