public void It_should_render_images() { var redBlue = CreateBitmap(Brushes.Red, Brushes.Blue, 400, 400); var blueYellow = CreateBitmap(Brushes.Blue, Brushes.Yellow, 30, 30); var renderer = new PdfRenderer(); var vBox = new VBox(); var hBox = new HBox(); AddComponent(hBox, new Image { Src = redBlue, Width = 40, Height = 40, Scaling = ImageScaling.Uniform }); AddComponent(hBox, new Image { Src = redBlue, Width = 40, Height = 30, Scaling = ImageScaling.Uniform, Alignment = Alignment.Center }); AddComponent(hBox, new Image { Src = redBlue, Width = 40, Height = 30, Scaling = ImageScaling.Uniform, Alignment = Alignment.Parse("center left") }); AddComponent(hBox, new Image { Src = redBlue, Width = 40, Height = 30, Scaling = ImageScaling.Uniform, Alignment = Alignment.Parse("center right") }); vBox.AddComponent(hBox); hBox = new HBox(); AddComponent(hBox, new Image { Src = redBlue, Width = 30, Height = 40, Scaling = ImageScaling.Uniform, Alignment = Alignment.Center }); AddComponent(hBox, new Image { Src = redBlue, Width = 30, Height = 40, Scaling = ImageScaling.Uniform, Alignment = Alignment.Parse("top center") }); AddComponent(hBox, new Image { Src = redBlue, Width = 30, Height = 40, Scaling = ImageScaling.Uniform, Alignment = Alignment.Parse("bottom center") }); vBox.AddComponent(hBox); hBox = new HBox(); AddComponent(hBox, new Image { Src = redBlue, Width = 10, Height = 20, Scaling = ImageScaling.Fill }); AddComponent(hBox, new Image { Src = blueYellow, Scaling = ImageScaling.None }); AddComponent(hBox, new Image { Src = blueYellow, Width = 20, Height = 20, Alignment = Alignment.Center, Scaling = ImageScaling.None }); AddComponent(hBox, new Image { Src = blueYellow, Width = 20, Height = 20, Alignment = Alignment.Parse("top left"), Scaling = ImageScaling.None }); AddComponent(hBox, new Image { Src = blueYellow, Width = 20, Height = 20, Alignment = Alignment.Parse("bottom right"), Scaling = ImageScaling.None }); vBox.AddComponent(hBox); var form = new Form(vBox); var doc = new PdfDocument(); var page = doc.AddPage(); renderer.Render(form, page, new PdfRendererOptions { AdjustPageSize = true }); PdfImageComparer.ComparePdfs("bitmaps", doc); }
public void QueuePage(Page page) { // Process markers PageSequence pageSequence = page.getPageSequence(); if (pageSequence != currentPageSequence) { currentPageSequence = pageSequence; currentPageSequenceMarkers = null; } ArrayList markers = page.getMarkers(); if (markers != null) { if (documentMarkers == null) { documentMarkers = new ArrayList(); } if (currentPageSequenceMarkers == null) { currentPageSequenceMarkers = new ArrayList(); } for (int i = 0; i < markers.Count; i++) { Marker marker = (Marker)markers[i]; marker.releaseRegistryArea(); currentPageSequenceMarkers.Add(marker); documentMarkers.Add(marker); } } // Try to optimise on the common case that there are no pages pending // and that all ID references are valid on the current pages. This // short-cuts the pipeline and renders the area immediately. if ((renderQueue.Count == 0) && idReferences.IsEveryIdValid()) { renderer.Render(page); } else { AddToRenderQueue(page); } pageCount++; }
private async Task <byte[]> Generate() { var form = await _loader.LoadForm(new MemoryStream(_formInBytes)); var pdf = new PdfDocument(); _renderer.Render(form, pdf.AddPage(), new PdfRendererOptions { AdjustPageSize = true }); _renderer.Render(form, pdf.AddPage(), new PdfRendererOptions { ConfigureGraphics = x => x.ScaleTransform(0.5, 0.5) }); using (var mem = new MemoryStream()) { pdf.Save(mem); return(mem.ToArray()); } }
public byte[] RenderPdf([FromUri] string id, [FromUri] int dpi = 360, [FromUri] int page = 1) { var pdfContent = ContentManager.GetInstance().GetExamplePdf(id); var image = PdfRenderer.Render(pdfContent, dpi, page); var stream = new MemoryStream(); image.Save(stream, ImageFormat.Jpeg); return(stream.ToArray()); }
protected void ConvertDocumentToHtmlFile(JupyterDocument document, string fileName, bool openFile = false) { using (var writer = FileHelper.CreateStream(fileName)) { var renderer = new PdfRenderer(writer); renderer.Render(document); } if (openFile) { FileHelper.ProcessFile(fileName); } }
public void Render_should_honor_size_transformation_in_measure() { var renderer = new PdfRenderer(); var form = new Form(new Panel { Width = SizeUnit.Unlimited, Height = SizeUnit.Unlimited }); var page = new PdfDocument().AddPage(); page.Width = 100; page.Height = 30; renderer.Render(form, page, new PdfRendererOptions { ConfigureGraphics = g => g.ScaleTransform(2, 0.5) }); form.Content.Layout.ShouldBe(new Rectangle(0, 0, 50, 60)); }
private static Bitmap RenderImage (PdfRenderer.Page page) { var bitmap = Bitmap.CreateBitmap (page.Width, page.Height, Bitmap.Config.Argb8888); // Fill with default while color first var canvas = new Canvas(bitmap); var paint = new Paint () { Color = Color.White }; canvas.DrawRect (new Rect (0, 0, page.Width, page.Height), paint); // Render content page.Render (bitmap, null, null, PdfRenderMode.ForDisplay); return bitmap; }
public void Render_should_adjust_page_size() { var renderer = new PdfRenderer(); var form = new Form(new Panel { Width = 200, Height = 100 }); var page = new PdfDocument().AddPage(); page.Width = 600; page.Height = 400; renderer.Render(form, page, new PdfRendererOptions { AdjustPageSize = true }); page.Width.ShouldBe(200); page.Height.ShouldBe(100); }
public void It_should_render_panels_and_hboxes() { var renderer = new PdfRenderer(); var hbox = new HBox { Alignment = Alignment.Center }; hbox.AddComponent(new Panel { BackgroundColor = Color.Yellow, Padding = new Spacer(5), Border = new Border(3, Color.Red), Alignment = new Alignment(VerticalAlignment.Bottom) }); hbox.AddComponent(new Panel { BackgroundColor = Color.Green, Padding = new Spacer(10, 5), Border = new Border(2, Color.Red), Alignment = new Alignment(VerticalAlignment.Center) }); hbox.AddComponent(new Panel { BackgroundColor = Color.Blue, Padding = new Spacer(15, 5), Border = new Border(1, Color.Red) }); var panel = new Panel { Width = SizeUnit.Unlimited, Height = SizeUnit.Unlimited, BackgroundColor = Color.LightSteelBlue, Padding = new Spacer(2), Inner = hbox }; var form = new Form(panel); var doc = new PdfDocument(); var page = doc.AddPage(); page.Width = 50; page.Height = 40; renderer.Render(form, page); PdfImageComparer.ComparePdfs("panels_hbox", doc); }
public void Render_should_use_page_size() { var renderer = new PdfRenderer(); var form = new Form(new Panel { Width = SizeUnit.Unlimited, Height = SizeUnit.Unlimited }); var page = new PdfDocument().AddPage(); page.Width = 600; page.Height = 400; renderer.Render(form, page); form.Content.Layout.ShouldBe(new Rectangle(0, 0, 600, 400)); page.Width.ShouldBe(600); page.Height.ShouldBe(400); }
public void Render_should_adjust_page_size_honoring_transformation() { var renderer = new PdfRenderer(); var form = new Form(new Panel { Width = 200, Height = 100 }); var page = new PdfDocument().AddPage(); page.Width = 600; page.Height = 400; renderer.Render(form, page, new PdfRendererOptions { AdjustPageSize = true, ConfigureGraphics = g => g.ScaleTransform(0.5, 0.5) }); page.Width.ShouldBe(100); page.Height.ShouldBe(50); }
public void It_should_render_rounded_panels_with_borders() { var renderer = new PdfRenderer(); var vbox = new VBox(); var borders = new[] { new [] { "10 0 0 0", "0 10 0 0", "0 0 10 0", "0 0 0 10" }, new [] { "10 10 0 0", "10 0 10 0", "10 0 0 10", "0 0 10 10" }, new [] { "10 10 10 0", "10 0 10 10", "10 10 0 10", "10 10 10 10" } }; foreach (var boxLine in borders) { var hbox = new HBox(); foreach (var border in boxLine) { hbox.AddComponent(new Panel { Margin = new Spacer(1), BackgroundColor = Color.Orange, Width = 24, Height = 24, Border = Border.Parse("1 black"), BorderRadius = BorderRadius.Parse(border) }); } vbox.AddComponent(hbox); } var doc = new PdfDocument(); var page = doc.AddPage(); renderer.Render(new Form(vbox), page, new PdfRendererOptions { AdjustPageSize = true }); PdfImageComparer.ComparePdfs("panels_rounded_border", doc); }
public IActionResult DownloadToPdf(JupyterPreviewModel model) { var jupyterText = model.PreviewJson; if (!string.IsNullOrEmpty(jupyterText)) { //convert to document var document = Jupyter.Parse(jupyterText); //convert to html string fileName = "jupyterDocument.pdf"; byte[] fileBytes = null; using (var memoryStream = new MemoryStream()) { var htmlRenderer = new PdfRenderer(memoryStream); htmlRenderer.Render(document); fileBytes = memoryStream.ToArray(); } return(File(fileBytes, "application/force-download", fileName)); } return(RedirectToAction("Index")); }
public static void Save(Control?control, Size size, string path) { if (control is null) { return; } if (path.EndsWith("png", StringComparison.OrdinalIgnoreCase)) { PngRenderer.Render(control, size, path); } if (path.EndsWith("svg", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); SvgRenderer.Render(control, size, stream); } if (path.EndsWith("pdf", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); PdfRenderer.Render(control, size, stream, 96); } if (path.EndsWith("xps", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); XpsRenderer.Render(control, size, stream, 96); } if (path.EndsWith("skp", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); SkpRenderer.Render(control, size, stream); } }
public void It_should_render_text() { var renderer = new PdfRenderer(); var content = new HBox { Width = SizeUnit.Unlimited }; content.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Yellow, Margin = new Spacer(1), Border = new Border(1, Color.Black), Padding = new Spacer(2), Inner = new Label { TextColor = Color.Red, Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic), Text = "Hello my friend!\nIt's nice to see you!\n\nWhat is a nice and sunny day, is not it?" } }); content.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.DarkSeaGreen, Margin = new Spacer(1), Border = new Border(1, Color.Black), Padding = new Spacer(2), Inner = new Link { TextColor = Color.Blue, Font = new FontInfo(TestFontFamily.Serif, 14, FontInfoStyle.Bold), Text = "How are you doing today?", Uri = "http://google.com" } }); var textBox = new TextBox(); textBox.AddComponent(new Label { Text = "Hello!\n", TextColor = Color.Green, Font = new FontInfo(TestFontFamily.Monospace, 20, FontInfoStyle.Underline) }); textBox.AddComponent(new Label { Text = "Hi Bob, nice to see you after", TextColor = Color.Black, Font = new FontInfo(TestFontFamily.SansSerif, 10) }); textBox.AddComponent(new Label { Text = "20", TextColor = Color.Red, Font = new FontInfo(TestFontFamily.SansSerif, 10, FontInfoStyle.Bold) }); textBox.AddComponent(new Label { Text = "years!\n", TextColor = Color.Black, Font = new FontInfo(TestFontFamily.SansSerif, 10) }); textBox.AddComponent(new Label { Text = "I'm sure you'd love to see my new", TextColor = Color.Black, Font = new FontInfo(TestFontFamily.SansSerif, 10) }); textBox.AddComponent(new Link { Text = "web", TextColor = Color.Blue, Font = new FontInfo(TestFontFamily.SansSerif, 12, FontInfoStyle.Italic), Uri = "http://google.com" }); textBox.AddComponent(new Link { Text = "site", TextColor = Color.Green, TextContinuation = true, Font = new FontInfo(TestFontFamily.SansSerif, 12, FontInfoStyle.Italic), Uri = "http://google.com" }); content.AddComponent(new Panel { Width = SizeUnit.Unlimited, Height = SizeUnit.Unlimited, BackgroundColor = Color.LightYellow, Margin = new Spacer(1), Border = new Border(1, Color.Black), Padding = new Spacer(2), Inner = textBox }); var form = new Form(content); var doc = new PdfDocument(); var page = doc.AddPage(); page.Width = 320; page.Height = 400; renderer.Render(form, page); PdfImageComparer.ComparePdfs("text_box", doc); }
public byte[] ToPdf() { IRenderer renderer = new PdfRenderer(); return(renderer.Render(_report)); }
public void It_should_render_viewports() { var renderer = new PdfRenderer(); var stack = new Stack(); stack.AddComponent(new Panel { Width = 100, Height = 100, Border = Border.Parse("1 #808080"), BackgroundColor = Color.LightBlue, BorderRadius = BorderRadius.Parse("25") }); stack.AddComponent(new Viewport { Alignment = Alignment.Parse("center left"), Width = 10, Inner = new Panel { Width = 40, Height = 40, Border = Border.Parse("1 #808080"), BackgroundColor = Color.White, BorderRadius = BorderRadius.Parse("20") }, ContentAlignment = Alignment.Parse("center right") }); stack.AddComponent(new Viewport { Alignment = Alignment.Parse("top center"), Height = 10, Inner = new Panel { Width = 40, Height = 40, Border = Border.Parse("1 #808080"), BackgroundColor = Color.White, BorderRadius = BorderRadius.Parse("20") }, ContentAlignment = Alignment.Parse("bottom center") }); stack.AddComponent(new Viewport { Alignment = Alignment.Parse("center right"), Width = 10, Inner = new Panel { Width = 40, Height = 40, Border = Border.Parse("1 #808080"), BackgroundColor = Color.White, BorderRadius = BorderRadius.Parse("20") }, ContentAlignment = Alignment.Parse("center left") }); stack.AddComponent(new Viewport { Alignment = Alignment.Parse("bottom center"), Height = 10, Inner = new Panel { Width = 40, Height = 40, Border = Border.Parse("1 #808080"), BackgroundColor = Color.White, BorderRadius = BorderRadius.Parse("20") }, ContentAlignment = Alignment.Parse("top center") }); stack.AddComponent(new Viewport { Alignment = Alignment.Parse("center center"), ClipMargin = Spacer.Parse("3 1"), Inner = new Panel { Width = 40, Height = 40, BackgroundColor = Color.White, Border = Border.Parse("1 #808080"), BorderRadius = BorderRadius.Parse("20") }, ContentAlignment = Alignment.Parse("center center") }); var form = new Form(stack); var doc = new PdfDocument(); renderer.Render(form, doc.AddPage(), new PdfRendererOptions { AdjustPageSize = true }); PdfImageComparer.ComparePdfs("viewport", doc); }
public void It_should_render_text_with_different_line_heights() { var renderer = new PdfRenderer(); var content = new HBox { Width = SizeUnit.Unlimited }; content.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Yellow, Margin = new Spacer(1), Inner = new Label { TextColor = Color.Red, Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic), Text = "Hello my friend!\nIt's nice to see you!\n\nWhat is a nice and sunny day, is not it?", LineHeight = 1.2f } }); content.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Yellow, Margin = new Spacer(1), Inner = new Label { TextColor = Color.Red, Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic), Text = "Hello my friend!\nIt's nice to see you!\n\nWhat is a nice and sunny day, is not it?", LineHeight = 2f } }); content.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Yellow, Margin = new Spacer(1), Inner = new Label { TextColor = Color.Red, Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic), Text = "Hello my friend!\nIt's nice to see you!\n\nWhat is a nice and sunny day, is not it?", LineHeight = 0.8f } }); var form = new Form(content); var doc = new PdfDocument(); var page = doc.AddPage(); page.Width = 300; page.Height = 400; renderer.Render(form, page); PdfImageComparer.ComparePdfs("text_box_line_height", doc); }
public void It_should_render_text_with_alignments() { var renderer = new PdfRenderer(); var labelBox = new HBox { Width = SizeUnit.Unlimited }; foreach (var align in new[] { TextAlignment.Left, TextAlignment.Right, TextAlignment.Center, TextAlignment.Justify }) { labelBox.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Yellow, Margin = new Spacer(1), Border = new Border(1, Color.Black), Padding = new Spacer(2), Inner = new Label { Width = SizeUnit.Unlimited, TextColor = Color.Red, TextAlignment = align, Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic), Text = "Hello my friend!\nIt's nice to see you!\n\nWhat is a nice and sunny day, is not it?" } }); } var areaBox = new HBox { Width = SizeUnit.Unlimited }; foreach (var align in new[] { TextAlignment.Left, TextAlignment.Right, TextAlignment.Center, TextAlignment.Justify }) { var textBox = new TextBox { Width = SizeUnit.Unlimited, TextAlignment = align }; textBox.AddComponent(new Label { TextColor = Color.Red, Text = "Hi Bob!", Font = new FontInfo(TestFontFamily.Serif, 10, FontInfoStyle.Underline | FontInfoStyle.Italic) }); textBox.AddComponent(new Link { TextColor = Color.Black, Text = "Check out this: ", Font = new FontInfo(TestFontFamily.Serif, 12, FontInfoStyle.Regular) }); textBox.AddComponent(new Link { TextColor = Color.Purple, Text = "great link!!!", Font = new FontInfo(TestFontFamily.Serif, 8, FontInfoStyle.Underline), Uri = "http://google.com" }); areaBox.AddComponent(new Panel { Width = 100, Height = SizeUnit.Unlimited, BackgroundColor = Color.Green, Margin = new Spacer(1), Border = new Border(1, Color.Black), Padding = new Spacer(2), Inner = textBox }); } var content = new VBox { Width = SizeUnit.Unlimited }; content.AddComponent(labelBox); content.AddComponent(areaBox); var form = new Form(content); var doc = new PdfDocument(); var page = doc.AddPage(); page.Width = 400; page.Height = 400; renderer.Render(form, page); PdfImageComparer.ComparePdfs("text_box_align", doc); }