C# 实现HTML转换成图片的方法

/// <summary>
        /// 通过WebBrowser控件来实现从HTML到Bmp图片的生成。
        /// </summary>
        /// <param name="htmPath">HTML路径</param>
        /// <returns>Bmp图片路径</returns>
        private static string ConverHTML(string htmPath)
        {
            string ImagePath = string.Empty;
            WebBrowser web = new WebBrowser();
            web.Navigate(htmPath);
            while (web.ReadyState != WebBrowserReadyState.Complete)
            {
                System.Windows.Forms.Application.DoEvents();
            }
            Rectangle screen = Screen.PrimaryScreen.Bounds;
            Size? imgsize = null;
            //set the webbrowser width and hight
            web.Width = screen.Width;
            web.Height = screen.Height;
            //suppress script errors and hide scroll bars
            web.ScriptErrorsSuppressed = true;
            web.ScrollBarsEnabled = false;
            Rectangle body = web.Document.Body.ScrollRectangle;

//check if the document width/height is greater than screen width/height
            Rectangle docRectangle = new Rectangle()
            {
                Location = new Point(0, 0),
                Size = new Size(body.Width > screen.Width ? body.Width : screen.Width,
                 body.Height > screen.Height ? body.Height : screen.Height)
            };
            //set the width and height of the WebBrowser object
            web.Width = docRectangle.Width;
            web.Height = docRectangle.Height;

//if the imgsize is null, the size of the image will
            //be the same as the size of webbrowser object
            //otherwise  set the image size to imgsize
            Rectangle imgRectangle;
            if (imgsize == null)
                imgRectangle = docRectangle;
            else
                imgRectangle = new Rectangle()
                {
                    Location = new Point(0, 0),
                    Size = imgsize.Value
                };
            //create a bitmap object
            Bitmap bitmap = new Bitmap(imgRectangle.Width - 24, imgRectangle.Height);
            //get the viewobject of the WebBrowser
            IViewObject ivo = web.Document.DomDocument as IViewObject;

using (Graphics g = Graphics.FromImage(bitmap))
            {
                //get the handle to the device context and draw
                IntPtr hdc = g.GetHdc();
                ivo.Draw(1, -1, IntPtr.Zero, IntPtr.Zero,
                         IntPtr.Zero, hdc, ref imgRectangle,
                         ref docRectangle, IntPtr.Zero, 0);
                g.ReleaseHdc(hdc);
            }
            SAVEWORDJPG = string.Format(@"E:\cheng_Text\FormatApplication\测试文件\{0}.bmp", Guid.NewGuid().ToString());
            bitmap.Save(SAVEWORDJPG, System.Drawing.Imaging.ImageFormat.Bmp);
            bitmap.Dispose();
            web.Dispose();
            DeleteTempFile(TEMPHTMLPATH);
            return SAVEWORDJPG;
        }

/// <summary>
        /// 删除指定的临时文件。
        /// </summary>
        /// <param name="filePath"></param>
        private static void DeleteTempFile(string filePath)
        {
            //删除临时HTML文件 。
            File.Delete(filePath);
            //删除目录文件内容。
            string[] files = filePath.Split(‘.‘);
            if (files[1].ToLower().Equals("htm"))
            {
                string dirPath = files[0] + ".files";
                foreach (string f in Directory.GetFileSystemEntries(dirPath))
                {
                    // 如果是文件存在 
                    if (File.Exists(f))
                    {
                        FileInfo fi = new FileInfo(f);
                        if (fi.Attributes.ToString().IndexOf("Readonly") != 1)
                        {
                            fi.Attributes = FileAttributes.Normal;
                        }
                        // 直接删除其中的文件 
                        File.Delete(f);
                    }
                }
                Directory.Delete(dirPath);
            }
        }

