9-4-2019 15:29:56
Chỉ cần chọn file sau đó lấy thông tin chữ ký số tử Token USB ghi vào trong file pdf thông qua PdfStamper và PdfSignatureAppearance
========
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
if (ofd.FileName != "")
{
string new_file_pdf = ofd.FileName.ToLower().Replace(".pdf", "_signed.pdf");
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(store.Certificates, null, null, X509SelectionFlag.SingleSelection);
X509Certificate2 cert = sel[0];
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.RawData) };
IExternalSignature externalSignature = new X509Certificate2Signature(cert, "SHA-1");
PdfReader pdfReader = new PdfReader(ofd.FileName);
//StreamWriter signedPdf = new StreamWriter(File.Open("D:\\sign2.pdf", FileMode.Create), Encoding.Unicode);
FileStream signedPdf = new FileStream(new_file_pdf, FileMode.Create);
PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0');
PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;
BaseFont bf = BaseFont.CreateFont(Environment.GetEnvironmentVariable("windir") + @"\fonts\ARIALUNI.TTF", BaseFont.IDENTITY_H, true);
Font NormalFont = new iTextSharp.text.Font(bf, 11, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);
//signatureAppearance.SignatureGraphic = Image.GetInstance("d:\\sign.png");
signatureAppearance.SetVisibleSignature(new Rectangle(0, 0, 300, 80), pdfReader.NumberOfPages, "Signature");
signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION;
signatureAppearance.Layer2Font = NormalFont;
MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, null, null, null, 0, CryptoStandard.CMS);
MessageBox.Show("Xong ! " + new_file_pdf);
}
http://coder.awas.vn/downloads.ashx?id=6905d7a006614d429c86412ca793ec93