단어 문서에 서명란을 추가 할 수는 있지만 접근 방법이 좋지 않습니다. 나는 내 견해를 다루기 위해 많은 수색을했지만 어떤 것도 발견하지 못했습니다.서명 라인 추가 Word-Excel
는 자, 여기 당신이 내가 AddSignatureLine의 funciton를 호출 할 때,이 창은 (ShowDialog를 같은) 모달을 열고 아래를 참조 닫이 때까지 코드가 흐르지 않는 글쎄 내 코드
private void CreateNewPage()
{
object missing = System.Reflection.Missing.Value;
object fileName = @"C:\docs\mydoc.docx";
object readOnly = false;
object isVisible = true;
//Start Word and open a document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Open(ref fileName, ref missing, ref readOnly,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref isVisible, ref missing,
ref missing, ref missing, ref missing);
// var numberOfPages = oDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);
object oEndOfDoc = "\\endofdoc";
object paramNextPage = Word.WdBreakType.wdSectionBreakNextPage;
oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertBreak(ref paramNextPage);
//Insert a page break
object breakPage = Word.WdBreakType.wdPageBreak;
object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
object originalFormat = Word.WdOriginalFormat.wdOriginalDocumentFormat;
object routeDocument = false;
object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToLast;
object count = 3;
oWord.Selection.GoTo(ref what, ref which, ref count, ref missing);
object sigID = "{00000000-0000-0000-0000-000000000000}";
Timer t = new Timer();
t.Elapsed += (sender, args) =>
{
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("~");
t.Stop();
};
t.Interval = 2000;
t.Start();
try
{
oWord.Activate();
SignatureSet signatureSet = oWord.ActiveDocument.Signatures;
// signatureSet.ShowSignaturesPane = false;
Signature objSignature = signatureSet.AddSignatureLine(sigID);
objSignature.Setup.SuggestedSigner = "docSigner";
objSignature.Setup.SuggestedSignerEmail = "[email protected]";
objSignature.Setup.ShowSignDate = true;
// dynamic shape = objSignature.SignatureLineShape;
}
catch (Exception ex){}
oWord.Documents.Save();
oWord.Quit();
try
{
Marshal.ReleaseComObject(oWord);
}
catch (Exception){}
}
입니다 ..
나는 이것을 sendkey를 사용하지 않고 무시하지만 좋은 방법은 아닙니다. 그러나, 다른 해결책을 찾지 못하면 Win32 API를 사용하여이 창 (단어의 하위 창)을 찾으려고 할 것입니다.
어쨌든 이것을 우회하려면 궁금합니다. 수천 개의 문서가 있기 때문에 빠른 방법을 찾고 있습니다.
이 서명란을 추가하면 DocuSign을 사용하여 문서에 서명 할 수 있습니다. 그러나 문서에 서명란이 없으면 DocuSign은 문서에 디지털 서명을하지 않습니다. 그런 다음이 줄을 추가해야합니다.
재미있는 것 같습니다. 감사합니다. 나는 그것을하려고 노력하고있다. 그러나 나는 제 3의 단계에서 붙이게된다. 이 템플릿을 C# 프로젝트에 설치하는 방법은 무엇입니까? 추가 기능을 만들지 않습니다. Office Interop을 사용하는 정상적인 exe입니다. – unbalanced
설치 방법을 알았습니다.그러나 exceptipn이 있습니다. 처리되지 않은 'System.Runtime.InteropServices.COMException'예외가 WindowsFormsApplication1.exe에서 발생했습니다. 추가 정보 : 요청한 컬렉션 구성원이 존재하지 않습니다. 여기 var buildingBlock = template.BuildingBlockEntries.Item ("TestSignature"); template.BuildingBlockEntries.Count가 0이므로 입니다. – unbalanced
@unbalanced : 혼란을 가져 주어서 죄송합니다. 내가 말한 의미는'Application.AddIns.Add'를 사용하여 Word에로드 할 수 있도록 런타임에 해당 템플릿을 사용할 수 있도록해야한다는 것입니다. –