private void Add(SKDocument pdf, XContainer container) { float width = (float)container.Template.Width; float height = (float)container.Template.Height; using (SKCanvas canvas = pdf.BeginPage(width, height)) { // Calculate x and y page scale factors. double scaleX = width / container.Template.Width; double scaleY = height / container.Template.Height; double scale = Math.Min(scaleX, scaleY); // Set scaling function. _scaleToPage = (value) => (float)(value * scale); // Draw container template contents to pdf graphics. if (container.Template.Background.A > 0) { DrawBackgroundInternal( canvas, container.Template.Background, Rect2.Create(0, 0, width / scale, height / scale)); } // Draw template contents to pdf graphics. Draw(canvas, container.Template, container.Data.Properties, container.Data.Record); // Draw page contents to pdf graphics. Draw(canvas, container, container.Data.Properties, container.Data.Record); } }
private void Add(SKDocument pdf, IPageContainer container) { using (var canvas = pdf.BeginPage((float)container.Template.Width, (float)container.Template.Height)) { _presenter.Render(canvas, _renderer, container, 0, 0); } }
private void DrawPage(IEnumerable <LabelContent> labelContents, SKDocument doc) { using var canvas = doc.BeginPage(this._layoutProperty.PageWidth, this._layoutProperty.PageHeight); var count = 0; for (int row = 0; row < this._layoutProperty.LabelRowCount; row++) { for (int column = 0; column < this._layoutProperty.LabelColumnCount; column++) { if (count >= labelContents.Count()) { break; } var content = labelContents.ElementAt(count); this.DrawLabel( content, canvas, this._layoutProperty.Margin + column * this._layoutProperty.UnitSize.Width, this._layoutProperty.Margin + row * this._layoutProperty.UnitSize.Height); count++; } } if (this._pdfContext.IsVisibleSeparateLine) { this.DrawSeparateLine(canvas); } doc.EndPage(); }
/// <summary> /// Ends the current page if it exists and starts a new page. /// </summary> private static void StartNextPage() { EndPage(); _canvas = _document.BeginPage(PAGE_WIDTH, PAGE_HEIGHT); _yPos = MARGIN_TOP; _pageNr++; }
public void ManagedStreamIsNotCollectedPrematurely() { using (var stream = new SKDynamicMemoryWStream()) using (SKDocument document = SKDocument.CreatePdf(stream, new SKDocumentPdfMetadata())) { var paintList = new List <SKPaint>(); for (int index = 0; index < 10; index++) { Stream fontStream = File.OpenRead(Path.Combine(PathToFonts, "Roboto2-Regular_NoEmbed.ttf")); SKTypeface typeface = SKTypeface.FromStream(fontStream); SKPaint paint = new SKPaint { Typeface = typeface }; paintList.Add(paint); } using (SKCanvas pageCanvas = document.BeginPage(792, 842)) { foreach (var paint in paintList) { for (int i = 0; i < 100; i++) { pageCanvas.DrawText("Text", 0, 5 * i, paint); } } document.EndPage(); } GC.Collect(); document.Close(); } }
private void Add(SKDocument pdf, PageContainerViewModel container) { using var canvas = pdf.BeginPage((float)container.Template.Width, (float)container.Template.Height); _presenter.Render(canvas, _renderer, null, container, 0, 0); }
public override void PrintPattern(float scale, Pattern pattern, List <Vector2> positions, Vector2 padding, string path) { this.scale = scale; //PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. //< table > //< thead >< tr >< th class="tdw1">Size</th><th class="tdw2">Width x Height(mm)</th><th class="tdw2">Width x Height(in)</th></tr></thead> //<tbody> //<tr><td>4A0</td><td>1682 x 2378 mm</td><td>66.2 x 93.6 in</td></tr> //<tr><td>2A0</td><td>1189 x 1682 mm</td><td>46.8 x 66.2 in</td></tr> //<tr><td>A0</td><td>841 x 1189 mm</td><td>33.1 x 46.8 in</td></tr> //<tr><td>A1</td><td>594 x 841 mm</td><td>23.4 x 33.1 in</td></tr> //<tr><td>A2</td><td>420 x 594 mm</td><td>16.5 x 23.4 in</td></tr> //<tr><td>A3</td><td>297 x 420 mm</td><td>11.7 x 16.5 in</td></tr> //<tr><td>A4</td><td> 210 x 297 mm</td><td>8.3 x 11.7 in</td></tr> //<tr><td>A5</td><td>148 x 210 mm</td><td>5.8 x 8.3 in</td></tr> //<tr><td>A6</td><td>105 x 148 mm</td><td>4.1 x 5.8 in</td></tr> //<tr><td>A7</td><td>74 x 105 mm</td><td>2.9 x 4.1 in</td></tr> //<tr><td>A8</td><td>52 x 74 mm</td><td>2.0 x 2.9 in</td></tr> //<tr><td>A9</td><td>37 x 52 mm</td><td>1.5 x 2.0 in</td></tr> //<tr><td>A10</td><td>26 x 37 mm</td><td>1.0 x 1.5 in</td></tr> //</tbody> //</table> SKDocumentPdfMetadata metadata = new SKDocumentPdfMetadata { Author = "Hoodie Maker", Creation = DateTime.Now, Creator = "Hoodie Maker", Keywords = "PDF, Hoodie, Pattern", Modified = DateTime.Now, Producer = "Hoodie Maker", Subject = "Hoodie Maker Pattern", Title = "Hoodie Pattern", }; using (SKFileWStream stream = new SKFileWStream(path)) using (SKDocument document = SKDocument.CreatePdf(stream, metadata)) { for (int i = 0; i < pattern.Parts.Count; i++) { Vector2 position = positions[i]; PatternPart part = pattern.Parts[i]; //A0 841mm x 1189 mm //float width = pageSize.X * Utils.pntPerMM; //float height = pageSize.Y * Utils.pntPerMM; PartExtents extents = PartExtents.CalcPartExtents(part); using (SKCanvas pdfCanvas = document.BeginPage(Scale(extents.Width + padding.X), Scale(extents.Height + padding.Y))) { canvas = pdfCanvas; DrawPart(part, position, colorFillPrint, MapEntityColorsForPrint(EntityType.Normal), MapEntityColorsForPrint(EntityType.Text)); document.EndPage(); } } document.Close(); } System.Diagnostics.Debug.WriteLine(path); //Task.Run(async () => await OpenDoc(path)); }