Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
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();
        }
Exemplo n.º 4
0
 /// <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++;
 }
Exemplo n.º 5
0
        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();
                }
        }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 7
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));
        }