コード例 #1
0
        // ---

        private void DrawImage(PdfDocument pdfDoc, eImageMode ImageMode, Image image)
        {
            var page     = pdfDoc.AddPage();
            var gfx      = XGraphics.FromPdfPage(page);
            var pdfImage = XImage.FromGdiPlusImage(image);


            switch (ImageMode)
            {
            case eImageMode.Scale:
                if (pdfImage.PixelWidth <= page.Width && pdfImage.PixelHeight <= page.Height)     // no need for scaling - image is smaller than page
                {
                    gfx.DrawImage(pdfImage, new XRect(0, 0, pdfImage.PixelWidth, pdfImage.PixelHeight));
                }
                else if (pdfImage.PixelWidth > page.Width)     // scale by width
                {
                    gfx.DrawImage(pdfImage, new XRect(0, 0, page.Width, (page.Width / pdfImage.PixelWidth) * pdfImage.PixelHeight));
                }
                else     // scale by height
                {
                    gfx.DrawImage(pdfImage, new XRect(0, 0, (page.Height / pdfImage.PixelHeight) * pdfImage.PixelWidth, page.Height));
                }
                break;

            case eImageMode.Stretch:
                gfx.DrawImage(pdfImage, new XRect(0, 0, page.Width, page.Height), new XRect(0, 0, pdfImage.PixelWidth, pdfImage.PixelHeight), XGraphicsUnit.Point);
                break;

            default:
            case eImageMode.None:
                gfx.DrawImage(pdfImage, new XRect(0, 0, pdfImage.PixelWidth, pdfImage.PixelHeight));
                break;
            }
        }
コード例 #2
0
        public async Task <Stream> CreateFromImageUrl(string URL, eImageMode ImageMode = eImageMode.None)
        {
            var pdfDoc = new PdfDocument();

            /* read as Bytes
             * byte[] data;
             * using (var client = new WebClient())
             *  data = await client.DownloadDataTaskAsync(new Uri(URL));
             * using (var ms = new MemoryStream(data))
             * using (var image = Image.FromStream(ms))
             *  this.DrawImage(pdfDoc, ImageMode, image);
             */

            // read as Stream
            using (var client = new WebClient())
                using (var imageStream = await client.OpenReadTaskAsync(new Uri(URL)))
                    using (var image = Image.FromStream(imageStream))
                        this.DrawImage(pdfDoc, ImageMode, image);

            var stream = new MemoryStream();

            pdfDoc.Save(stream, false);
            pdfDoc.Dispose();

            return(stream);
        }
コード例 #3
0
        public Stream CreateFromImageFile(string FilePath, eImageMode ImageMode)
        {
            var HtmlString = $@"
		        <style>
			        img {{ width: 100%; }}
                </style>
		        <img src='{FilePath}' />
	        "    ;

            return(this.CreateFromHtmlString(HtmlString));
        }
コード例 #4
0
        public Stream CreateFromBitmap(Bitmap Bitmap, eImageMode ImageMode)
        {
            // create temporary file
            var temp = $"{AppDomain.CurrentDomain.BaseDirectory}temp_{DateTime.Now.ToString("yyyyMMddHHmmss")}.jpg";

            Bitmap.Save(temp);

            var stream = this.CreateFromImageFile(temp, ImageMode);

            File.Delete(temp);
            return(stream);
        }
コード例 #5
0
        public Stream CreateFromBitmap(Bitmap Bitmap, eImageMode ImageMode = eImageMode.None)
        {
            var pdfDoc = new PdfDocument();

            using (var image = Bitmap)
                this.DrawImage(pdfDoc, ImageMode, image);

            var stream = new MemoryStream();

            pdfDoc.Save(stream, false);
            pdfDoc.Dispose();

            return(stream);
        }
コード例 #6
0
 public async Task <Stream> CreateFromScreenshot(string URL, string ChromePath = null, eImageMode ImageMode = eImageMode.None)
 {
     return(await this.PdfProvider.CreateFromScreenshot(URL, ChromePath, ImageMode));
 }
コード例 #7
0
 public Stream CreateFromImageFile(string FilePath, eImageMode ImageMode = eImageMode.None)
 {
     return(this.PdfProvider.CreateFromImageFile(FilePath, ImageMode));
 }
コード例 #8
0
 public async Task <Stream> CreateFromImageUrl(string URL, eImageMode ImageMode = eImageMode.None)
 {
     return(await this.PdfProvider.CreateFromImageUrl(URL, ImageMode));
 }
コード例 #9
0
 public Stream CreateFromImage(Image Image, eImageMode ImageMode = eImageMode.None)
 {
     return(this.PdfProvider.CreateFromImage(Image, ImageMode));
 }
コード例 #10
0
 public Stream CreateFromBitmap(Bitmap Bitmap, eImageMode ImageMode = eImageMode.None)
 {
     return(this.PdfProvider.CreateFromBitmap(Bitmap, ImageMode));
 }
コード例 #11
0
 public override async Task <Stream> CreateFromScreenshot(string URL, string ChromePath = null, eImageMode ImageMode = eImageMode.None)
 {
     return(ProcessManager.InteractAsStream(this.UtilityPath, $"{GlobalOptions} {URL} -", ""));
 }
コード例 #12
0
 public async Task <Stream> CreateFromImageUrl(string URL, eImageMode ImageMode)
 {
     return(this.CreateFromImageFile(URL, ImageMode));
 }
コード例 #13
0
 public Stream CreateFromImage(Image Image, eImageMode ImageMode)
 {
     return(this.CreateFromBitmap(new Bitmap(Image), ImageMode));
 }
コード例 #14
0
        public override async Task <Stream> CreateFromScreenshot(string URL, string ChromePath = null, eImageMode ImageMode = eImageMode.None)
        {
            var pdfDoc = new PdfDocument();

            using (var screenshotStream = await base.CreateFromScreenshot(URL, ChromePath, ImageMode))
                using (var image = Image.FromStream(screenshotStream))
                    this.DrawImage(pdfDoc, ImageMode, image);

            var stream = new MemoryStream();

            pdfDoc.Save(stream, false);
            pdfDoc.Dispose();

            return(stream);
        }
コード例 #15
0
 public Stream CreateFromImageFile(string FilePath, eImageMode ImageMode = eImageMode.None)
 {
     return(this.CreateFromImage(Image.FromFile(FilePath), ImageMode));
 }
コード例 #16
0
        public virtual async Task <Stream> CreateFromScreenshot(string URL, string ChromePath = null, eImageMode ImageMode = eImageMode.None)
        {
            var browser = await this.CreateWebBrowser(ChromePath);

            var webPage = await browser.NewPageAsync();

            await webPage.GoToAsync(URL);

            var screenshotOptions = new ScreenshotOptions
            {
                FullPage = true,
                Quality  = 100,
                Type     = ScreenshotType.Jpeg
            };

            return(await webPage.ScreenshotStreamAsync(screenshotOptions));
        }