HiQPdf Documentation

Digital Signatures

Quickly Create High Quality PDFs

With HiQPdf Library you to digitally sign the generated PDF documents using a digital certificate. The HiQPdfPdfCertificatesCollection class allows you to get a certificate from a file or from system store. The digital certificate is then used to create a HiQPdfPdfDigitalSignature object that you add to a PDF document using the PdfDocumentAddDigitalSignature(PdfDigitalSignature, PdfPage, RectangleF) method.

PDF Digital Signatures Demo

In this demo you can learn how to add a digital signature to a PDF document based on a certificate from a PFX file. The digital signature is applied over an image in PDF document and you can click on that image to see the digital certificate properties.

Demo Source Code

protected void buttonCreatePdf_Click(object sender, EventArgs e)
    // create a PDF document
    PdfDocument document = new PdfDocument();

    // create a page in document
    PdfPage page1 = document.AddPage();

    // create the true type fonts that can be used in document text
    Font sysFont = new Font("Times New Roman", 10, System.Drawing.GraphicsUnit.Point);
    PdfFont pdfFont = document.CreateFont(sysFont);
    PdfFont pdfFontEmbed = document.CreateFont(sysFont, true);

    float crtYPos = 20;
    float crtXPos = 5;

    // add a title to PDF document
    PdfText titleTextTransImage = new PdfText(crtXPos, crtYPos,
            "Click the image below to open the digital signature", pdfFontEmbed);
    titleTextTransImage.ForeColor = Color.Navy;
    PdfLayoutInfo textLayoutInfo = page1.Layout(titleTextTransImage);

    crtYPos += textLayoutInfo.LastPageRectangle.Height + 10;

    // layout a PNG image with alpha transparency
    PdfImage transparentPdfImage = new PdfImage(crtXPos, crtYPos, Server.MapPath("~") + @"\DemoFiles\Images\HiQPdfLogo_small.png");
    PdfLayoutInfo imageLayoutInfo = page1.Layout(transparentPdfImage);

    // apply a digital sgnature over the image
    PdfCertificatesCollection pdfCertificates = PdfCertificatesCollection.FromFile(Server.MapPath("~") + @"\DemoFiles\Pfx\hiqpdf.pfx", "hiqpdf");
    PdfDigitalSignature digitalSignature = new PdfDigitalSignature(pdfCertificates[0]);
    digitalSignature.SigningReason = "My signing reason";
    digitalSignature.SigningLocation = "My signing location";
    digitalSignature.SignerContactInfo = "My contact info";
    document.AddDigitalSignature(digitalSignature, imageLayoutInfo.LastPdfPage, imageLayoutInfo.LastPageRectangle);

        // write the PDF document to a memory buffer
        byte[] pdfBuffer = document.WriteToMemory();

        // inform the browser about the binary data format
        HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");

        // let the browser know how to open the PDF document and the file name
        HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=DigitalSignatures.pdf; size={0}",

        // write the PDF buffer to HTTP response

        // call End() method of HTTP response to stop ASP.NET page processing
See Also

Other Resources