public virtual void TransparentTextWithGroupColorSpaceTest() { String outPdf = destinationFolder + "transparencyAndCS.pdf"; String cmpPdf = cmpFolder + "cmp_transparencyAndCS.pdf"; PdfDocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformanceLevel.PDF_A_3B, null); PdfPage page = pdfDocument.AddNewPage(); PdfFont font = PdfFontFactory.CreateFont(sourceFolder + "FreeSans.ttf", "Identity-H", true); PdfCanvas canvas = new PdfCanvas(page); canvas.SaveState(); PdfExtGState state = new PdfExtGState(); state.SetFillOpacity(0.6f); canvas.SetExtGState(state); canvas.BeginText().MoveText(36, 750).SetFontAndSize(font, 16).ShowText("Page 1 with transparency").EndText ().RestoreState(); PdfDictionary groupObj = new PdfDictionary(); groupObj.Put(PdfName.CS, new PdfCieBasedCs.CalGray(GetCalGrayArray()).GetPdfObject()); groupObj.Put(PdfName.Type, PdfName.Group); groupObj.Put(PdfName.S, PdfName.Transparency); page.GetPdfObject().Put(PdfName.Group, groupObj); PdfPage page2 = pdfDocument.AddNewPage(); canvas = new PdfCanvas(page2); canvas.SaveState(); canvas.BeginText().MoveText(36, 750).SetFontAndSize(font, 16).ShowText("Page 2 without transparency").EndText ().RestoreState(); pdfDocument.Close(); CompareResult(outPdf, cmpPdf); }
/// <summary> /// Realizes the opacity for non-stroke operations. /// </summary> public void RealizeFillOpacity(double opacity) { PdfExtGState extGState = this.writer.Owner.ExtGStateTable.GetExtGStateNonStroke(opacity); string gsName = this.writer.Resources.AddExtGState(extGState); this.writer.WriteLiteral(gsName + " gs\n"); }
public virtual void NestedXObjectWithTransparencyTest() { NUnit.Framework.Assert.That(() => { PdfWriter writer = new PdfWriter(new MemoryStream()); PdfDocument pdfDocument = new PdfADocument(writer, PdfAConformanceLevel.PDF_A_3B, null); PdfFormXObject form1 = new PdfFormXObject(new Rectangle(0, 0, 50, 50)); PdfCanvas canvas1 = new PdfCanvas(form1, pdfDocument); canvas1.SaveState(); PdfExtGState state = new PdfExtGState(); state.SetFillOpacity(0.6f); canvas1.SetExtGState(state); canvas1.Circle(25, 25, 10); canvas1.Fill(); canvas1.RestoreState(); canvas1.Release(); form1.Flush(); //Create form XObject and flush to document. PdfFormXObject form = new PdfFormXObject(new Rectangle(0, 0, 50, 50)); PdfCanvas canvas = new PdfCanvas(form, pdfDocument); canvas.Rectangle(10, 10, 30, 30); canvas.Stroke(); canvas.AddXObject(form1, 0, 0); canvas.Release(); form.Flush(); //Create page1 and add forms to the page. PdfPage page1 = pdfDocument.AddNewPage(); canvas = new PdfCanvas(page1); canvas.AddXObject(form, 0, 0); canvas.Release(); pdfDocument.Close(); } , NUnit.Framework.Throws.InstanceOf <PdfAConformanceException>().With.Message.EqualTo(MessageFormatUtil.Format(PdfAConformanceException.THE_DOCUMENT_DOES_NOT_CONTAIN_A_PDFA_OUTPUTINTENT_BUT_PAGE_CONTAINS_TRANSPARENCY_AND_DOES_NOT_CONTAIN_BLENDING_COLOR_SPACE))) ; }
public void Stamp(string[] sources, string stampFile, float opacity, float x, float y) { byte[] imgdata = File.ReadAllBytes(stampFile); ImageData img = ImageDataFactory.Create(imgdata); if (sources.Count() > 2) { foreach (var item in sources.Skip(2)) { if (File.Exists(item)) { using (PdfDocument pdf = new PdfDocument(new PdfReader(item), new PdfWriter(item.Replace(".pdf", "_stamp.pdf")))) { for (int i = 1; i <= pdf.GetNumberOfPages(); i++) { PdfPage page = pdf.GetPage(i); PdfExtGState tranState = new PdfExtGState(); tranState.SetFillOpacity(opacity); PdfCanvas canvas = new PdfCanvas(pdf.GetPage(i)); canvas.SaveState().SetExtGState(tranState); canvas.AddImage(img, x, y, false); canvas.RestoreState(); } } } } } }
public virtual void ManipulatePdf(String src, String dest) { //Initialize PDF document PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); Document document = new Document(pdfDoc); Rectangle pageSize; PdfCanvas canvas; int n = pdfDoc.GetNumberOfPages(); for (int i = 1; i <= n; i++) { PdfPage page = pdfDoc.GetPage(i); pageSize = page.GetPageSize(); canvas = new PdfCanvas(page); //Draw header text canvas.BeginText().SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 7).MoveText(pageSize .GetWidth() / 2 - 24, pageSize.GetHeight() - 10).ShowText("I want to believe").EndText(); //Draw footer line canvas.SetStrokeColor(ColorConstants.BLACK).SetLineWidth(.2f).MoveTo(pageSize.GetWidth() / 2 - 30, 20).LineTo(pageSize .GetWidth() / 2 + 30, 20).Stroke(); //Draw page number canvas.BeginText().SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 7).MoveText(pageSize .GetWidth() / 2 - 7, 10).ShowText(i.ToString()).ShowText(" of ").ShowText(n.ToString()).EndText(); //Draw watermark Paragraph p = new Paragraph("CONFIDENTIAL").SetFontSize(60); canvas.SaveState(); PdfExtGState gs1 = new PdfExtGState().SetFillOpacity(0.2f); canvas.SetExtGState(gs1); document.ShowTextAligned(p, pageSize.GetWidth() / 2, pageSize.GetHeight() / 2, pdfDoc.GetPageNumber(page), TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45); canvas.RestoreState(); } pdfDoc.Close(); }
private void DoAddWatermark(PdfDocument pdfDocument, IWatermarkSettings watermarkSettings, Func <PdfPage, PdfDocument, PdfCanvas> GetPdfCanvas) { if (!watermarkSettings.Enabled) { return; } _logger.Debug("File: " + Path.GetFullPath(watermarkSettings.File)); var nDocument = pdfDocument.GetNumberOfPages(); var watermarkReader = new PdfReader(watermarkSettings.File); var watermarkDocument = new PdfDocument(watermarkReader); var nWatermark = watermarkDocument.GetNumberOfPages(); var watermarkPageMapper = new WatermarkPageMapper(nWatermark, watermarkSettings); for (var documentPageNumber = 1; documentPageNumber <= nDocument; documentPageNumber++) { if (!watermarkPageMapper.GetWatermarkPageNumber(documentPageNumber, out var watermarkPageNumber)) { continue; } var watermarkPage = watermarkDocument.GetPage(watermarkPageNumber); var documentPage = pdfDocument.GetPage(documentPageNumber); var watermarkPageSize = watermarkPage.GetPageSize(); var watermarkPageRotation = watermarkPage.GetRotation(); var documentPageSize = documentPage.GetPageSize(); if (documentPage.GetRotation() == 90 || documentPage.GetRotation() == 270) { //Turn with document page... //* watermarkPageRotation += 90; watermarkPageRotation = watermarkPageRotation % 360; //*/ documentPageSize = new Rectangle(documentPageSize.GetHeight(), documentPageSize.GetWidth()); } var pdfCanvas = GetPdfCanvas(documentPage, pdfDocument); pdfCanvas.SaveState(); var state = new PdfExtGState(); var opacity = watermarkSettings.Opacity / 100.0f; state.SetFillOpacity(opacity); pdfCanvas.SetExtGState(state); var watermarkCopy = watermarkPage.CopyTo(pdfDocument); var watermarkXObject = new PdfFormXObject(watermarkCopy); AddPageWithRotationAndScaling(pdfCanvas, documentPageSize, watermarkXObject, watermarkPageSize, watermarkPageRotation, watermarkSettings.FitToPage); pdfCanvas.RestoreState(); } watermarkReader.Close(); }
public void ManipulatePdf( string pdfSrc, string pdfDest, string text, string imageName, float fontSize, string fontName) { MemoryStream pdfStream = new(File.ReadAllBytes(pdfSrc)); PdfDocument pdfDoc = new(new PdfReader(pdfStream), new PdfWriter(pdfDest)); Document doc = new(pdfDoc); PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(fontName)); Paragraph paragraph = new Paragraph(text).SetFont(font).SetFontSize(fontSize).SetFontColor(iText.Kernel.Colors.ColorConstants.CYAN); //DrawText(text, new Font(StandardFonts.HELVETICA, 14.0f), System.Drawing.Color.Aqua, 500, IMG + imageName); //ImageData img = ImageDataFactory.Create(IMG + imageName); //float w = img.GetWidth(); //float h = img.GetHeight(); float radio = 20.2f; PdfExtGState gs1 = new PdfExtGState().SetFillOpacity(0.3f); // Implement transformation matrix usage in order to scale image for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++) { PdfPage pdfPage = pdfDoc.GetPage(i); Rectangle pageSize = pdfPage.GetPageSize(); float x = (pageSize.GetLeft() + pageSize.GetRight()) / 2; float y = (pageSize.GetTop() + pageSize.GetBottom()) / 2; PdfCanvas over = new PdfCanvas(pdfPage); over.SaveState(); over.SetExtGState(gs1); //if (i % 2 == 1) //{ // doc.ShowTextAligned(paragraph, x, y-200, i, TextAlignment.CENTER, VerticalAlignment.TOP, 10); // doc.ShowTextAligned(paragraph, x, y, i, TextAlignment.CENTER, VerticalAlignment.TOP, 10); // } // else //{ doc.ShowTextAligned(paragraph, x - 200, y + 160, i, TextAlignment.CENTER, VerticalAlignment.TOP, radio); doc.ShowTextAligned(paragraph, x - 100, y + 80, i, TextAlignment.CENTER, VerticalAlignment.TOP, radio); doc.ShowTextAligned(paragraph, x, y, i, TextAlignment.CENTER, VerticalAlignment.TOP, radio); doc.ShowTextAligned(paragraph, x + 100, y - 80, i, TextAlignment.CENTER, VerticalAlignment.TOP, radio); doc.ShowTextAligned(paragraph, x + 200, y - 160, i, TextAlignment.CENTER, VerticalAlignment.TOP, radio); //over.AddImageWithTransformationMatrix(img, w, 0, 0, h, x - (w / 2), y - (h / 80), true); //over.AddImageWithTransformationMatrix(img, w, 0, 0, h, x - (w / 2), y - (h / 60), true); //over.AddImageWithTransformationMatrix(img, w, 0, 0, h, x - (w / 2), y - (h / 40), true); //over.AddImageWithTransformationMatrix(img, w, 0, 0, h, x - (w / 2), y - (h / 2), true); //} over.RestoreState(); } doc.Close(); }
PdfTilingPattern BuildPattern(ImageBrush brush, XMatrix transform) { // Bounding box lays always at (0,0) XRect bbox = new XRect(0, 0, brush.Viewport.Width, brush.Viewport.Height); XMatrix matrix = transform; matrix.Prepend(new XMatrix(1, 0, 0, 1, brush.Viewport.X, brush.Viewport.Y)); if (brush.Transform != null) { matrix.Prepend(new XMatrix(brush.Transform.Matrix.m11, brush.Transform.Matrix.m12, brush.Transform.Matrix.m21, brush.Transform.Matrix.m22, brush.Transform.Matrix.offsetX, brush.Transform.Matrix.offsetY)); } // HACK by [email protected] // Avoid extra thin lines at the right and at the bottom of original image double xStep = brush.Viewport.Width + 1; double yStep = brush.Viewport.Height + 1; PdfTilingPattern pattern = Context.PdfDocument.Internals.CreateIndirectObject <PdfTilingPattern>(); pattern.Elements.SetInteger(PdfTilingPattern.Keys.PatternType, 1); // Tiling pattern.Elements.SetInteger(PdfTilingPattern.Keys.PaintType, 1); // Color pattern.Elements.SetInteger(PdfTilingPattern.Keys.TilingType, 3); // Constant spacing and faster tiling pattern.Elements.SetMatrix(PdfTilingPattern.Keys.Matrix, matrix); pattern.Elements.SetRectangle(PdfTilingPattern.Keys.BBox, new PdfRectangle(bbox)); pattern.Elements.SetReal(PdfTilingPattern.Keys.XStep, xStep); pattern.Elements.SetReal(PdfTilingPattern.Keys.YStep, yStep); // Set extended graphic state like Acrobat do PdfExtGState pdfExtGState = Context.PdfDocument.Internals.CreateIndirectObject <PdfExtGState>(); pdfExtGState.SetDefault1(); PdfFormXObject pdfForm = BuildForm(brush); PdfContentWriter writer = new PdfContentWriter(Context, pattern); writer.BeginContentRaw(); // Acrobat 8 clips to bounding box, so do we //writer.WriteClip(bbox); XMatrix transformation = new XMatrix(); double dx = brush.Viewport.Width / brush.Viewbox.Width * 96 / pdfForm.DpiX; double dy = brush.Viewport.Height / brush.Viewbox.Height * 96 / pdfForm.DpiY; transformation = new XMatrix(dx, 0, 0, dy, 0, 0); writer.WriteMatrix(transformation); writer.WriteGraphicsState(pdfExtGState); string name = writer.Resources.AddForm(pdfForm); writer.WriteLiteral(name + " Do\n"); writer.EndContent(); return(pattern); }
public virtual void TestInheritedResources() { PdfDocument pdfDocument = new PdfDocument(new PdfReader(sourceFolder + "simpleInheritedResources.pdf")); PdfPage page = pdfDocument.GetPage(1); PdfDictionary dict = page.GetResources().GetResource(PdfName.ExtGState); NUnit.Framework.Assert.AreEqual(2, dict.Size()); PdfExtGState gState = new PdfExtGState((PdfDictionary)dict.Get(new PdfName("Gs1"))); NUnit.Framework.Assert.AreEqual(10, gState.GetLineWidth()); }
public byte[] AdicionarMarcaDagua( byte[] arquivo, string[] texto, int tamanhoFonte = 40, string corHexa = "ff0000", int anguloTextoGraus = 30, float opacidade = 0.1f, int repeticoes = 3 ) { // validações Validations.ArquivoValido(arquivo); using (MemoryStream readingStream = new MemoryStream(arquivo)) using (PdfReader pdfReader = new PdfReader(readingStream)) using (MemoryStream writingStream = new MemoryStream()) using (PdfWriter pdfWriter = new PdfWriter(writingStream)) using (PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter)) using (Document document = new Document(pdfDocument)) { Rectangle pageSize; PdfCanvas canvas; int n = pdfDocument.GetNumberOfPages(); float angleRads = (anguloTextoGraus * (float)Math.PI) / 180; for (int pageCounter = 1; pageCounter <= n; pageCounter++) { PdfPage page = pdfDocument.GetPage(pageCounter); pageSize = page.GetPageSize(); canvas = new PdfCanvas(page); int k = 1; for (int repetitionCounter = 0; repetitionCounter < repeticoes; repetitionCounter++) { for (int textCounter = 0; textCounter < texto.Length; textCounter++) { // Desenhar Marca D'dágua Paragraph p = new Paragraph(texto[textCounter]) .SetFontSize(tamanhoFonte) .SetFontColor(Hexa2Rgb(corHexa)); canvas.SaveState(); PdfExtGState gs1 = new PdfExtGState().SetFillOpacity(opacidade); canvas.SetExtGState(gs1); document.ShowTextAligned( p, pageSize.GetWidth() / 2, (pageSize.GetHeight() / ((texto.Length * repeticoes) + 1)) * k++, pdfDocument.GetPageNumber(page), TextAlignment.CENTER, VerticalAlignment.MIDDLE, angleRads ); } } canvas.RestoreState(); } pdfDocument.Close(); return(writingStream.ToArray()); } }
/// <summary>Operations to perform before drawing an element.</summary> /// <remarks> /// Operations to perform before drawing an element. /// This includes setting stroke color and width, fill color. /// </remarks> /// <param name="context">the svg draw context</param> internal virtual void PreDraw(SvgDrawContext context) { if (this.attributesAndStyles != null) { PdfCanvas currentCanvas = context.GetCurrentCanvas(); if (!partOfClipPath) { { // fill String fillRawValue = GetAttribute(SvgConstants.Attributes.FILL); this.doFill = !SvgConstants.Values.NONE.EqualsIgnoreCase(fillRawValue); if (doFill && CanElementFill()) { Color color = ColorConstants.BLACK; if (fillRawValue != null) { color = WebColors.GetRGBColor(fillRawValue); } currentCanvas.SetFillColor(color); } } { // stroke String strokeRawValue = GetAttribute(SvgConstants.Attributes.STROKE); if (!SvgConstants.Values.NONE.EqualsIgnoreCase(strokeRawValue)) { DeviceRgb rgbColor = WebColors.GetRGBColor(strokeRawValue); if (strokeRawValue != null && rgbColor != null) { currentCanvas.SetStrokeColor(rgbColor); String strokeWidthRawValue = GetAttribute(SvgConstants.Attributes.STROKE_WIDTH); float strokeWidth = 1f; if (strokeWidthRawValue != null) { strokeWidth = CssUtils.ParseAbsoluteLength(strokeWidthRawValue); } currentCanvas.SetLineWidth(strokeWidth); doStroke = true; } } } { // opacity String opacityValue = GetAttribute(SvgConstants.Attributes.FILL_OPACITY); if (opacityValue != null && !SvgConstants.Values.NONE.EqualsIgnoreCase(opacityValue)) { PdfExtGState gs1 = new PdfExtGState(); gs1.SetFillOpacity(float.Parse(opacityValue, System.Globalization.CultureInfo.InvariantCulture)); currentCanvas.SetExtGState(gs1); } } } } }
public void RealizeBrush(XBrush brush, PdfColorMode colorMode) { if (brush is XSolidBrush) { XColor color = ((XSolidBrush)brush).Color; color = ColorSpaceHelper.EnsureColorMode(colorMode, color); if (colorMode != PdfColorMode.Cmyk) { if (this.realizedFillColor.Rgb != color.Rgb) { this.renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Rgb)); this.renderer.Append(" rg\n"); } } else { if (!ColorSpaceHelper.IsEqualCmyk(this.realizedFillColor, color)) { this.renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Cmyk)); this.renderer.Append(" k\n"); } } if (this.renderer.Owner.Version >= 14 && this.realizedFillColor.A != color.A) { PdfExtGState extGState = this.renderer.Owner.ExtGStateTable.GetExtGStateNonStroke(color.A); string gs = this.renderer.Resources.AddExtGState(extGState); this.renderer.AppendFormat("{0} gs\n", gs); // Must create transparany group if (this.renderer.page != null && color.A < 1) { this.renderer.page.transparencyUsed = true; } } this.realizedFillColor = color; } else if (brush is XLinearGradientBrush) { XMatrix matrix = this.renderer.defaultViewMatrix; matrix.Prepend(this.Transform); PdfShadingPattern pattern = new PdfShadingPattern(this.renderer.Owner); pattern.SetupFromBrush((XLinearGradientBrush)brush, matrix); string name = this.renderer.Resources.AddPattern(pattern); this.renderer.AppendFormat("/Pattern cs\n", name); this.renderer.AppendFormat("{0} scn\n", name); // Invalidate fill color this.realizedFillColor = XColor.Empty; } }
/// <summary> /// Gets a PdfExtGState with the key 'ca' set to the specified alpha value. /// </summary> public PdfExtGState GetExtGStateNonStroke(double alpha) { string key = MakeKey(alpha); PdfExtGState extGState = this.nonStrokeAlphaValues[key] as PdfExtGState; if (extGState == null) { extGState = new PdfExtGState(this.document); extGState.Elements[PdfExtGState.Keys.ca] = new PdfReal(alpha); this.nonStrokeAlphaValues[key] = extGState; } return(extGState); }
private void RealizeFillColor(XColor color, bool overPrint, PdfColorMode colorMode) { color = ColorSpaceHelper.EnsureColorMode(colorMode, color); switch (color.ColorSpace) { case XColorSpace.Rgb: if (_realizedFillColor.IsEmpty || _realizedFillColor.Rgb != color.Rgb) { _renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Rgb)); _renderer.Append(" rg\n"); } break; case XColorSpace.Cmyk: if (_realizedFillColor.IsEmpty || !ColorSpaceHelper.IsEqualCmyk(_realizedFillColor, color)) { _renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Cmyk)); _renderer.Append(" k\n"); } break; case XColorSpace.GrayScale: if (_realizedFillColor.IsEmpty || _realizedFillColor.GS != color.GS) { _renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Undefined)); _renderer.Append(" g\n"); } break; default: break; } if (_renderer.Owner.Version >= 14 && color.ColorSpace != XColorSpace.GrayScale && (_realizedFillColor.A != color.A || _realizedNonStrokeOverPrint != overPrint)) { PdfExtGState extGState = _renderer.Owner.ExtGStateTable.GetExtGStateNonStroke(color.A, overPrint); string gs = _renderer.Resources.AddExtGState(extGState); _renderer.AppendFormatString("{0} gs\n", gs); // Must create transparency group. if (_renderer._page != null && color.A < 1) { _renderer._page.TransparencyUsed = true; } } _realizedFillColor = color; _realizedNonStrokeOverPrint = overPrint; }
public virtual void ResourcesTest2() { MemoryStream baos = new MemoryStream(); PdfWriter writer = new PdfWriter(baos); PdfDocument document = new PdfDocument(writer); PdfPage page = document.AddNewPage(); PdfExtGState egs1 = new PdfExtGState(); PdfExtGState egs2 = new PdfExtGState(); PdfResources resources = page.GetResources(); resources.AddExtGState(egs1); resources.AddExtGState(egs2); document.Close(); PdfReader reader = new PdfReader(new MemoryStream(baos.ToArray())); document = new PdfDocument(reader, new PdfWriter(new ByteArrayOutputStream())); page = document.GetPage(1); resources = page.GetResources(); ICollection <PdfName> names = resources.GetResourceNames(); NUnit.Framework.Assert.AreEqual(2, names.Count); String[] expectedNames = new String[] { "Gs1", "Gs2" }; int i = 0; foreach (PdfName name in names) { NUnit.Framework.Assert.AreEqual(expectedNames[i++], name.GetValue()); } PdfExtGState egs3 = new PdfExtGState(); PdfName n3 = resources.AddExtGState(egs3); NUnit.Framework.Assert.AreEqual("Gs3", n3.GetValue()); PdfDictionary egsResources = page.GetPdfObject().GetAsDictionary(PdfName.Resources).GetAsDictionary(PdfName .ExtGState); PdfObject e1 = egsResources.Get(new PdfName("Gs1"), false); PdfName n1 = resources.AddExtGState(e1); NUnit.Framework.Assert.AreEqual("Gs1", n1.GetValue()); PdfObject e2 = egsResources.Get(new PdfName("Gs2")); PdfName n2 = resources.AddExtGState(e2); NUnit.Framework.Assert.AreEqual("Gs2", n2.GetValue()); PdfObject e4 = (PdfObject)e2.Clone(); PdfName n4 = resources.AddExtGState(e4); NUnit.Framework.Assert.AreEqual("Gs4", n4.GetValue()); document.Close(); }
private void ApplyTransparency(PdfCanvas canvas, bool isStroke) { if (IsTransparent()) { PdfExtGState extGState = new PdfExtGState(); if (isStroke) { extGState.SetStrokeOpacity(opacity); } else { extGState.SetFillOpacity(opacity); } canvas.SetExtGState(extGState); } }
public virtual void ResourcesTest1() { PdfDocument document = new PdfDocument(new PdfWriter(new MemoryStream())); PdfPage page = document.AddNewPage(); PdfExtGState egs1 = new PdfExtGState(); PdfExtGState egs2 = new PdfExtGState(); PdfResources resources = page.GetResources(); PdfName n1 = resources.AddExtGState(egs1); NUnit.Framework.Assert.AreEqual("Gs1", n1.GetValue()); PdfName n2 = resources.AddExtGState(egs2); NUnit.Framework.Assert.AreEqual("Gs2", n2.GetValue()); n1 = resources.AddExtGState(egs1); NUnit.Framework.Assert.AreEqual("Gs1", n1.GetValue()); document.Close(); }
public MemoryStream CreatePdf(string text) { if (text == null) { throw new ArgumentNullException(nameof(text)); } _logger.LogInformation("Creating barcode for '{Text}'", text); var properties = new WriterProperties(); properties.SetPdfVersion(PdfVersion.PDF_1_4); var stream = new MemoryStream(); using var writer = new PdfWriter(stream, properties); var pdfDoc = new PdfDocument(writer); PdfFont fontOcrb = PdfFontFactory.CreateFont("wwwroot/OCRB.otf", PdfEncodings.WINANSI, PdfFontFactory.EmbeddingStrategy.PREFER_EMBEDDED); Color cmykBlack = new DeviceCmyk(0, 0, 0, 100); var gState = new PdfExtGState().SetFillOverPrintFlag(true).SetStrokeOverPrintFlag(true).SetOverprintMode(1); var code128 = new Barcode128(pdfDoc); code128.SetBaseline(7.67f); code128.SetSize(9f); code128.SetFont(fontOcrb); code128.SetX(0.72f); code128.SetBarHeight(14.17f); code128.SetCode(text); code128.SetCodeType(Barcode128.CODE128); var xObject = code128.CreateFormXObject(cmykBlack, cmykBlack, pdfDoc); pdfDoc.AddNewPage(new iText.Kernel.Geom.PageSize(xObject.GetWidth(), xObject.GetHeight())); PdfCanvas canvas = new PdfCanvas(pdfDoc.GetFirstPage()); canvas.SaveState(); canvas.SetExtGState(gState); canvas.AddXObjectAt(xObject, 0f, 0f); canvas.RestoreState(); pdfDoc.Close(); return(stream); }
//void RealizeLinearGradientBrush(LinearGradientBrush brush) //{ // // HACK // int count = brush.GradientStops.Count; // int idx = count / 2; // RealizeFillHack(brush.GradientStops[idx].Color); // //Debugger.Break(); //} //void RealizeRadialGradientBrush(RadialGradientBrush brush) //{ // int count = brush.GradientStops.Count; // int idx = count / 2; // RealizeFillHack(brush.GradientStops[idx].Color); //} #endregion /// <summary> /// Helper for not yet implemented brush types. /// </summary> void RealizeFillHack(Color color) { this.writer.WriteRgb(color, " rg\n"); //if (this.realizedFillColor.ScA != color.ScA) { PdfExtGState extGState = this.writer.Owner.ExtGStateTable.GetExtGStateNonStroke(color.ScA); string gs = this.writer.Resources.AddExtGState(extGState); this.writer.WriteLiteral("{0} gs\n", gs); // Must create transparany group if (color.ScA < 1) { this.writer.CreateDefaultTransparencyGroup(); } } this.realizedFillColor = color; }
public virtual void EgsTest1() { String destinationDocument = destinationFolder + "egsTest1.pdf"; FileStream fos = new FileStream(destinationDocument, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); //Create page and canvas PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); //Create ExtGState and fill it with line width and font PdfExtGState egs = new PdfExtGState(); egs.GetPdfObject().Put(PdfName.LW, new PdfNumber(5)); PdfArray font = new PdfArray(); PdfFont pdfFont = PdfFontFactory.CreateFont(FontConstants.COURIER); pdfFont.Flush(); font.Add(pdfFont.GetPdfObject()); font.Add(new PdfNumber(24)); egs.GetPdfObject().Put(PdfName.Font, font); //Write ExtGState canvas.SetExtGState(egs); //Write text to check that font from ExtGState is applied canvas.BeginText(); canvas.MoveText(50, 600); canvas.ShowText("Courier, 24pt"); canvas.EndText(); //Draw line to check if ine width is applied canvas.MoveTo(50, 500); canvas.LineTo(300, 500); canvas.Stroke(); //Write text again to check that font from page resources and font from ExtGState is the same. canvas.BeginText(); canvas.SetFontAndSize(pdfFont, 36); canvas.MoveText(50, 400); canvas.ShowText("Courier, 36pt"); canvas.EndText(); canvas.Release(); page.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_egsTest1.pdf" , destinationFolder, "diff_")); }
protected void ManipulatePdf(String dest) { PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); Document doc = new Document(pdfDoc); PdfFont font = PdfFontFactory.CreateFont(StandardFonts.HELVETICA); Paragraph paragraph = new Paragraph("My watermark (text)") .SetFont(font) .SetFontSize(30); ImageData img = ImageDataFactory.Create(IMG); float w = img.GetWidth(); float h = img.GetHeight(); PdfExtGState gs1 = new PdfExtGState().SetFillOpacity(0.5f); // Implement transformation matrix usage in order to scale image for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++) { PdfPage pdfPage = pdfDoc.GetPage(i); Rectangle pageSize = pdfPage.GetPageSizeWithRotation(); // When "true": in case the page has a rotation, then new content will be automatically rotated in the // opposite direction. On the rotated page this would look as if new content ignores page rotation. pdfPage.SetIgnorePageRotationForContent(true); float x = (pageSize.GetLeft() + pageSize.GetRight()) / 2; float y = (pageSize.GetTop() + pageSize.GetBottom()) / 2; PdfCanvas over = new PdfCanvas(pdfDoc.GetPage(i)); over.SaveState(); over.SetExtGState(gs1); if (i % 2 == 1) { doc.ShowTextAligned(paragraph, x, y, i, TextAlignment.CENTER, VerticalAlignment.TOP, 0); } else { over.AddImageWithTransformationMatrix(img, w, 0, 0, h, x - (w / 2), y - (h / 2), false); } over.RestoreState(); } doc.Close(); }
public void CreateWatermark() { var tranState = new PdfExtGState(); tranState.SetFillOpacity(Opacity); var reader = new PdfReader(PdfFileName); var writer = new PdfWriter(OutFile); var pdf = new PdfDocument(reader, writer); var document = new Document(pdf); for (int i = 1; i <= pdf.GetNumberOfPages(); i++) { var page = pdf.GetPage(i); page.SetIgnorePageRotationForContent(false); var canvas = new PdfCanvas(pdf.GetPage(i)); canvas.SaveState(); canvas.SetExtGState(tranState); if (ImageFileName != null) { var img = ImageDataFactory.Create(ImageFileName); img.SetWidth(ImageWidth); img.SetHeight(ImageHeight); canvas.AddImage(img, AlignX, AlignY, false); } if (WatermarkText != null) { var verticalWatermark = new Paragraph(WatermarkText).SetFontSize(FontSize); document.ShowTextAligned(verticalWatermark, AlignX, AlignY, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, RadAngle); } canvas.RestoreState(); } WatermarkText = null; ImageFileName = null; pdf.Close(); document.Close(); }
protected void ManipulatePdf(String dest) { PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest)); PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc); PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA)); Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content") .SetFont(font) .SetFontSize(15); Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize()) .ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0); canvasWatermark1.Close(); PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage()); over.SetFillColor(ColorConstants.BLACK); paragraph = new Paragraph("This watermark is added ON TOP OF the existing content") .SetFont(font) .SetFontSize(15); Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize()) .ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0); canvasWatermark2.Close(); paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content") .SetFont(font) .SetFontSize(15); over.SaveState(); // Creating a dictionary that maps resource names to graphics state parameter dictionaries PdfExtGState gs1 = new PdfExtGState(); gs1.SetFillOpacity(0.5f); over.SetExtGState(gs1); Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize()) .ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0); canvasWatermark3.Close(); over.RestoreState(); pdfDoc.Close(); }
protected void ManipulatePdf(String dest) { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest)); PageSize pageSize = PageSize.A4.Rotate(); Document doc = new Document(pdfDoc, pageSize); ImageData image = ImageDataFactory.Create(IMAGE); PdfCanvas canvas = new PdfCanvas(pdfDoc.AddNewPage()); canvas.SaveState(); PdfExtGState state = new PdfExtGState().SetFillOpacity(0.6f); canvas.SetExtGState(state); Rectangle rect = new Rectangle(0, 0, pageSize.GetWidth(), pageSize.GetHeight()); canvas.AddImageFittedIntoRectangle(image, rect, false); canvas.RestoreState(); doc.Add(new Paragraph("Berlin!")); doc.Close(); }
public void FillRectangle(double x, double h, double width, double height, System.Drawing.Color color) { var canvas = GetCanvas(); var pdfColor = GetColor(color); int opacity = color.A; canvas.SaveState(); if (opacity < 250) { PdfExtGState gstate = new PdfExtGState(); gstate.SetFillOpacity(color.A / 255f); //gstate.SetBlendMode(PdfExtGState.BM_EXCLUSION); canvas.SetExtGState(gstate); } canvas.SetFillColor(pdfColor); canvas.Rectangle(x, h, width, height); canvas.Fill(); canvas.RestoreState(); }
private void RealizeFillColor(XColor color, bool overPrint, PdfColorMode colorMode) { color = ColorSpaceHelper.EnsureColorMode(colorMode, color); if (colorMode != PdfColorMode.Cmyk) { if (_realizedFillColor.IsEmpty || _realizedFillColor.Rgb != color.Rgb) { _renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Rgb)); _renderer.Append(" rg\n"); } } else { Debug.Assert(colorMode == PdfColorMode.Cmyk); if (_realizedFillColor.IsEmpty || !ColorSpaceHelper.IsEqualCmyk(_realizedFillColor, color)) { _renderer.Append(PdfEncoders.ToString(color, PdfColorMode.Cmyk)); _renderer.Append(" k\n"); } } if (_renderer.Owner.Version >= 14 && (_realizedFillColor.A != color.A || _realizedNonStrokeOverPrint != overPrint)) { PdfExtGState extGState = _renderer.Owner.ExtGStateTable.GetExtGStateNonStroke(color.A, overPrint); string gs = _renderer.Resources.AddExtGState(extGState); _renderer.AppendFormatString("{0} gs\n", gs); // Must create transparency group. if (_renderer._page != null && color.A < 1) { _renderer._page.TransparencyUsed = true; } } _realizedFillColor = color; _realizedNonStrokeOverPrint = overPrint; }
public void HandleEvent(Event @event) { PdfDocumentEvent docEvent = (PdfDocumentEvent)@event; PdfDocument pdf = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); PdfCanvas pdfCanvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdf); pdfCanvas.AddXObject(stationery, 0, 0); if (mark != null && mark.Trim() != "") { //Rectangle rect = new Rectangle(36, 400, 36, 64); PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA)); Paragraph p = new Paragraph(mark).SetFont(font).SetFontSize(100); pdfCanvas.SaveState(); PdfExtGState gs1 = new PdfExtGState(); gs1.SetFillOpacity(0.5f); pdfCanvas.SetExtGState(gs1); Canvas canvas = new Canvas(pdfCanvas, pdf, pdf.GetDefaultPageSize()) .ShowTextAligned(p, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0.785398F); pdfCanvas.RestoreState(); canvas.Close(); } }
public virtual void TextTransparencyNoOutputIntentTest() { NUnit.Framework.Assert.That(() => { PdfWriter writer = new PdfWriter(new MemoryStream()); PdfDocument pdfDocument = new PdfADocument(writer, PdfAConformanceLevel.PDF_A_3B, null); PdfFont font = PdfFontFactory.CreateFont(sourceFolder + "FreeSans.ttf", "Identity-H", true); PdfPage page1 = pdfDocument.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page1); canvas.SaveState(); canvas.BeginText().MoveText(36, 750).SetFontAndSize(font, 16).ShowText("Page 1 without transparency").EndText ().RestoreState(); PdfPage page2 = pdfDocument.AddNewPage(); canvas = new PdfCanvas(page2); canvas.SaveState(); PdfExtGState state = new PdfExtGState(); state.SetFillOpacity(0.6f); canvas.SetExtGState(state); canvas.BeginText().MoveText(36, 750).SetFontAndSize(font, 16).ShowText("Page 2 with transparency").EndText ().RestoreState(); pdfDocument.Close(); } , NUnit.Framework.Throws.InstanceOf <PdfAConformanceException>().With.Message.EqualTo(MessageFormatUtil.Format(PdfAConformanceException.THE_DOCUMENT_DOES_NOT_CONTAIN_A_PDFA_OUTPUTINTENT_BUT_PAGE_CONTAINS_TRANSPARENCY_AND_DOES_NOT_CONTAIN_BLENDING_COLOR_SPACE))) ; }
public void PdfStamp(string fileout, string stamp, string filein) { if (File.Exists(filein) && File.Exists(stamp)) { PdfDocument pdf = new PdfDocument(new PdfReader(filein), new PdfWriter(fileout)); // MessageBox.Show(pdf.GetNumberOfPages().ToString()); for (var i = 0; i < pdf.GetNumberOfPages(); i++) { PdfCanvas canvas = new PdfCanvas(pdf.GetPage(i + 1)); ImageData image = ImageDataFactory.Create(stamp); image.SetRotation(rotation); canvas.SaveState(); PdfExtGState state = new PdfExtGState(); state.SetFillOpacity(transprency > 1f ? (transprency / 100) : transprency); canvas.SetExtGState(state); System.Drawing.Point newPt =/* new System.Drawing.Point(0, 0);*/ UCS.shiftAnchor(UCS.Type.pdf, UCS.Corner.TopLeft, anchor, (int)pdf.GetPage(i + 1).GetPageSize().GetWidth(), (int)pdf.GetPage(i + 1).GetPageSize().GetHeight(), (int)image.GetWidth(), (int)image.GetHeight(), new System.Drawing.Point(x, y) ); //TODO: add width & height to image canvas.AddImage(image, newPt.X, newPt.Y, false); canvas.RestoreState(); } pdf.Close(); } }
public void AddWaterprint(string absoluteFilePath, string outputPath) { var watermarkImgPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DefaultResource", "waterMarkImg.jpeg"); using (var pdfDocument = new PdfDocument(new PdfReader(absoluteFilePath), new PdfWriter(outputPath))) { // image watermark ImageData img = ImageDataFactory.Create(watermarkImgPath); // transparency var gs1 = new PdfExtGState(); gs1.SetFillOpacity(0.3f); for (var pageIndex = 1; pageIndex < pdfDocument.GetNumberOfPages(); pageIndex++) { // properties PdfCanvas over = new PdfCanvas(pdfDocument.GetPage(pageIndex)); Rectangle pagesize = pdfDocument.GetPage(pageIndex).GetPageSize(); over.SaveState(); over.SetExtGState(gs1); over.AddImage(img, 80, 0, 0, 81, 300, (pagesize.GetTop() + pagesize.GetBottom()) - 200, true); over.RestoreState(); } } }