// =========================================================================== 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 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 CellLayout(PdfPCell cell, iTextSharp.text.Rectangle position, PdfContentByte[] canvases) { if (Helper.IsTransparent(_backgroundBrush)) position.BackgroundColor = null; var gradientBrush = _backgroundBrush as GradientBrush; if (gradientBrush != null) { PdfShading shading = null; var fromColor = PdfPrinter.GetBaseColor(gradientBrush.GradientStops.FirstOrDefault().Color); var toColor = PdfPrinter.GetBaseColor(gradientBrush.GradientStops.LastOrDefault().Color); var linearGradientBrush = _backgroundBrush as LinearGradientBrush; if (linearGradientBrush != null) { float x0, y0, x1, y1; var brushSlopeAbs = Math.Abs(linearGradientBrush.EndPoint.Y - linearGradientBrush.StartPoint.Y) / Math.Abs(linearGradientBrush.EndPoint.X - linearGradientBrush.StartPoint.X); var cellSlopeAbs = position.Height / position.Width; if (linearGradientBrush.EndPoint.X > linearGradientBrush.StartPoint.X) // from left to right { x0 = position.Left; if (linearGradientBrush.EndPoint.Y > linearGradientBrush.StartPoint.Y) // from top to bottom { y0 = position.Top; if (cellSlopeAbs >= brushSlopeAbs) { x1 = position.Left + (float)(position.Height / brushSlopeAbs); y1 = position.Bottom; } else { x1 = position.Right; y1 = position.Top - (float)(position.Width * brushSlopeAbs); } } else // from bottom to top { y0 = position.Bottom; if (cellSlopeAbs >= brushSlopeAbs) { x1 = position.Left + (float)(position.Height / brushSlopeAbs); y1 = position.Top; } else { x1 = position.Right; y1 = position.Bottom + (float)(position.Width * brushSlopeAbs); } } } else // from right to left { x0 = position.Right; if (linearGradientBrush.EndPoint.Y > linearGradientBrush.StartPoint.Y) // from top to bottom { y0 = position.Top; if (cellSlopeAbs >= brushSlopeAbs) { x1 = position.Right - (float)(position.Height / brushSlopeAbs); y1 = position.Bottom; } else { x1 = position.Right; y1 = position.Top - (float)(position.Width * brushSlopeAbs); } } else // from bottom to top { y0 = position.Bottom; if (cellSlopeAbs >= brushSlopeAbs) { x1 = position.Right - (float)(position.Height / brushSlopeAbs); y1 = position.Top; } else { x1 = position.Right; y1 = position.Bottom + (float)(position.Width * brushSlopeAbs); } } } shading = PdfShading.SimpleAxial(_writer, x0, y0, x1, y1, fromColor, toColor, false, false); } var radialGradientBrush = _backgroundBrush as RadialGradientBrush; if (radialGradientBrush != null) { float xCenter = 0, yCenter = 0, radius = 0; shading = PdfShading.SimpleRadial(_writer, xCenter, yCenter, 0, xCenter, yCenter, radius, fromColor, toColor, true, true); } if (shading != null) position.BackgroundColor = new ShadingColor(new PdfShadingPattern(shading)); } //Fill the rectangle canvases[PdfPTable.BACKGROUNDCANVAS].Rectangle(position); }