2012-03-21 119 views
0

我试图在word文档的openxml(docx)版本中插入数字签名行。我没有得到任何错误,但我意识到我可能会错过一个步骤。这是我的代码。这是一个Windows窗体应用程序。有人能告诉我如何正确追加一个数字签名行到一个Run实例吗? // S //作为我们想要插入数字签名行的标记。用foreach语句很容易找到。尝试在docx文件中插入数字签名行

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Windows.Forms; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Vml.Office; 
using DocumentFormat.OpenXml.Wordprocessing; 

namespace KeywordSearch 
{ 
    public partial class Form1 : Form 
    { 
     FileInfo[] tempfiles; 
     List<FileInfo> files = new List<FileInfo>(); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnClose_Click(object sender, EventArgs e) 
     { 
      Close(); 
     } 

     private void btnSearch_Click(object sender, EventArgs e) 
     { 
      string fileName = txtPath.Text; 
      using (WordprocessingDocument doc = 
      WordprocessingDocument.Open(fileName, false)) 
      { 
       foreach (Text t in doc.MainDocumentPart.Document.Body.Descendants<Text>()) 
       { 
        if (t.Text == "//S//") 
        { 
         lbxResults.Items.Add(t.Text); 

         Run r = (Run)t.Parent; 

         SignatureLine signature = new SignatureLine(); 
         signature.SuggestedSigner = "Pete Smith"; 
         signature.SuggestedSigner2 = "Programmer"; 
         signature.SuggestedSignerEmail = "[email protected]"; 
         signature.SigningInstructions = "Please sign"; 
         signature.ShowSignDate = true; 
         signature.AllowComments = true; 



         r.AppendChild<SignatureLine>(signature); 
        } 
       } 
      } 

      lbxResults.Items.Add("Completed adding digital signature liens."); 
     } 
    private void btnBrowse_Click(object sender, EventArgs e) 
    { 
     openFileDialog1.ShowDialog(); 

     txtPath.Text = openFileDialog1.FileName; 
    } 
} 

}

回答

4

该代码包含一个函数AddSiganture()与标签搜索一个ContentControl中 “topsoft”,并增加了一个SignatureLine它。有关SignatureLine的更多信息可以在这里找到http://msdn.microsoft.com/en-us/library/documentformat.openxml.vml.office.signatureline.aspx 实际上,签名线是一个内部具有形状和形状类型的图片。此外,使用相应的ID将ImagePart添加到文档也非常重要。图像部分的ID必须对应于Picture对象内图像对象的RelationshipId

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

