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);
        }
Exemplo n.º 2
0
        /// <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)))
     ;
 }
Exemplo n.º 4
0
        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();
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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());
        }
Exemplo n.º 10
0
        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);
                 }
             }
         }
     }
 }
Exemplo n.º 12
0
        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;
            }
        }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        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;
        }
Exemplo n.º 15
0
        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();
        }
Exemplo n.º 16
0
 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);
     }
 }
Exemplo n.º 17
0
        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();
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        //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;
        }
Exemplo n.º 20
0
        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_"));
        }
Exemplo n.º 21
0
        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();
        }
Exemplo n.º 22
0
        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();
        }
Exemplo n.º 23
0
        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();
        }
Exemplo n.º 24
0
        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();
        }
Exemplo n.º 25
0
            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();
            }
Exemplo n.º 26
0
        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;
        }
Exemplo n.º 27
0
        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)))
     ;
 }
Exemplo n.º 29
0
        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();
            }
        }
Exemplo n.º 30
0
        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();
                }
            }
        }