virtual public void TestPdfAStamper1() { string filename = OUT + "TestPdfAStamper1.pdf"; FileStream fos = new FileStream(filename, FileMode.Create); Document document = new Document(); PdfAWriter writer = PdfAWriter.GetInstance(document, fos, PdfAConformanceLevel.PDF_A_1B); writer.CreateXmpMetadata(); document.Open(); Font font = FontFactory.GetFont(RESOURCES + "FreeMonoBold.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED, 12); document.Add(new Paragraph("Hello World", font)); FileStream iccProfileFileStream = File.Open(RESOURCES + "sRGB Color Space Profile.icm", FileMode.Open, FileAccess.Read, FileShare.Read); ICC_Profile icc = ICC_Profile.GetInstance(iccProfileFileStream); iccProfileFileStream.Close(); writer.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc); document.Close(); PdfReader reader = new PdfReader(filename); FileStream stamperFileStream = new FileStream(OUT + "TestPdfAStamper1_.pdf", FileMode.Create); PdfAStamper stamper = new PdfAStamper(reader, stamperFileStream, PdfAConformanceLevel.PDF_A_1B); stamper.Close(); stamperFileStream.Close(); reader.Close(); }
public virtual void FileSpecCheckTest7() { FileStream inPdf = new FileStream(RESOURCES + "fileSpec.pdf", FileMode.Open); MemoryStream xml = new MemoryStream(); StreamWriter sr = new StreamWriter(xml); sr.Write("<foo><foo2>Hello world</foo2></foo>"); sr.Close(); MemoryStream output = new MemoryStream(); PdfReader reader = new PdfReader(inPdf); PdfAStamper stamper = new PdfAStamper(reader, output, PdfAConformanceLevel.PDF_A_3B); stamper.CreateXmpMetadata(); PdfDictionary embeddedFileParams = new PdfDictionary(); embeddedFileParams.Put(PdfName.MODDATE, new PdfDate()); PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(stamper.Writer, "foo", "foo", xml.ToArray(), "text/xml", embeddedFileParams, 0); fs.Put(PdfName.AFRELATIONSHIP, AFRelationshipValue.Source); stamper.AddFileAttachment("description", fs); stamper.Close(); reader.Close(); }
virtual public void ManipulatePdfAutomaticTest() { String fileName = "xmp_metadata_updated.pdf"; PdfReader reader = new PdfReader(CMP_FOLDER + "pdf_metadata.pdf"); PdfStamper stamper = new PdfAStamper(reader, new FileStream(OUT_FOLDER + fileName, FileMode.Create), PdfAConformanceLevel.PDF_A_1A); stamper.Close(); reader.Close(); CompareResults(fileName, fileName); }
public void TestPdfAStamper2() { string filename = OUT + "TestPdfAStamper2.pdf"; FileStream fos = new FileStream(filename, FileMode.Create); Document document = new Document(); PdfAWriter writer = PdfAWriter.GetInstance(document, fos, PdfAConformanceLevel.PDF_A_2B); writer.CreateXmpMetadata(); document.Open(); Font font = FontFactory.GetFont(RESOURCES + "FreeMonoBold.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED, 12); document.Add(new Paragraph("Hello World", font)); FileStream iccProfileFileStream = new FileStream(RESOURCES + "sRGB Color Space Profile.icm", FileMode.Open); ICC_Profile icc = ICC_Profile.GetInstance(iccProfileFileStream); iccProfileFileStream.Close(); writer.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc); document.Close(); PdfReader reader = new PdfReader(filename); bool exceptionThrown = false; try { FileStream stamperFileStream = new FileStream(OUT + "TestPdfAStamper2_.pdf", FileMode.Create); PdfAStamper stamper = new PdfAStamper(reader, stamperFileStream, PdfAConformanceLevel.PDF_A_1B); stamper.Close(); stamperFileStream.Close(); } catch (PdfAConformanceException) { exceptionThrown = true; } reader.Close(); if (!exceptionThrown) { Assert.Fail("PdfAConformance exception should be thrown"); } }
virtual public void ManipulatePdfTest() { String fileName = "xmp_metadata_added.pdf"; PdfReader reader = new PdfReader(CMP_FOLDER + "pdf_metadata.pdf"); PdfStamper stamper = new PdfAStamper(reader, new FileStream(OUT_FOLDER + fileName, FileMode.Create), PdfAConformanceLevel.PDF_A_1A); stamper.CreateXmpMetadata(); XmpWriter xmp = stamper.XmpWriter; DublinCoreProperties.AddSubject(xmp.XmpMeta, "Hello World"); DublinCoreProperties.AddSubject(xmp.XmpMeta, "XMP & Metadata"); DublinCoreProperties.AddSubject(xmp.XmpMeta, "Metadata"); PdfProperties.SetVersion(xmp.XmpMeta, "1.4"); stamper.Close(); reader.Close(); CompareResults(fileName, fileName); }
virtual public void TestPdfAStamper3() { string filename = OUT + "TestPdfAStamper3.pdf"; FileStream fos = new FileStream(filename, FileMode.Create); Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, fos); writer.CreateXmpMetadata(); document.Open(); Font font = FontFactory.GetFont(RESOURCES + "FreeMonoBold.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED, 12); document.Add(new Paragraph("Hello World", font)); document.Close(); PdfReader reader = new PdfReader(filename); bool exceptionThrown = false; try { FileStream stamperFileStream = new FileStream(OUT + "TestPdfAStamper3_.pdf", FileMode.Create); PdfAStamper stamper = new PdfAStamper(reader, stamperFileStream, PdfAConformanceLevel.PDF_A_1A); stamper.Close(); stamperFileStream.Close(); } catch (PdfAConformanceException) { exceptionThrown = true; } reader.Close(); if (!exceptionThrown) { Assert.Fail("PdfAConformance exception should be thrown"); } }
public void Sign(SingInfo singInfo) { try { var metaData = new MetaData { Author = singInfo.Author, Title = singInfo.Title, Subject = singInfo.Subject, Keywords = singInfo.Keywords, Creator = singInfo.Creator, Producer = singInfo.Producer }; var store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); if (store.Certificates.Count == 0) { Log.Application.Error("Certificados Locais do usuario indisponiveis."); } var posicaoCertificado = 0; var cert = store.Certificates[posicaoCertificado]; Log.Application.InfoFormat( "Certificado Selecionado {0} Serial {1} Subject {2}", cert.IssuerName.Name, cert.SerialNumber, cert.SubjectName); var cp = new Org.BouncyCastle.X509.X509CertificateParser(); var chain = new[] { cp.ReadCertificate(cert.RawData) }; IExternalSignature externalSignature = new X509Certificate2Signature(cert, "SHA-1"); var rsa = (RSACryptoServiceProvider)cert.PrivateKey; var secureString = new SecureString(); secureString.AppendChar(char.Parse("1")); secureString.AppendChar(char.Parse("2")); secureString.AppendChar(char.Parse("3")); secureString.AppendChar(char.Parse("4")); var cspp = new CspParameters(); cspp.KeyContainerName = rsa.CspKeyContainerInfo.KeyContainerName; cspp.ProviderName = rsa.CspKeyContainerInfo.ProviderName; cspp.Flags = CspProviderFlags.UseUserProtectedKey; cspp.KeyPassword = secureString; cspp.ProviderType = rsa.CspKeyContainerInfo.ProviderType; cspp.Flags = CspProviderFlags.NoPrompt; RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider(cspp); rsa.PersistKeyInCsp = true; PdfReader reader = new PdfReader(singInfo.SourcePdf); PdfAStamper stamper = PdfAStamper.CreateSignature( reader, new FileStream(singInfo.TargetPdf, FileMode.Create, FileAccess.Write), '\0', PdfAConformanceLevel.PDF_A_2A); PdfSignatureAppearance appearance = stamper.SignatureAppearance; var caminhoFonte2 = @"C:\Windows\Fonts\cour.ttf"; var caminhoGrafico = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "key.jpg"); appearance.Layer2Font = FontFactory.GetFont(caminhoFonte2, BaseFont.WINANSI, BaseFont.EMBEDDED, 8); appearance.Reason = singInfo.SignatureReason; appearance.Contact = singInfo.SignatureContact; appearance.Location = singInfo.SignatureLocation; appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION; appearance.CertificationLevel = PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED; appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(600, 100, 0, 0), 1, "Assinatura"); MakeSignature.SignDetached(appearance, externalSignature, chain, null, null, null, 0, CryptoStandard.CMS); stamper.Close(); } catch (Exception exception) { Log.Application.Error("Falha ao assinar! ", exception); throw; } }