2014-09-16 2 views
0

Winnovative에서 HTML로 PDF 변환기 도구를 사용하여 HTML을 목차가있는 PDF로 변환합니다. 이것은 아주 잘 작동HTML로 PDF 변환 후 PDF 문서에 디지털 서명

// Create a HTML to PDF converter object with default settings 
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

// Enable the creation of a table of contents from H1 to H6 tags found in HTML 
htmlToPdfConverter.TableOfContentsOptions.AutoTocItemsEnabled = autoTableOfContentsCheckBox.Checked; 

// Convert the HTML page to a PDF document in a memory buffer 
byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtmlToPdf(myBookHtml, baseUrl); 

하지만 요구 사항은 또한 나는 우리의 IIS 서버에서 내보낼 수있는 디지털 인증서를 사용하여 우리의 소프트웨어의 일부로 배포 할 PDF 문서에 서명하는 것입니다 :이 아래의 코드를 사용했다. 어떻게해야합니까?

+0

.NET에서 iText (라이센스보기! –

답변

0

먼저 IIS에서 암호로 보호 된 PFX 파일에 개인 키와 공개 키를 모두 포함하는 인증서를 내 보내야합니다.

// Create a HTML to PDF converter object with default settings 
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

htmlToPdfConverter.TableOfContentsOptions.AutoTocItemsEnabled = true; 

Document pdfDocument = null; 
try 
{ 
    string htmlWithDigitalSignatureMarker = htmlStringTextBox.Text; 
    string baseUrl = baseUrlTextBox.Text; 

    // Convert a HTML string with a marker for digital signature to a PDF document object 
    pdfDocument = htmlToPdfConverter.ConvertHtmlToPdfDocumentObject(htmlWithDigitalSignatureMarker, baseUrl); 

    // Make the HTML element with 'digital_signature_element' mapping ID a link to digital signature properties 
    HtmlElementMapping digitalSignatureMapping = htmlToPdfConverter.HtmlElementsMappingOptions.HtmlElementsMappingResult.GetElementByMappingId("digital_signature_element"); 
    if (digitalSignatureMapping != null) 
    { 
     PdfPage digitalSignaturePage = digitalSignatureMapping.PdfRectangles[0].PdfPage; 
     RectangleF digitalSignatureRectangle = digitalSignatureMapping.PdfRectangles[0].Rectangle; 

     string certificateFilePath = Server.MapPath("~/DemoAppFiles/Input/Certificates/wnvpdf.pfx"); 

     // Get the certificate from password protected PFX file 
     DigitalCertificatesCollection certificates = DigitalCertificatesStore.GetCertificates(certificateFilePath, "wnvpdf"); 
     DigitalCertificate certificate = certificates[0]; 

     // Create the digital signature 
     DigitalSignatureElement signature = new DigitalSignatureElement(digitalSignatureRectangle, certificate); 
     signature.Reason = "Protect the document from unwanted changes"; 
     signature.ContactInfo = "The contact email is [email protected]"; 
     signature.Location = "Development server"; 
     digitalSignaturePage.AddElement(signature); 
    } 

    // Save the PDF document in a memory buffer 
    byte[] outPdfBuffer = pdfDocument.Save(); 

} 
finally 
{ 
    // Close the PDF document 
    if (pdfDocument != null) 
     pdfDocument.Close(); 
} 
+0

첫 번째 PDF 페이지 전체를 서명 속성에 연결할 수 있도록 코드를 약간 변경해야했지만 기본적으로 내 질문에 대한 좋은 답변입니다. 감사 !!! :-) –