public void DrawCircle(EbReportField field, float printingTop) { float radius = field.Width / 2; float xval = field.Left + radius; float yval = Report.Height - (printingTop + field.Top + radius); cb.SetColorStroke(GetColor(field.BorderColor)); cb.SetColorFill(GetColor(field.BackColor)); cb.SetLineWidth(field.Border); cb.Circle(xval, yval, radius); cb.FillStroke(); }
public void Verify_GraphicsStateStack_CanBeCreated() { var pdfFilePath = TestUtils.GetOutputFileName(); var stream = new FileStream(pdfFilePath, FileMode.Create); // step 1 var document = new Document(new Rectangle(200, 120)); // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.AddAuthor(TestUtils.Author); document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // state 1: canvas.SetRgbColorFill(0xFF, 0x45, 0x00); // fill a rectangle in state 1 canvas.Rectangle(10, 10, 60, 60); canvas.Fill(); canvas.SaveState(); // state 2; canvas.SetLineWidth(3); canvas.SetRgbColorFill(0x8B, 0x00, 0x00); // fill and stroke a rectangle in state 2 canvas.Rectangle(40, 20, 60, 60); canvas.FillStroke(); canvas.SaveState(); // state 3: canvas.ConcatCtm(1, 0, 0.1f, 1, 0, 0); canvas.SetRgbColorStroke(0xFF, 0x45, 0x00); canvas.SetRgbColorFill(0xFF, 0xD7, 0x00); // fill and stroke a rectangle in state 3 canvas.Rectangle(70, 30, 60, 60); canvas.FillStroke(); canvas.RestoreState(); // stroke a rectangle in state 2 canvas.Rectangle(100, 40, 60, 60); canvas.Stroke(); canvas.RestoreState(); // fill and stroke a rectangle in state 1 canvas.Rectangle(130, 50, 60, 60); canvas.FillStroke(); document.Close(); stream.Dispose(); TestUtils.VerifyPdfFileIsReadable(pdfFilePath); }
// --------------------------------------------------------------------------- /** * Draws a row of stars and circles. * @param canvas the canvas to which the shapes have to be drawn * @param x X coordinate to position the row * @param y Y coordinate to position the row * @param radius the radius of the circles * @param gutter the space between the shapes */ public static void CreateStarsAndCircles(PdfContentByte canvas, float x, float y, float radius, float gutter) { canvas.SaveState(); canvas.SetColorStroke(new GrayColor(0.2f)); canvas.SetColorFill(new GrayColor(0.9f)); CreateStar(canvas, x, y); CreateCircle(canvas, x + radius, y - 70, radius, true); CreateCircle(canvas, x + radius, y - 70, radius / 2, true); canvas.Fill(); x += 2 * radius + gutter; CreateStar(canvas, x, y); CreateCircle(canvas, x + radius, y - 70, radius, true); CreateCircle(canvas, x + radius, y - 70, radius / 2, true); canvas.EoFill(); x += 2 * radius + gutter; CreateStar(canvas, x, y); canvas.NewPath(); CreateCircle(canvas, x + radius, y - 70, radius, true); CreateCircle(canvas, x + radius, y - 70, radius / 2, true); x += 2 * radius + gutter; CreateStar(canvas, x, y); CreateCircle(canvas, x + radius, y - 70, radius, true); CreateCircle(canvas, x + radius, y - 70, radius / 2, false); canvas.FillStroke(); x += 2 * radius + gutter; CreateStar(canvas, x, y); CreateCircle(canvas, x + radius, y - 70, radius, true); CreateCircle(canvas, x + radius, y - 70, radius / 2, true); canvas.EoFillStroke(); canvas.RestoreState(); }
// =========================================================================== public override void Write(Stream stream) { // step 1 using (Document document = new Document()) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfShading axial = PdfShading.SimpleAxial(writer, 36, 716, 396, 788, BaseColor.ORANGE, BaseColor.BLUE ); canvas.PaintShading(axial); document.NewPage(); PdfShading radial = PdfShading.SimpleRadial(writer, 200, 700, 50, 300, 700, 100, new BaseColor(0xFF, 0xF7, 0x94), new BaseColor(0xF7, 0x8A, 0x6B), false, false ); canvas.PaintShading(radial); PdfShadingPattern shading = new PdfShadingPattern(axial); ColorRectangle(canvas, new ShadingColor(shading), 150, 420, 126, 126); canvas.SetShadingFill(shading); canvas.Rectangle(300, 420, 126, 126); canvas.FillStroke(); } }
public static void DrawRoundedRectangle(PdfContentByte canvas, Rectangle rectangle, BaseColor baseColor) { canvas.SetColorFill(baseColor); canvas.SetColorStroke(BaseColor.BLACK); canvas.RoundRectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height, 5f); canvas.FillStroke(); }
private static void Legenda(PdfContentByte cb, int i, float valor, string label, int[,] cores, float xCentro, float yCentro, float raio) { float h = PageSize.LETTER.Width; // paisagem float w = PageSize.LETTER.Height; float x = xCentro + raio + 200; float y = h - yCentro + raio - (22 * i); cb.SetRGBColorFill(0, 0, 0); cb.BeginText(); cb.SetTextMatrix(x - 100, y - 10); cb.ShowText(valor.ToString("###,###,##0.00").PadLeft(14)); cb.EndText(); cb.BeginText(); cb.SetTextMatrix(x + 40, y - 10); cb.ShowText(label); cb.EndText(); cb.SetRGBColorFill(cores[i, 0], cores[i, 1], cores[i, 2]); cb.MoveTo(x, y); cb.LineTo(x + 20, y); cb.LineTo(x + 20, y - 10); cb.LineTo(x, y - 10); cb.LineTo(x, y); cb.FillStroke(); }
public virtual void ColorRectangle(PdfContentByte canvas, BaseColor color, float x, float y, float width, float height) { canvas.SaveState(); canvas.SetColorFill(color); canvas.Rectangle(x, y, width, height); canvas.FillStroke(); canvas.RestoreState(); }
// =========================================================================== public void Write(Stream stream) { // step 1 using (Document document = new Document()) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // draw squares CreateSquares(canvas, 50, 720, 80, 20); ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase( "Methods MoveTo(), LineTo(), stroke(), closePathStroke(), Fill(), and closePathFill()" ), 50, 700, 0 ); // draw Bezier curves createBezierCurves(canvas, 70, 600, 80, 670, 140, 690, 160, 630, 160); ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase("Different CurveTo() methods, followed by stroke()"), 50, 580, 0 ); // draw stars and circles CreateStarsAndCircles(canvas, 50, 470, 40, 20); ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase( "Methods Fill(), eoFill(), NewPath(), FillStroke(), and EoFillStroke()" ), 50, 450, 0 ); // draw different shapes using convenience methods canvas.SaveState(); canvas.SetColorStroke(new GrayColor(0.2f)); canvas.SetColorFill(new GrayColor(0.9f)); canvas.Arc(50, 270, 150, 330, 45, 270); canvas.Ellipse(170, 270, 270, 330); canvas.Circle(320, 300, 30); canvas.RoundRectangle(370, 270, 80, 60, 20); canvas.FillStroke(); canvas.RestoreState(); Rectangle rect = new Rectangle(470, 270, 550, 330); rect.BorderWidthBottom = 10; rect.BorderColorBottom = new GrayColor(0f); rect.BorderWidthLeft = 4; rect.BorderColorLeft = new GrayColor(0.9f); rect.BackgroundColor = new GrayColor(0.4f); canvas.Rectangle(rect); ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase("Convenience methods"), 50, 250, 0 ); } }
public static void Pizza(PdfContentByte cb, ArrayList valores, ArrayList labels, float xCentro, float yCentro, float raio) { float h = PageSize.LETTER.Width; // paisagem float w = PageSize.LETTER.Height; cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 10); float total = 0; foreach (float valor in valores) { total += valor; } int[,] cores = new int[, ] { { 255, 0, 0 }, { 0, 255, 0 }, { 0, 0, 255 }, { 255, 255, 0 }, { 255, 0, 255 }, { 0, 255, 255 }, { 255, 128, 0 }, { 0, 255, 128 }, { 128, 0, 255 }, { 255, 128, 128 }, { 128, 255, 128 }, { 128, 128, 255 } }; int i = 0; float _dx = 0; float _dy = 0; float _a = 0; foreach (float valor in valores) { float a = valor * 360 / total; double coseno = System.Math.Cos((a + _a) * System.Math.PI / 180); double seno = System.Math.Sin((a + _a) * System.Math.PI / 180); float dx = (float)(raio * coseno); float dy = (float)(raio * seno); if (valor != 0) { cb.SetRGBColorFill(cores[i, 0], cores[i, 1], cores[i, 2]); cb.MoveTo(xCentro, h - yCentro); cb.LineTo(xCentro + _dx, h - yCentro + _dy); cb.Arc(xCentro - raio, h - yCentro + raio, xCentro + raio, h - yCentro - raio, _a, a); cb.LineTo(xCentro, h - yCentro); cb.FillStroke(); } _dx = dx; _dy = dy; _a += a; Legenda(cb, i, valor, labels[i].ToString(), cores, xCentro, yCentro, raio); i++; } }
private void AfficherRectangleArrondi(PdfWriter writer, int posX, int posY, int largeur, int hauteur, int radius, int lineWidth, int r, int g, int b) { PdfContentByte cb = writer.DirectContent; cb.SetLineWidth(lineWidth); cb.SetRGBColorFill(r, g, b); cb.SetRGBColorStroke(20, 20, 20); cb.RoundRectangle(posX, posY, largeur, hauteur, radius); cb.FillStroke(); }
private void AfficherRectangle(PdfWriter writer, int posX, int posY, int largeur, int hauteur, int r, int g, int b) { PdfContentByte cb = writer.DirectContent; //cb.SetRGBColorStroke(r, g, b); // cb.SetLineWidth(0); cb.SetRGBColorFill(r, g, b); cb.Rectangle(posX, posY, largeur, hauteur); // 50 / 350 cb.FillStroke(); }
// --------------------------------------------------------------------------- /** * Draws three rectangles * @param canvas */ public void DrawRectangles(PdfContentByte canvas) { canvas.SaveState(); canvas.SetGrayFill(0.9f); canvas.Rectangle(33, 592, 72, 72); canvas.Rectangle(263, 406, 72, 72); canvas.Rectangle(491, 168, 72, 72); canvas.FillStroke(); canvas.RestoreState(); }
public static void CreateSeatplanPdf(Document doc, string imageFilePath, LocationSeatplan plan, PdfContentByte pdfContentByte, float scaleFactor, float pageBorderLeft = 0) { var jpg = Image.GetInstance(imageFilePath); //Resize image depend upon your need for give the size to image jpg.ScaleToFit(jpg.Width * scaleFactor, jpg.Height * scaleFactor); //image as background jpg.Alignment = Image.UNDERLYING; jpg.SetAbsolutePosition(pageBorderLeft, doc.Top - (jpg.GetTop(0) * scaleFactor) - SpaceForHeader); doc.Add(jpg); var seatCount = 0; foreach (var seat in plan.LocationSeats) { seatCount++; var seatRadius = (seat.Width / 2f) * scaleFactor; pdfContentByte.Circle(pageBorderLeft + (seat.PositionX * scaleFactor), doc.Top - (seat.PositionY * scaleFactor) - SpaceForHeader, seatRadius); pdfContentByte.SetRGBColorFill(51, 204, 0); pdfContentByte.SetRGBColorStroke(51, 204, 0); pdfContentByte.FillStroke(); pdfContentByte.SetRGBColorFill(0, 0, 0); // add text to seat & set the right font size var fontSizeSeat = seatRadius / 1.8; pdfContentByte.BeginText(); pdfContentByte.SetFontAndSize(_fontBase, (float)fontSizeSeat); var seatText = string.Empty; foreach (var s in seat.SeatIdentification.Split(' ')) { if ((s.Contains(',') || seat.SeatIdentification.Split(' ').Last() == s) && s.Length < 5) { seatText += s; } } pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER, seatText, pageBorderLeft + (seat.PositionX * scaleFactor), doc.Top - (seat.PositionY * scaleFactor) - SpaceForHeader - 1, 0); pdfContentByte.EndText(); } pdfContentByte.ClosePathFillStroke(); doc.NewPage(); }
// =========================================================================== public void Write(Stream stream) { // step 1 using (Document document = new Document(new Rectangle(200, 120))) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // state 1: canvas.SetRGBColorFill(0xFF, 0x45, 0x00); // fill a rectangle in state 1 canvas.Rectangle(10, 10, 60, 60); canvas.Fill(); canvas.SaveState(); // state 2; canvas.SetLineWidth(3); canvas.SetRGBColorFill(0x8B, 0x00, 0x00); // fill and stroke a rectangle in state 2 canvas.Rectangle(40, 20, 60, 60); canvas.FillStroke(); canvas.SaveState(); // state 3: canvas.ConcatCTM(1, 0, 0.1f, 1, 0, 0); canvas.SetRGBColorStroke(0xFF, 0x45, 0x00); canvas.SetRGBColorFill(0xFF, 0xD7, 0x00); // fill and stroke a rectangle in state 3 canvas.Rectangle(70, 30, 60, 60); canvas.FillStroke(); canvas.RestoreState(); // stroke a rectangle in state 2 canvas.Rectangle(100, 40, 60, 60); canvas.Stroke(); canvas.RestoreState(); // fill and stroke a rectangle in state 1 canvas.Rectangle(130, 50, 60, 60); canvas.FillStroke(); } }
private void AfficherTexte(PdfWriter writer, string texte, int posX, int posY, iTextSharp.text.Font font, int r, int g, int b) { PdfContentByte cb = writer.DirectContent; cb.SetLineWidth(15); // cb.SetRGBColorFill(255,255,255); cb.SetRGBColorFill(r, g, b); cb.FillStroke(); ColumnText ct = new ColumnText(cb); Phrase myText = new Phrase(texte, font); ct.SetSimpleColumn(myText, posX, posY, posX + 130, posY + 130, 15, Element.ALIGN_LEFT); ct.Go(); }
// --------------------------------------------------------------------------- /** * Draws a rectangle * @param content the direct content layer * @param width the width of the rectangle * @param height the height of the rectangle */ public static void DrawRectangle( PdfContentByte content, float width, float height) { content.SaveState(); PdfGState state = new PdfGState(); state.FillOpacity = 0.6f; content.SetGState(state); content.SetRGBColorFill(0xFF, 0xFF, 0xFF); content.SetLineWidth(3); content.Rectangle(0, 0, width, height); content.FillStroke(); content.RestoreState(); }
// --------------------------------------------------------------------------- /** * Prints a square and fills half of it with a gray rectangle. * * @param x * @param y * @param cb * @throws Exception */ public static void PictureBackdrop(float x, float y, PdfContentByte cb, PdfWriter writer) { PdfShading axial = PdfShading.SimpleAxial(writer, x, y, x + 200, y, BaseColor.YELLOW, BaseColor.RED ); PdfShadingPattern axialPattern = new PdfShadingPattern(axial); cb.SetShadingFill(axialPattern); cb.SetColorStroke(BaseColor.BLACK); cb.SetLineWidth(2); cb.Rectangle(x, y, 200, 200); cb.FillStroke(); }
/// <summary> /// Renders the object in a document using a <see cref="PdfContentByte"/> by invoking the <see cref="Render(ContentWriter, Vector2D)"/> method. /// This method can be overridden in derived classes to specify rendering. /// </summary> /// <param name="cb">The <see cref="PdfContentByte"/> used for rendering.</param> /// <param name="offset">The calculated offset for the rendered item.</param> protected internal virtual void Render(PdfContentByte cb, Vector2D offset) { using (var writer = new ContentWriter(cb)) { var stroke = this as StrokeObject; var fill = this as FillObject; bool hasstroke = stroke?.BorderColor.HasValue ?? false; bool hasfill = fill?.FillColor.HasValue ?? false; if (hasstroke) { cb.SetLineWidth((float)stroke.BorderWidth.Value(UnitsOfMeasure.Points)); cb.SetColorStroke(new Color(stroke.BorderColor.Value)); } if (hasfill) { cb.SetColorFill(new Color(fill.FillColor.Value)); } Render(writer, offset); if (hasstroke && hasfill) { if (writer.CloseShape) { cb.ClosePathFillStroke(); } else { cb.FillStroke(); } } else if (hasstroke) { if (writer.CloseShape) { cb.ClosePathStroke(); } else { cb.Stroke(); } } else if (hasfill) { cb.Fill(); } } }
public void RoundRectangle(float xInit, float yInit, float width, float height, float radius = 0, float lineWidth = 1, float opacity = 0, BaseColor boarderColor = null, BaseColor insideColor = null) { var gs1 = new PdfGState { FillOpacity = opacity, }; _contentByte.SetGState(gs1); _contentByte.SaveState(); _contentByte.SetColorFill(insideColor ?? BaseColor.White); _contentByte.SetLineWidth(lineWidth); _contentByte.SetColorStroke(boarderColor ?? BaseColor.Black); _contentByte.RoundRectangle(xInit, yInit, width, height, radius); _contentByte.FillStroke(); _contentByte.RestoreState(); }
public void Verify_ShadingPatternColor_CanBeCreated() { var pdfFilePath = TestUtils.GetOutputFileName(); var stream = new FileStream(pdfFilePath, FileMode.Create); // step 1 var document = new Document(); // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.AddAuthor(TestUtils.Author); document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfShading axial = PdfShading.SimpleAxial(writer, 36, 716, 396, 788, BaseColor.Orange, BaseColor.Blue ); canvas.PaintShading(axial); document.NewPage(); PdfShading radial = PdfShading.SimpleRadial(writer, 200, 700, 50, 300, 700, 100, new BaseColor(0xFF, 0xF7, 0x94), new BaseColor(0xF7, 0x8A, 0x6B), false, false ); canvas.PaintShading(radial); PdfShadingPattern shading = new PdfShadingPattern(axial); colorRectangle(canvas, new ShadingColor(shading), 150, 420, 126, 126); canvas.SetShadingFill(shading); canvas.Rectangle(300, 420, 126, 126); canvas.FillStroke(); document.Close(); stream.Dispose(); TestUtils.VerifyPdfFileIsReadable(pdfFilePath); }
public void Close(PdfContentByte cb, IDictionary <String, String> css) { //default is true for both String fillValue; String strokeValue; bool fill = (!css.TryGetValue("fill", out fillValue) || fillValue == null || !fillValue.Equals("none")); bool stroke = (!css.TryGetValue("stroke", out strokeValue) || strokeValue == null || !strokeValue.Equals("none")); if (fill && stroke) { cb.FillStroke(); } else if (fill) { cb.Fill(); } else if (stroke) { cb.Stroke(); } }
// --------------------------------------------------------------------------- /** * Draws a row of squares. * @param canvas the canvas to which the squares have to be drawn * @param x X coordinate to position the row * @param y Y coordinate to position the row * @param side the side of the square * @param gutter the space between the squares */ public void CreateSquares(PdfContentByte canvas, float x, float y, float side, float gutter) { canvas.SaveState(); canvas.SetColorStroke(new GrayColor(0.2f)); canvas.SetColorFill(new GrayColor(0.9f)); canvas.MoveTo(x, y); canvas.LineTo(x + side, y); canvas.LineTo(x + side, y + side); canvas.LineTo(x, y + side); canvas.Stroke(); x = x + side + gutter; canvas.MoveTo(x, y); canvas.LineTo(x + side, y); canvas.LineTo(x + side, y + side); canvas.LineTo(x, y + side); canvas.ClosePathStroke(); x = x + side + gutter; canvas.MoveTo(x, y); canvas.LineTo(x + side, y); canvas.LineTo(x + side, y + side); canvas.LineTo(x, y + side); canvas.Fill(); x = x + side + gutter; canvas.MoveTo(x, y); canvas.LineTo(x + side, y); canvas.LineTo(x + side, y + side); canvas.LineTo(x, y + side); canvas.FillStroke(); x = x + side + gutter; canvas.MoveTo(x, y); canvas.LineTo(x + side, y); canvas.LineTo(x + side, y + side); canvas.LineTo(x, y + side); canvas.ClosePathFillStroke(); canvas.RestoreState(); }
private static void DrawRectangle(PdfContentByte content, Rectangle rectangle) { content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height); content.FillStroke(); }
public void fillStroke() { m_canvas.FillStroke(); }
private static Boolean PrintShape(Shape shape, FrameworkElement relativeTo, PdfContentByte dc) { var noBorder = Helper.IsNullOrZero(shape.StrokeThickness) || Helper.IsTransparent(shape.Stroke); var noBackground = Helper.IsTransparent(shape.Fill); if (noBorder && noBackground) return true; dc.SaveState(); try { var clipRect = GetClipRectange(shape, relativeTo); if (clipRect != null) { dc.Rectangle(clipRect.Value.Left, clipRect.Value.Top - clipRect.Value.Height, clipRect.Value.Width, clipRect.Value.Height); dc.Clip(); dc.NewPath(); } dc.SetColorFill(GetBaseColor(shape.Fill)); dc.SetColorStroke(GetBaseColor(shape.Stroke)); dc.SetLineWidth(shape.StrokeThickness); if (shape.StrokeDashArray != null && shape.StrokeDashArray.Any()) dc.SetLineDash(shape.StrokeDashArray.Select(p => p * shape.StrokeThickness).ToArray(), 0); float left, top; if (!GetElementLocation(shape, relativeTo, out left, out top)) return false; var lineGeometry = shape.RenderedGeometry as LineGeometry; if (lineGeometry != null) { var startPoint = shape.RenderedGeometry.Transform.Transform(lineGeometry.StartPoint); var endPoint = shape.RenderedGeometry.Transform.Transform(lineGeometry.EndPoint); dc.MoveTo(left + startPoint.X, top - startPoint.Y); dc.LineTo(left + endPoint.X, top - endPoint.Y); } var rectangleGeometry = shape.RenderedGeometry as RectangleGeometry; if (rectangleGeometry != null) { if (!rectangleGeometry.Rect.IsNaNOrZeroOrEmpty()) { var bottomLeft = shape.RenderedGeometry.Transform.Transform(rectangleGeometry.Rect.BottomLeft); var widthHeight = shape.RenderedGeometry.Transform.Transform(new Point(rectangleGeometry.Rect.Width, rectangleGeometry.Rect.Height)); dc.Rectangle(left + bottomLeft.X, top - bottomLeft.Y, widthHeight.X, widthHeight.Y); } } var ellipseGeometry = shape.RenderedGeometry as EllipseGeometry; if (ellipseGeometry != null) { var center = shape.RenderedGeometry.Transform.Transform(ellipseGeometry.Center); center = new Point(left + center.X, top - center.Y); if (Helper.IsNullOrZero(ellipseGeometry.RadiusX) && Helper.IsNullOrZero(ellipseGeometry.RadiusY)) dc.Circle(center.X, center.Y, 0.01); else { var radius = shape.RenderedGeometry.Transform.Transform(new Point(ellipseGeometry.RadiusX, ellipseGeometry.RadiusY)); var x1 = (Int32)Math.Max(1, Math.Round(center.X - radius.X)); var y1 = (Int32)Math.Max(1, Math.Round(center.Y - radius.Y)); var x2 = (Int32)Math.Max(1, Math.Round(center.X + radius.X)); var y2 = (Int32)Math.Max(1, Math.Round(center.Y + radius.Y)); dc.Ellipse(x1, y1, x2, y2); } } var streamGeometry = shape.RenderedGeometry as StreamGeometry; if (streamGeometry != null) { var figures = GeometryDataParser.GetDataFigures(streamGeometry.ToString()); foreach (var figure in figures) { if (!figure.Draw(left, top, dc, shape.LayoutTransform)) break; } } var pathGrometry = shape.RenderedGeometry as PathGeometry; if (pathGrometry != null) { var pathFigure = pathGrometry.Figures.First(p => p != null); if (pathFigure != null) { var points = new List<Point>(); points.Add(shape.RenderedGeometry.Transform.Transform(pathFigure.StartPoint)); var lineSegments = pathFigure.Segments.OfType<LineSegment>(); if (lineSegments != null) points.AddRange(lineSegments.Select(p => shape.RenderedGeometry.Transform.Transform(p.Point))); var polyLineSegment = pathFigure.Segments.OfType<PolyLineSegment>().FirstOrDefault(); if (polyLineSegment != null) points.AddRange(polyLineSegment.Points.Select(p => shape.RenderedGeometry.Transform.Transform(p))); points = points.Select(p => new Point(left + p.X, top - p.Y)).ToList(); foreach (var point in points) { if (points.IndexOf(point) == 0) dc.MoveTo(point.X, point.Y); else dc.LineTo(point.X, point.Y); } } } if (!noBorder && !noBackground) dc.FillStroke(); else { if (!noBorder) dc.Stroke(); if (!noBackground) dc.Fill(); } return true; } catch (Exception ex) { ExceptionHandler.ThrowException(ex); return false; } finally { dc.RestoreState(); } }
public Chap13_form() { Console.WriteLine("Chapter 13: a form with some text"); // step 1: creation of a document-object Document document = new Document(PageSize.A4, 50, 50, 50, 50); try { // step 2: we create a writer that listens to the document PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Chap13_form.pdf", FileMode.Create)); PdfAcroForm acroForm = writer.AcroForm; // step 3: we open the document document.Open(); // step 4: we add some content BaseFont helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); float fontSize = 12; acroForm.AddSingleLineTextField("name", "your name", helv, fontSize, 171, 800, 350, 820); acroForm.AddMultiLineTextField("msg", "Hello iText!\nThis is a Test\nThere are multiple lines in this textfield", helv, fontSize, 171, 730, 350, 790); acroForm.AddSingleLinePasswordField("password", "", helv, fontSize, 171, 700, 350, 720); acroForm.AddHtmlPostButton("btn", "SUBMIT", "noValue", "Chap13.php", helv, fontSize, 355, 700, 420, 725); acroForm.AddResetButton("reset", "RESET", null, helv, fontSize, 430, 700, 495, 725); acroForm.AddCheckBox("CB1", "Food", true, 180, 685, 190, 695); acroForm.AddCheckBox("CB2", "Drinks", false, 180, 645, 210, 675); PdfFormField radiogroup = acroForm.GetRadioGroup("CreditCard", "Visa", true); acroForm.AddRadioButton(radiogroup, "Visa", 180, 625, 195, 640); acroForm.AddRadioButton(radiogroup, "MasterCard", 200, 625, 215, 640); acroForm.AddRadioButton(radiogroup, "American", 220, 625, 235, 640); acroForm.AddRadioGroup(radiogroup); String[] colors = { "Red", "Green", "Blue" }; String[,] colorvalues = { { "#FF0000", "Red" }, { "#00FF00", "Green" }, { "#0000FF", "Blue" } }; acroForm.AddSelectList("list1", colors, "Green", helv, fontSize, 171, 550, 300, 600); acroForm.AddSelectList("list2", colorvalues, "#0000FF", helv, fontSize, 315, 550, 450, 600); acroForm.AddComboBox("combo1", colors, "Green", true, helv, fontSize, 171, 440, 300, 490); acroForm.AddComboBox("combo2", colorvalues, "#0000FE", false, helv, fontSize, 315, 440, 450, 490); PdfContentByte cb = new PdfContentByte(null); cb.SetRGBColorStroke(0x00, 0x00, 0x00); cb.SetRGBColorFill(0xFF, 0x00, 0x00); cb.Arc(0, 0, 100, 100, 0, 360); cb.FillStroke(); cb.SetRGBColorStroke(0x00, 0x00, 0x00); cb.SetRGBColorFill(0xFF, 0xFF, 0xFF); cb.Arc(20, 20, 80, 80, 0, 360); cb.FillStroke(); cb.SetRGBColorStroke(0x00, 0x00, 0x00); cb.SetRGBColorFill(0xFF, 0x00, 0x00); cb.Arc(40, 40, 60, 60, 0, 360); cb.FillStroke(); cb.SetRGBColorFill(0x00, 0x00, 0x00); cb.Arc(48, 48, 52, 52, 0, 360); cb.Fill(); acroForm.AddMap("map", null, "Chap13.php", cb, 171, 300, 271, 400); acroForm.AddHiddenField("hidden", "secret"); } catch (DocumentException de) { Console.Error.WriteLine(de.Message); } catch (IOException ioe) { Console.Error.WriteLine(ioe.Message); } // step 5: close the document document.Close(); }
public virtual void DeviceNSpotBasedGradient() { // step 1 Document document = new Document(PageSize.A3); // step 2 String dest_file = DEST_FOLDER + "/device_n_gradient_base.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create)); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_gray = new PdfSpotColor("iTextGray", new GrayColor(0f)); PdfSpotColor psc_cmyk_yell = new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)); PdfSpotColor psc_cmyk_magen = new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)); PdfSpotColor psc_rgb_blue = new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)); PdfDeviceNColor pdfDeviceNNChannelColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }); PdfDeviceNColor pdfDeviceNNChannelColor2 = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_magen, psc_cmyk_yell, psc_rgb_blue }); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextGray", new GrayColor(0f)), 0.8f), 36, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)), 0.8f), 90, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)), 0.4f), 144, 824, 36, 36); ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)), 0.7f), 198, 824, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }), new float[] { 0, 0.0f, 1 }), 36, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.1f, 0.1f, 1 }), 90, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.2f, 0.2f, 1 }), 144, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.3f, 0.3f, 1 }), 198, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.4f, 0.4f, 1 }), 252, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue, psc_gray }), new float[] { 0.5f, 0.5f, 1, 0.5f }), 306, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[] { 0.6f, 0.1f, 1 }), 360, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.7f, 0.7f, 1 }), 416, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.8f, 0.8f, 1 }), 470, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }), new float[] { 0.9f, 0.9f, 1 }), 524, 770, 36, 36); ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 }), 578, 770, 36, 36); PdfDeviceNColor pdfDeviceNColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0, 0, 1 })); canvas.Rectangle(36, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.1f, 0.1f, 1 })); canvas.Rectangle(90, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.2f, 0.2f, 1 })); canvas.Rectangle(144, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.3f, 0.3f, 1 })); canvas.Rectangle(198, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.4f, 0.4f, 1 })); canvas.Rectangle(252, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.5f, 0.5f, 1 })); canvas.Rectangle(306, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.6f, 0.1f, 1 })); canvas.Rectangle(360, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.7f, 0.7f, 1 })); canvas.Rectangle(416, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.8f, 0.8f, 1 })); canvas.Rectangle(470, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.9f, 0.9f, 1 })); canvas.Rectangle(524, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 1, 1, 1 })); canvas.Rectangle(578, 716, 36, 36); canvas.FillStroke(); canvas.SaveState(); canvas.Rectangle(418, 412, -329, 189); canvas.Clip(); canvas.NewPath(); canvas.SaveState(); canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f); canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 0 }), new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0, 0, 1 }))); canvas.RestoreState(); canvas.RestoreState(); canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 })); canvas.Rectangle(418, 412, -329, 189); canvas.Stroke(); // step 5 document.Close(); CompareTool compareTool = new CompareTool(); String error = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_base.pdf", DEST_FOLDER, "diff_"); if (error != null) { Assert.Fail(error); } }
protected static void FinishShape(PdfContentByte contentByte) { contentByte.FillStroke(); contentByte.ResetRGBColorFill(); }
// =========================================================================== public virtual void Write(Stream stream) { // step 1 using (Document document = new Document()) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; // RGB Colors ColorRectangle(canvas, new BaseColor(0x00, 0x00, 0x00), 36, 770, 36, 36 ); ColorRectangle(canvas, new BaseColor(0x00, 0x00, 0xFF), 90, 770, 36, 36 ); ColorRectangle(canvas, new BaseColor(0x00, 0xFF, 0x00), 144, 770, 36, 36 ); ColorRectangle(canvas, new BaseColor(0xFF, 0x00, 0x00), 198, 770, 36, 36 ); ColorRectangle(canvas, new BaseColor(0f, 1f, 1f), 252, 770, 36, 36); ColorRectangle(canvas, new BaseColor(1f, 0f, 1f), 306, 770, 36, 36); ColorRectangle(canvas, new BaseColor(1f, 1f, 0f), 360, 770, 36, 36); ColorRectangle(canvas, BaseColor.BLACK, 416, 770, 36, 36); ColorRectangle(canvas, BaseColor.LIGHT_GRAY, 470, 770, 36, 36); // CMYK Colors ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0x00, 0x00), 36, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0xFF, 0x00), 90, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0xFF, 0xFF), 144, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(0x00, 0xFF, 0x00, 0x00), 198, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(0f, 1f, 0f, 0.5f), 252, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 0f), 306, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 0.5f), 360, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 1f), 416, 716, 36, 36 ); ColorRectangle(canvas, new CMYKColor(0f, 0f, 0f, 1f), 470, 716, 36, 36 ); // Gray color ColorRectangle(canvas, new GrayColor(0x20), 36, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0x40), 90, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0x60), 144, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0.5f), 198, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0.625f), 252, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0.75f), 306, 662, 36, 36); ColorRectangle(canvas, new GrayColor(0.825f), 360, 662, 36, 36); ColorRectangle(canvas, GrayColor.GRAYBLACK, 416, 662, 36, 36); ColorRectangle(canvas, GrayColor.GRAYWHITE, 470, 662, 36, 36); // Alternative ways to color the rectangle canvas.SetRGBColorFill(0x00, 0x80, 0x80); canvas.Rectangle(36, 608, 36, 36); canvas.FillStroke(); canvas.SetRGBColorFillF(0.5f, 0.25f, 0.60f); canvas.Rectangle(90, 608, 36, 36); canvas.FillStroke(); canvas.SetGrayFill(0.5f); canvas.Rectangle(144, 608, 36, 36); canvas.FillStroke(); canvas.SetCMYKColorFill(0xFF, 0xFF, 0x00, 0x80); canvas.Rectangle(198, 608, 36, 36); canvas.FillStroke(); canvas.SetCMYKColorFillF(0f, 1f, 1f, 0.5f); canvas.Rectangle(252, 608, 36, 36); canvas.FillStroke(); } }
// =========================================================================== public override void Write(Stream stream) { // step 1 using (Document document = new Document()) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 PdfContentByte canvas = writer.DirectContent; PdfSpotColor psc_g = new PdfSpotColor( "iTextSpotColorGray", new GrayColor(0.9f) ); PdfSpotColor psc_rgb = new PdfSpotColor( "iTextSpotColorRGB", new BaseColor(0x64, 0x95, 0xed) ); PdfSpotColor psc_cmyk = new PdfSpotColor( "iTextSpotColorCMYK", new CMYKColor(0.3f, .9f, .3f, .1f) ); ColorRectangle(canvas, new SpotColor(psc_g, 0.5f), 36, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.1f), 90, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.2f), 144, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.3f), 198, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.4f), 252, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.5f), 306, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.6f), 360, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_rgb, 0.7f), 416, 770, 36, 36 ); ColorRectangle(canvas, new SpotColor(psc_cmyk, 0.25f), 470, 770, 36, 36 ); canvas.SetColorFill(psc_g, 0.5f); canvas.Rectangle(36, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(psc_g, 0.9f); canvas.Rectangle(90, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(psc_rgb, 0.5f); canvas.Rectangle(144, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(psc_rgb, 0.9f); canvas.Rectangle(198, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(psc_cmyk, 0.5f); canvas.Rectangle(252, 716, 36, 36); canvas.FillStroke(); canvas.SetColorFill(psc_cmyk, 0.9f); canvas.Rectangle(306, 716, 36, 36); canvas.FillStroke(); } }