#region==========IViewObje【实现接口类】================
        [ComVisible(true), ComImport()]
        [GuidAttribute("0000010d-0000-0000-C000-000000000046")]
        [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IViewObject
        {
            [return: MarshalAs(UnmanagedType.I4)]
            [PreserveSig]
            int Draw(
                [MarshalAs(UnmanagedType.U4)] UInt32 dwDrawAspect,
                int lindex,
                IntPtr pvAspect,
                [In] IntPtr ptd,
                IntPtr hdcTargetDev,
                IntPtr hdcDraw,
                [MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcBounds,
                [MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcWBounds,
                IntPtr pfnContinue,
                [MarshalAs(UnmanagedType.U4)] UInt32 dwContinue);
            [PreserveSig]
            int GetColorSet([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
               int lindex, IntPtr pvAspect, [In] IntPtr ptd,
                IntPtr hicTargetDev, [Out] IntPtr ppColorSet);
            [PreserveSig]
            int Freeze([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
                            int lindex, IntPtr pvAspect, [Out] IntPtr pdwFreeze);
            [PreserveSig]
            int Unfreeze([In, MarshalAs(UnmanagedType.U4)] int dwFreeze);
            void SetAdvise([In, MarshalAs(UnmanagedType.U4)] int aspects,
              [In, MarshalAs(UnmanagedType.U4)] int advf,
              [In, MarshalAs(UnmanagedType.Interface)] IAdviseSink pAdvSink);
            void GetAdvise([In, Out, MarshalAs(UnmanagedType.LPArray)] int[] paspects,
              [In, Out, MarshalAs(UnmanagedType.LPArray)] int[] advf,
              [In, Out, MarshalAs(UnmanagedType.LPArray)] IAdviseSink[] pAdvSink);
        }
        #endregion

时间: 2024-11-02 10:53:05

C# 实现HTML转换成图片的方法的相关文章

分享在线pdf转换成图片格式方法

突然接到通知,被要求将pdf转换成jpg格式,而且需要在规定时间内完成大家会采取什么方法呢?截图显然不行,想要尽快完成转换任务其实只要找到专业的转换工具或平台就能完成啦,不仅转换速度快,而且效果好. 如果要转的文件并不是太多,那么可以用在线pdf转换器进行转换,先进入在线pdf转图片转换平台: 可以看到页面中有“选择文件”和“开始转换”按钮.我们先单击“选择文件”按钮,将要转的文件添加到转换页面中来: 接着单击“开始转换“按钮,转换速度很快,一会转换就能完成: 转换完成之后只要将文件下载下来就可

iOS颜色转换成图片的方法

1 // 颜色转换为背景图片 2 - (UIImage *)imageWithColor:(UIColor *)color { 3 CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 4 UIGraphicsBeginImageContext(rect.size); 5 CGContextRef context = UIGraphicsGetCurrentContext(); 6 7 CGContextSetFillColorWithColor(c

PDF转换技巧之怎样把PDF文件转换成图片?

PDF如何转换成图片:有很多小伙伴在工作中都会遇到一些文件转换的问题,每次遇到这些问题都会很头痛,不知道用什么方法可以更快的转换完成,尤其是遇到PDF要转换成图片这类的问题,这就需要一个比较专业的转换器可以节省很多时间. 那么,如何把PDF文件转换成图片?方法是什么?推荐使用迅捷PDF转换器,这是一款专业的PDF转换软件,功能齐全.操作简单.下面就一起来看看它是如何实现PDF转图片的吧! 第一步:打开下载安装好的PDF转换器进入首页,在首页的左边功能栏里可以看到PDF转换器的默认功能: 第二步:

ppt转换成pdf的方法你都会哪些?

摘自百家号:ppt转换成pdf的方法你都会哪些?       在处理客户发来的PPT幻灯片,总想着如果能将其转换成pdf格式就好了,因为ppt文稿是连续的图片构成,翻页浏览不是很方便.那么如何将ppt转换成pdf呢?ppt转换成pdf的方法你都会哪些? 好了,不吊大家胃口了,这里分享三个ppt转换成pdf的方法,大家看下你都会哪些?      一.当您的Office软件本身带有PDF插件,您可以直接选择另存PDF格式文件;(Office 2007及以上版本适用) 二.利用PPT里面本身携带的PD

20140526-一个从pdf转换成图片的类,工作当中有用到

20140526-一个从pdf转换成图片的类,工作当中有用到 package com.jako.database.model; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import

C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)

原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常用的方法写在第一条,如果不满足您的需要,您可以继续往后看. 如果看完全文还是不能解决您的问题,欢迎加撸主的QQ群(274281457)进行讨论. 木有csdn分的童鞋,可以去github clone,地址:https://github.com/stone0090/OfficeTools.Pdf2Im

如何word文档中的内容转换成图片

方法/步骤 例如在Word中输入了一些文字内容(如下图). 现希望下图红色方框的部分转换成图片格式,以达到保留固定格式,不被他人修改. 选中上图所示的红色部分,点击鼠标右键选择“复制”. 现在将复制的区域替换成图片:点击“开始”中的“粘贴”的下三角,然后点击“选择性粘贴”. 在打开“选择性粘贴”对话框中选择“图片(增强型图元文件)”,然后点击“确定”即可将复制的文字粘贴为图片了. 效果如下图所示,发现刚才的文字变成图片了. 想把该图片提取出来可以做如下操作:点击该图片,右键选择“另存为图片”,然

简单快速将pdf转换成jpg的方法

如何将PDF转换成JPG呢?也许你将PDF转换成Word很轻松,但是到了PDF转换成JPG这里就要犹豫了,怎么转?网上找来找去还是PDF转换成JPG转换器,但是就为了一个格式下载一个软件,在工作中要遇到那么多的格式转换,那要下载多少个软件才行呢?别担心,这里小编教大家一个简单快速将pdf转换成jpg的方法. 迅捷PDF转换成JPG转换器是国家知名软件公司迅捷工作室研发而成,专门为上班一族打造的一款专业软件.它到底有怎样的优势呢? (一)它可以帮助您将PDF转换为的Word,PowerPoint,

pdf文件内容如何转换成图片

在将pdf文件或者是word文档转换成为图片时,一般的方法都是讲如何使用截图的方式来把文档内容转换成图片,但是除此之外,还有什么方法可以把pdf以及office文档转换成图片吗? 如果只是将pdf文件转成图片,可以用在线工具把pdf文档的内容转换成图片的形式,这在一些专门的pdf在线转换应用中可以实现. 首先找到在线pdf转图片,并进入到首页.在首页中会有pdf转成图片的选项,直接选择该项,进入到转换的操作页面. 点选择文件,然后就可以在选择一个需要进行转换的pdf文档,选择的文件会添加到转换页