using DocumentFormat.OpenXml.Packaging; 
using Ap = DocumentFormat.OpenXml.ExtendedProperties; 
using Vt = DocumentFormat.OpenXml.VariantTypes; 
using DocumentFormat.OpenXml; 
using DocumentFormat.OpenXml.Wordprocessing; 
using V = DocumentFormat.OpenXml.Vml; 
using Ovml = DocumentFormat.OpenXml.Vml.Office; 
using Ds = DocumentFormat.OpenXml.CustomXmlDataProperties; 
using A = DocumentFormat.OpenXml.Drawing; 
using M = DocumentFormat.OpenXml.Math; 

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      using (WordprocessingDocument document = WordprocessingDocument.Open(@"C:\Users\Tigran\Documents\qw.docx", true)) 
      { 
       AddSiganture(document, "Tigran Topchyan", "Head of Development", "[email protected]"); 
       document.Close(); 
      } 
     } 

     public void AddSiganture(WordprocessingDocument document, string signerName, string signerTitle, string signerEmail) 
     { 
      MainDocumentPart mainDocumentPart1 = document.MainDocumentPart; 

      string imagePartID = "ID_" + Guid.NewGuid().ToString("N"); 
      string signatureID = Guid.NewGuid().ToString("B"); 
      Picture picture1 = new Picture(); 

      V.Shapetype shapetype1 = new V.Shapetype() { Id = "_x0000_t75", CoordinateSize = "21600,21600", Filled = false, Stroked = false, OptionalNumber = 75, PreferRelative = true, EdgePath = "[email protected]@[email protected]@[email protected]@[email protected]@5xe" }; 
      V.Stroke stroke1 = new V.Stroke() { JoinStyle = V.StrokeJoinStyleValues.Miter }; 

      V.Formulas formulas1 = new V.Formulas(); 
      V.Formula formula1 = new V.Formula() { Equation = "if lineDrawn pixelLineWidth 0" }; 
      V.Formula formula2 = new V.Formula() { Equation = "sum @0 1 0" }; 
      V.Formula formula3 = new V.Formula() { Equation = "sum 0 0 @1" }; 
      V.Formula formula4 = new V.Formula() { Equation = "prod @2 1 2" }; 
      V.Formula formula5 = new V.Formula() { Equation = "prod @3 21600 pixelWidth" }; 
      V.Formula formula6 = new V.Formula() { Equation = "prod @3 21600 pixelHeight" }; 
      V.Formula formula7 = new V.Formula() { Equation = "sum @0 0 1" }; 
      V.Formula formula8 = new V.Formula() { Equation = "prod @6 1 2" }; 
      V.Formula formula9 = new V.Formula() { Equation = "prod @7 21600 pixelWidth" }; 
      V.Formula formula10 = new V.Formula() { Equation = "sum @8 21600 0" }; 
      V.Formula formula11 = new V.Formula() { Equation = "prod @7 21600 pixelHeight" }; 
      V.Formula formula12 = new V.Formula() { Equation = "sum @10 21600 0" }; 

      formulas1.Append(formula1); 
      formulas1.Append(formula2); 
      formulas1.Append(formula3); 
      formulas1.Append(formula4); 
      formulas1.Append(formula5); 
      formulas1.Append(formula6); 
      formulas1.Append(formula7); 
      formulas1.Append(formula8); 
      formulas1.Append(formula9); 
      formulas1.Append(formula10); 
      formulas1.Append(formula11); 
      formulas1.Append(formula12); 
      V.Path path1 = new V.Path() { AllowGradientShape = true, ConnectionPointType = Ovml.ConnectValues.Rectangle, AllowExtrusion = false }; 
      Ovml.Lock lock1 = new Ovml.Lock() { Extension = V.ExtensionHandlingBehaviorValues.Edit, AspectRatio = true }; 

      shapetype1.Append(stroke1); 
      shapetype1.Append(formulas1); 
      shapetype1.Append(path1); 
      shapetype1.Append(lock1); 

      V.Shape shape1 = new V.Shape() 
      { 
       Id = "_x0000_i1025", 
       Style = "width:192pt;height:96pt", 
       Alternate = "Microsoft Office Signature Line...", 
       Type = "#_x0000_t75" 
      }; 
      V.ImageData imageData1 = new V.ImageData() { Title = "", RelationshipId = imagePartID }; 

      Ovml.Lock lock2 = new Ovml.Lock() 
      { 
       Extension = V.ExtensionHandlingBehaviorValues.Edit, 
       Grouping = true, Ungrouping = true, Rotation = true, Cropping = true, Verticies = true, TextLock = true 
      }; 

      Ovml.SignatureLine signatureLine1 = new Ovml.SignatureLine() 
      { 
       Extension = V.ExtensionHandlingBehaviorValues.Edit, 
       IsSignatureLine = true, 
       Id = signatureID, 
       ProviderId = "{00000000-0000-0000-0000-000000000000}", 
       SuggestedSigner = signerName, 
       SuggestedSigner2 = signerTitle, 
       SuggestedSignerEmail = signerEmail 
      }; 

      shape1.Append(imageData1); 
      shape1.Append(lock2); 
      shape1.Append(signatureLine1); 

      picture1.Append(shapetype1); 
      picture1.Append(shape1); 

      var contentControls = mainDocumentPart1.Document.Descendants<SdtElement>(); 
      foreach (SdtElement elem in contentControls) 
      { 
       if (elem.SdtProperties.GetFirstChild<Tag>().Val == "topsoft") 
       { 
        var content = elem.GetFirstChild<SdtContentBlock>(); 
        content.RemoveAllChildren(); 
        content.Append(picture1); 
       } 
      } 

      ImagePart imagePart1 = mainDocumentPart1.AddNewPart<ImagePart>("image/x-emf", imagePartID); 
      GenerateImagePartContent(imagePart1); 
     } 

     public void GenerateImagePartContent(ImagePart imagePart1) 
     { 
      System.IO.Stream data = GetBinaryDataStream(imagePart1Data); 
      imagePart1.FeedData(data); 
      data.Close(); 
     } 

     #region Binary Data 
     public string imagePart1Data = "AQAAAGwAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAABQIwAAoBEAACBFTUYAAAEAtBQAAIMAAAAFAAAAAAAAAAAAAAAAAAAAAAUAACADAADEAQAAGgEAAAAAAAAAAAAAAAAAAOPjBgBuTgQACgAAABAAAAAAAAAAAAAAAEsAAAAQAAAAAAAAAAUAAAAeAAAAGAAAAAAAAAAAAAAAAAEAAIAAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAADw8PAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD/AAAAfwAAAAAAAAAAAAAAAAEAAIAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAA8PDwAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAPDw8AAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAADw8PAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD/AAAAfwAAAAAAAAAAAAAAAAEAAIAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAA////AAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAD///8AAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAMAAAD/AAAAEgAAAAAAAAADAAAAAAEAABAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA//////////8AAAAAFgAAAAAAAAA1AAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP//////////AAAAABYAAAAAAQAAAAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD//////////wABAAAWAAAAAAAAADUAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAABLAAAA/wAAAEwAAAAAAAAASwAAAAABAAACAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAFgAAAP8AAABKAAAAAAAAABYAAAAAAQAANQAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAD///8AAAAAACUAAAAMAAAAAQAAAEwAAABkAAAACQAAACcAAAAfAAAASgAAAAkAAAAnAAAAFwAAACQAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAABSAAAAcAEAAAEAAADg////AAAAAAAAAAAAAAAAkAEAAAAAAAEAAAAAYQByAGkAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8eC8AAAAAAAAAAAAAAAAAyPEJ1/4HAADI8QnX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"; 

     public System.IO.Stream GetBinaryDataStream(string base64String) 
     { 
      return new System.IO.MemoryStream(System.Convert.FromBase64String(base64String)); 
     } 

     #endregion 
    } 
} 
0

