public void EgsCheckTest4() { Document document = new Document(); PdfAWriter writer = PdfAWriter.GetInstance(document, new FileStream(OUT + "pdfa2egsCheckTest4.pdf", FileMode.Create), 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)); PdfContentByte canvas = writer.DirectContent; PdfGState gs = new PdfGState(); gs.Put(PdfName.TR2, new PdfName("Test")); gs.Put(PdfName.HTP, new PdfName("Test")); canvas.SaveState(); canvas.SetGState(gs); canvas.RestoreState(); canvas.MoveTo(writer.PageSize.Left, writer.PageSize.Bottom); canvas.LineTo(writer.PageSize.Right, writer.PageSize.Bottom); canvas.LineTo(writer.PageSize.Right, writer.PageSize.Top); canvas.Fill(); 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); bool exceptionThrown = false; try { document.Close(); } catch (PdfAConformanceException e) { if (e.GetObject() == gs) { exceptionThrown = true; } } if (!exceptionThrown) Assert.Fail("PdfAConformanceException should be thrown."); }
public void EgsCheckTest3() { Document document = new Document(); PdfAWriter writer = PdfAWriter.GetInstance(document, new FileStream(OUT + "pdfa2EgsCheckTest3.pdf", FileMode.Create), PdfAConformanceLevel.PDF_A_2A); writer.CreateXmpMetadata(); document.Open(); Font font = FontFactory.GetFont(RESOURCES + "FreeMonoBold.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED, 12); document.Add(new Paragraph("Hello World", font)); PdfContentByte canvas = writer.DirectContent; PdfGState gs = new PdfGState(); PdfDictionary dict = new PdfDictionary(); dict.Put(PdfName.HALFTONETYPE, new PdfNumber(5)); dict.Put(PdfName.HALFTONENAME, new PdfName("Test")); gs.Put(PdfName.HT, dict); canvas.SetGState(gs); bool exceptionThrown = false; try { document.Close(); } catch (PdfAConformanceException e) { exceptionThrown = true; } if (!exceptionThrown) Assert.Fail("PdfAConformanceException should be thrown."); }
public void TransparencyCheckTest4() { // step 1 Document document = new Document(new Rectangle(850, 600)); // step 2 PdfAWriter writer = PdfAWriter.GetInstance(document, new FileStream(OUT + "pdfa2TransperancyCheckTest4.pdf", FileMode.Create), PdfAConformanceLevel.PDF_A_2B); writer.CreateXmpMetadata(); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // add the clipped image Image img = Image.GetInstance(RESOURCES + "img/bruno_ingeborg.jpg"); float w = img.ScaledWidth; float h = img.ScaledHeight; canvas.Ellipse(1, 1, 848, 598); canvas.Clip(); canvas.NewPath(); canvas.AddImage(img, w, 0, 0, h, 0, -600); // Create a transparent PdfTemplate PdfTemplate t2 = writer.DirectContent.CreateTemplate(850, 600); PdfTransparencyGroup transGroup = new PdfTransparencyGroup(); transGroup.Put(PdfName.CS, PdfName.DEVICEGRAY); transGroup.Isolated = true; transGroup.Knockout = false; t2.Group = transGroup; // Add transparent ellipses to the template int gradationStep = 30; float[] gradationRatioList = new float[gradationStep]; for (int i = 0; i < gradationStep; i++) { gradationRatioList[i] = 1 - (float) Math.Sin(Math.PI/180*90.0f/gradationStep*(i + 1)); } for (int i = 1; i < gradationStep + 1; i++) { t2.SetLineWidth(5*(gradationStep + 1 - i)); t2.SetGrayStroke(gradationRatioList[gradationStep - i]); t2.Ellipse(0, 0, 850, 600); t2.Stroke(); } // Create an image mask for the direct content PdfDictionary maskDict = new PdfDictionary(); maskDict.Put(PdfName.TYPE, PdfName.MASK); maskDict.Put(PdfName.S, new PdfName("Luminosity")); maskDict.Put(new PdfName("G"), t2.IndirectReference); PdfGState gState = new PdfGState(); gState.Put(PdfName.SMASK, maskDict); canvas.SetGState(gState); canvas.AddTemplate(t2, 0, 0); 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); // step 5 document.Close(); }
virtual public void TransparencyCheckTest3() { string filename = OUT + "TransparencyCheckTest3.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); PdfContentByte canvas = writer.DirectContent; PdfGState gs = new PdfGState(); gs.Put(PdfName.SMASK, PdfName.NONE); canvas.SetGState(gs); document.Close(); }
virtual public void TransparencyCheckTest2() { string filename = OUT + "TransparencyCheckTest2.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); PdfContentByte canvas = writer.DirectContent; PdfGState gs = new PdfGState(); gs.Put(PdfName.SMASK, new PdfName("Test")); canvas.SetGState(gs); bool exceptionThrown = false; try { document.Close(); } catch (PdfAConformanceException e) { if (e.GetObject().Equals(gs)) { exceptionThrown = true; } } if (!exceptionThrown) Assert.Fail("PdfAConformanceException should be thrown."); }
// --------------------------------------------------------------------------- public byte[] CreatePdf() { using (MemoryStream ms = new MemoryStream()) { // step 1 using (Document document = new Document(new Rectangle(850, 600))) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, ms); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // add the clipped image Image img = Image.GetInstance( Path.Combine(Utility.ResourceImage, RESOURCE) ); float w = img.ScaledWidth; float h = img.ScaledHeight; canvas.Ellipse(1, 1, 848, 598); canvas.Clip(); canvas.NewPath(); canvas.AddImage(img, w, 0, 0, h, 0, -600); // Create a transparent PdfTemplate PdfTemplate t2 = writer.DirectContent.CreateTemplate(850, 600); PdfTransparencyGroup transGroup = new PdfTransparencyGroup(); transGroup.Put( PdfName.CS, PdfName.DEVICEGRAY); transGroup.Isolated = true; transGroup.Knockout = false; t2.Group = transGroup; // Add transparent ellipses to the template int gradationStep = 30; float[] gradationRatioList = new float[gradationStep]; for(int i = 0; i < gradationStep; i++) { /* * gotta love .NET, guess they forgot to copy java.lang.Math.toRadians */ double radians = (Math.PI / 180) * 90.0f / gradationStep * (i + 1); gradationRatioList[i] = 1 - (float) Math.Sin(radians); } for(int i = 1; i < gradationStep + 1; i++) { t2.SetLineWidth(5 * (gradationStep + 1 - i)); t2.SetGrayStroke(gradationRatioList[gradationStep - i]); t2.Ellipse(0, 0, 850, 600); t2.Stroke(); } // Create an image mask for the direct content PdfDictionary maskDict = new PdfDictionary(); maskDict.Put(PdfName.TYPE, PdfName.MASK); maskDict.Put(PdfName.S, new PdfName("Luminosity")); maskDict.Put(new PdfName("G"), t2.IndirectReference); PdfGState gState = new PdfGState(); gState.Put(PdfName.SMASK, maskDict ); canvas.SetGState(gState); canvas.AddTemplate(t2, 0, 0); } return ms.ToArray(); } }