2017-01-04 151 views
1

我有几十种不同类型的文档需要签名。签名应该去的地方有一个[[Signature]]标签。我想找到该标签并将其替换为签名图像。使用Novacode替换Word文档中的文本标签与图像

我目前使用的是Novacode.DocX文档,并在包含[[Signature]]标签的段落之后追加图片,但这并不符合我的需求,因为它将签名放置在签名标签的位置下方。我想直接在[[Signature]]标记处插入它。这是我目前的代码:

 public static MemoryStream ToSignedPDFStream(this Novacode.DocX document, string signatureImgBase64, string signatureBiometric) 
    { 
     var bytes = System.Convert.FromBase64String(signatureImgBase64); 

     System.Drawing.Image image; 
     using (MemoryStream ms = new MemoryStream(bytes)) 
     { 
      image = System.Drawing.Image.FromStream(ms); 
     } 

     using (MemoryStream imgStream = new MemoryStream()) 
     { 
      image.Save(imgStream, System.Drawing.Imaging.ImageFormat.Bmp); 
      imgStream.Seek(0, SeekOrigin.Begin); 
      var docxImage = document.AddImage(imgStream); 


      var addresses = document.FindAll("[[Signature]]"); 
      var paragraphs = document.Paragraphs.Where(x => x.Text.Contains("[[Signature]]")); 
      foreach (var paragraph in paragraphs) 
      { 
       paragraph.ReplaceText("[[Signature]]", ""); 
       paragraph.AppendPicture(docxImage.CreatePicture(50, 150)); 

      } 

      var memoryStream = new MemoryStream(); 
      document.SaveAs(memoryStream); 

     } 

     var pdfStream = document.ToPDFStream(); 

     var biometricFile = File.WriteAllText(); 

     return pdfStream; 
    } 

从技术上讲,这起作用,但将签名错误地放置。

回答

1

我前几天在这里管理相同的问题:)

答案是你的标签放到一个单元格,然后可将图像融入细胞,正是你的细胞里。

告诉我,如果你想有一个代码示例这样做

+0

我的最终解决方案,发布这个数月之后,是使用占位符图片代替文字标签,我可以再找到且很容易替换的文字形状。 –

+0

好的,很高兴知道。实际上你的最终解决方案听起来更合适 –