我已经为Tigran Topchyan发布的答案添加了升级。

这使我能够在运行时生成签名图像。而不是将imagePart1Data硬编码到docx文件中。当您使用另一个程序(如记事本)或保护模式打开Word文档时,将显示这些信息。

我添加以下到我的资源:一个空signatureline图像 enter image description here

然后,我已经添加了引用System.Drawing中 然后添加以下到您的类,你有自己的代码(使用System.Drawing中)。

然后,你需要替换区域的二进制数据下面的代码:

public string imagePart1Data = "AQAAAGwAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAABQIwAAoBEAACBFTUYAAAEAtBQAAIMAAAAFAAAAAAAAAAAAAAAAAAAAAAUAACADAADEAQAAGgEAAAAAAAAAAAAAAAAAAOPjBgBuTgQACgAAABAAAAAAAAAAAAAAAEsAAAAQAAAAAAAAAAUAAAAeAAAAGAAAAAAAAAAAAAAAAAEAAIAAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAADw8PAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD/AAAAfwAAAAAAAAAAAAAAAAEAAIAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAA8PDwAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAPDw8AAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAADw8PAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD/AAAAfwAAAAAAAAAAAAAAAAEAAIAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAA////AAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA/wAAAH8AAAAAAAAAAAAAAAABAACAAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP8AAAB/AAAAAAAAAAAAAAAAAQAAgAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAD///8AAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAMAAAD/AAAAEgAAAAAAAAADAAAAAAEAABAAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAAAAAAAA//////////8AAAAAFgAAAAAAAAA1AAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAAAAAAP//////////AAAAABYAAAAAAQAAAAAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAQAAAEwAAABkAAAAAAAAAAAAAAD//////////wABAAAWAAAAAAAAADUAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAAAnAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAEAAABMAAAAZAAAAAAAAABLAAAA/wAAAEwAAAAAAAAASwAAAAABAAACAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAAAAAAJQAAAAwAAAABAAAATAAAAGQAAAAAAAAAFgAAAP8AAABKAAAAAAAAABYAAAAAAQAANQAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAQAAACcAAAAYAAAAAQAAAAAAAAD///8AAAAAACUAAAAMAAAAAQAAAEwAAABkAAAACQAAACcAAAAfAAAASgAAAAkAAAAnAAAAFwAAACQAAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAEAAABSAAAAcAEAAAEAAADg////AAAAAAAAAAAAAAAAkAEAAAAAAAEAAAAAYQByAGkAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8eC8AAAAAAAAAAAAAAAAAyPEJ1/4HAADI8QnX/gcAAAjyCdf+BwAASFki1/4HAACAk/YBAAAAAAAAAAAAAAAAQDR3AgAAAADvewDW/gcAALGs24n+BwAAAAAAAAAAAAAAAAAA/gcAABh5LwAAAAAA4P///wAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAADAAAAAAAAACAOUwAAAAAAPHgvAAAAAACLDZ92AAAAAICT9gEAAAAAmFMh1wAAAACgPYUGAAAAAMjxCdf+BwAAPHgvAAAAAAAGAAAA/gcAAAAAAAAAAAAA0LvFdgAAAAADAAAAAAAAAOBq6gFkdgAIAAAAACUAAAAMAAAAAQAAABgAAAAMAAAAAAAAAhIAAAAMAAAAAQAAABYAAAAMAAAACAAAAFQAAABUAAAACgAAACcAAAAeAAAASgAAAAEAAAAAQA1CAAANQgoAAABLAAAAAQAAAEwAAAAEAAAACQAAACcAAAAgAAAASwAAAFAAAABYADsAFQAAABYAAAAMAAAAAAAAAFIAAABwAQAAAgAAABAAAAAHAAAAAAAAAAAAAAC8AgAAAAAAAAECAiJTAHkAcwB0AGUAbQAAAPMBoPj///IBAAAAAAAA/GueBYD4//8IAFh++/b//wAAAAAAAAAA4GueBYD4/////wAAAAAAAGyhLwAAAAAAAAAAAAAAAAD4AwAAAAAAACAOUwAAAAAAAAAAAAAAAABo8gnXAAAAAP7//////////dr71f4HAABw0Q4AAAAAAP3a+9X+BwAAYUbbif4HAAAeJgrS/////wYAAAAAAAAAMKIvAAAAAACAmEsCAAAAADgAigEAAAAAAAAAAAAAAAAHAAAAAAAAAMA4UwAAAAAAIA5TAAAAAABsoS8AAAAAAIsNn3YAAAAAAAAAAAAAAAAAOtUDAAAAAAAAAAAAAAAAAAAAAAAAAABsoS8AAAAAAAcAAAD+BwAAAGjoAwAAAADQu8V2AAAAAAAAAAAAAAAA6MIh12R2AAgAAAAAJQAAAAwAAAACAAAAJwAAABgAAAADAAAAAAAAAP///wAAAAAAJQAAAAwAAAADAAAATAAAAGQAAAApAAAAGQAAAPYAAABKAAAAKQAAABkAAADOAAAAMgAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAwAAACcAAAAYAAAAAwAAAAAAAAD///8AAAAAACUAAAAMAAAAAwAAAEwAAABkAAAAKQAAABkAAAD2AAAARwAAACkAAAAZAAAAzgAAAC8AAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAMAAAAnAAAAGAAAAAMAAAAAAAAA////AAAAAAAlAAAADAAAAAMAAABMAAAAZAAAAAAAAABQAAAA/wAAAHwAAAAAAAAAUAAAAAABAAAtAAAAIQDwAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAwAAAAAAACAKAAAAAwAAAADAAAAJwAAABgAAAADAAAAAAAAAP///wAAAAAAJQAAAAwAAAADAAAATAAAAGQAAAAJAAAAUAAAAPYAAABcAAAACQAAAFAAAADuAAAADQAAACEA8AAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAMAAAAAAAAgCgAAAAMAAAAAwAAAFIAAABwAQAAAwAAAPX///8AAAAAAAAAAAAAAACQAQAAAAAAAQAAAAB0AGEAaABvAG0AYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyjLwAAAAAAAAAAAAAAAAABg+gDAAAAAAAAAAAAAAAAMInyBAAAAABAq/IEAAAAAKCE6AMAAAAAAQAAAAAAAAABAAAAAAAAAAjzCdf+BwAAoXnbif4HAADar//V/gcAAAQAAAAAAAAACKQvAAAAAAD1////AAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAIA5TAAAAAAAsoy8AAAAAAIsNn3YAAAAACPMJ1/4HAADgfvIEAAAAAFBHEgAAAAAACPMJ1/4HAAAsoy8AAAAAAAcAAAD+BwAAAAAAAAAAAADQu8V2AAAAAAEAAAAAAAAAIGrqAWR2AAgAAAAAJQAAAAwAAAADAAAAGAAAAAwAAAAAAAACEgAAAAwAAAABAAAAHgAAABgAAAAJAAAAUAAAAPcAAABdAAAAJQAAAAwAAAADAAAAVAAAAKgAAAAKAAAAUAAAAFkAAABcAAAAAQAAAABADUIAAA1CCgAAAFAAAAAPAAAATAAAAAAAAAAAAAAAAAAAAP//////////bAAAAFQAaQBnAHIAYQBuACAAVABvAHAAYwBoAHkAYQBuAEMABgAAAAIAAAAGAAAABAAAAAYAAAAGAAAAAwAAAAYAAAAGAAAABgAAAAUAAAAGAAAABgAAAAYAAAAGAAAASwAAAEAAAAAwAAAABQAAACAAAAABAAAAAQAAABAAAAAAAAAAAAAAAAABAACAAAAAAAAAAAAAAAAAAQAAgAAAACUAAAAMAAAAAgAAACcAAAAYAAAABAAAAAAAAAD///8AAAAAACUAAAAMAAAABAAAAEwAAABkAAAACQAAAGAAAAD2AAAAbAAAAAkAAABgAAAA7gAAAA0AAAAhAPAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAADAAAAAAAAIAoAAAADAAAAAQAAAAlAAAADAAAAAMAAAAYAAAADAAAAAAAAAISAAAADAAAAAEAAAAeAAAAGAAAAAkAAABgAAAA9wAAAG0AAAAlAAAADAAAAAMAAABUAAAAwAAAAAoAAABgAAAAcQAAAGwAAAABAAAAAEANQgAADUIKAAAAYAAAABMAAABMAAAAAAAAAAAAAAAAAAAA//////////90AAAASABlAGEAZAAgAG8AZgAgAEQAZQB2AGUAbABvAHAAbQBlAG4AdAA2AAcAAAAGAAAABgAAAAYAAAADAAAABgAAAAQAAAADAAAABwAAAAYAAAAGAAAABgAAAAIAAAAGAAAABgAAAAgAAAAGAAAABgAAAAQAAABLAAAAQAAAADAAAAAFAAAAIAAAAAEAAAABAAAAEAAAAAAAAAAAAAAAAAEAAIAAAAAAAAAAAAAAAAABAACAAAAAJQAAAAwAAAACAAAADgAAABQAAAAAAAAAEAAAABQAAAA="; 

    public System.IO.Stream GetBinaryDataStream(string base64String) 
    { 
     return new System.IO.MemoryStream(System.Convert.FromBase64String(base64String)); 
    } 

