public MigraDocPrintDocument(string ddl) : this() { var document = DdlReader.DocumentFromString(ddl); _renderer = MakeRenderer(document); }
private Document ClonedDocument() { #if MIGRADOC132 // Workaround for bug in Clone() implementation (fixed with PDFsharp 1.50 beta 2). var str = DdlWriter.WriteToString(Document); var result = DdlReader.DocumentFromString(str); return(result); #else return(Document.Clone()); #endif }
private DocumentPreview createPreview(string devSerial, string devFilename) { if (prepareData(devSerial, devFilename) == false) { return(null); } Protocol protocol = prepareProtocol(); if (protocol == null) { return(null); } // This renders the document; takes a while for big documents DocumentPreview preview = new DocumentPreview(); preview.Document = DdlReader.DocumentFromString(protocol.GetDocumentDDL()); return(preview); }
/// <summary> /// Called when the Ddl property has changed. /// </summary> void DdlUpdated() { if (_ddl != null) { _document = DdlReader.DocumentFromString(_ddl); _renderer = new DocumentRenderer(_document); //this.renderer.PrivateFonts = this.privateFonts; _renderer.PrepareDocument(); //IDocumentPaginatorSource source = this.documentViewer.Document; //IDocumentPaginatorSource source = this.documentViewer.Document; int pageCount = _renderer.FormattedDocument.PageCount; if (pageCount == 0) { return; } // HACK: hardcoded A4 size //double pageWidth = XUnit.FromMillimeter(210).Presentation; //double pageHeight = XUnit.FromMillimeter(297).Presentation; //Size a4 = new Size(pageWidth, pageHeight); XUnit pageWidth, pageHeight; Size size96 = GetSizeOfPage(1, out pageWidth, out pageHeight); FixedDocument fixedDocument = new FixedDocument(); fixedDocument.DocumentPaginator.PageSize = size96; for (int pageNumber = 1; pageNumber <= pageCount; pageNumber++) { try { size96 = GetSizeOfPage(1, out pageWidth, out pageHeight); DrawingVisual dv = new DrawingVisual(); DrawingContext dc = dv.RenderOpen(); //XGraphics gfx = XGraphics.FromDrawingContext(dc, new XSize(XUnit.FromMillimeter(210).Point, XUnit.FromMillimeter(297).Point), XGraphicsUnit.Point); XGraphics gfx = XGraphics.FromDrawingContext(dc, new XSize(pageWidth.Point, pageHeight.Presentation), XGraphicsUnit.Point); _renderer.RenderPage(gfx, pageNumber, PageRenderOptions.All); dc.Close(); // Create page content PageContent pageContent = new PageContent(); pageContent.Width = size96.Width; pageContent.Height = size96.Height; FixedPage fixedPage = new FixedPage(); fixedPage.Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(0xFE, 0xFE, 0xFE)); UIElement visual = new DrawingVisualPresenter(dv); FixedPage.SetLeft(visual, 0); FixedPage.SetTop(visual, 0); fixedPage.Width = size96.Width; fixedPage.Height = size96.Height; fixedPage.Children.Add(visual); fixedPage.Measure(size96); fixedPage.Arrange(new Rect(new Point(), size96)); fixedPage.UpdateLayout(); ((IAddChild)pageContent).AddChild(fixedPage); fixedDocument.Pages.Add(pageContent); } catch (Exception) { // eat exception } viewer.Document = fixedDocument; } } else { viewer.Document = null; } }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "POST", Route = "Documents/RenderDdl")] HttpRequestMessage req, TraceWriter log) { PdfDocument doc = null; PdfDocumentRenderer renderer = null; string ddl = await req.Content.ReadAsStringAsync(); //---------------------------------------------------------------------------------------------------------- // Parse the DDL and render it to a PDF document object. await Task.Run(() => { renderer = new PdfDocumentRenderer(true) { Document = DdlReader.DocumentFromString(ddl) }; }); await Task.Run(() => { renderer.RenderDocument(); doc = renderer.PdfDocument; }); //---------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------- // Save the rendered document to a byte array. byte[] buffer = null; using (var strm = new MemoryStream()) { doc.Save(strm, false); strm.Position = 0; buffer = new byte[strm.Length]; await strm.ReadAsync(buffer, 0, buffer.Length); } //---------------------------------------------------------------------------------------------------------- var title = doc?.Info?.Title; if (string.IsNullOrEmpty(title)) { title = "document"; } title = System.Web.HttpUtility.UrlEncode(title); //---------------------------------------------------------------------------------------------------------- // Construct the response from the generated byte array. var response = new HttpResponseMessage(); try { response.Content = new ByteArrayContent(buffer); response.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse($"attachment; filename={title}.pdf"); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); } catch (Exception ex) { var msg = ex.Message; } //---------------------------------------------------------------------------------------------------------- return(response); }