与此:

private System.IO.Stream GetBinaryDataStream(string nameToPrint, string functionToPrint) 
    { 
     return new System.IO.MemoryStream(CreateImageForSignatureLine(nameToPrint, functionToPrint)); 
    } 


    private byte[] CreateImageForSignatureLine(string nameToPrint, string functionToPrint) 
    { 
     using (Image img = new Bitmap(My.Resources.SignatureLineEmpty)) 
     { 
      if (!string.IsNullOrEmpty(nameToPrint)) 
      { 
       DrawNameOnImage(img, nameToPrint); 
      } 
      if (!string.IsNullOrEmpty(functionToPrint)) 
      { 
       DrawFunctionOnImage(img, functionToPrint); 
      } 
      DrawFunctionOnImage(img, functionToPrint); 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); 
       return ms.ToArray(); 
      } 
     } 
    } 


    private void DrawNameOnImage(Image img, string nameToPrint) 
    { 
     DrawOnSignature(img, nameToPrint, 7, 80); 
    } 
    private void DrawFunctionOnImage(Image img, string functionToPrint) 
    { 
     DrawOnSignature(img, functionToPrint, 7, 96); 
    } 

    private void DrawOnSignature(Image img, string text, int x, int y) 
    { 
     using (System.Drawing.Font font = new System.Drawing.Font(System.Drawing.FontFamily.GenericSansSerif, 8)) 
     { 
      using (Graphics drawing = Graphics.FromImage(img)) 
      { 
       Brush textBrush = new SolidBrush(System.Drawing.Color.Black); 
       drawing.DrawString(text, font, textBrush, x, y); 
       drawing.Save(); 
      } 
     } 
    } 

我希望这可以帮助别人。