3

我有一堆(超过 1000 个)只有简单文本的 HTML 文件。它只是一个<table>. 这是一批内部文档,不适用于网络制作。

我们的工作是使用 Photoshop 和旧的复制粘贴方法将它们转换为 JPEG 文件。这很乏味。

有没有办法让这个过程变得更高效/更容易/更简单?

我想过尝试将 HTML 转换为 Excel,然后将其合并到 Word 中以打印为 JGEG。但我找不到(而且正确地)任何东西可以将 HTML 转换为 XLSX。

想法?或者这只是一项体力活?

4

3 回答 3

2

这是我为将单个 html 文件转换为 jpeg 而创建的一些东西。它并不漂亮(至少可以说),但它适用于比我的屏幕大的桌子。把它放在一个 windows 窗体项目中。您可以添加更多检查并在循环中调用此程序,或重构它以处理多个 html 文件。

思想和技术取自——

找到所需的大小 - http://social.msdn.microsoft.com/Forums/ie/en-US/f6f0c641-43bd-44cc-8be0-12b40fbc4c43/webbrowser-object-use-to-find-the-width-of -一个网页

创建图形 - http://cplus.about.com/od/learnc/a/How-To-Save-Web-Page-Screen-Grab-csharp.htm

以表格为例 - http://www.w3schools.com/html/html_tables.asp的复制粘贴放大版

static class Program
{

    static WebBrowser webBrowser = new WebBrowser();
    private static string m_fileName;

    [STAThread]
    static void Main(string[] args)
    {

        if (args.Length != 1)
        {
            MessageBox.Show("Usage: [fileName]");
            return;
        }

        m_fileName = args[0];
        webBrowser.DocumentCompleted += (a, b) => webBrowser_DocumentCompleted();
        webBrowser.ScrollBarsEnabled = false; // Don't want them rendered
        webBrowser.Navigate(new Uri(m_fileName));


        Application.Run();
    }

    static void webBrowser_DocumentCompleted()
    {

        // Get the needed size of the control
        webBrowser.Width = webBrowser.Document.Body.ScrollRectangle.Width + webBrowser.Margin.Horizontal;
        webBrowser.Height = webBrowser.Document.Body.ScrollRectangle.Height + webBrowser.Margin.Vertical;

        // Create the graphics and save the image
        using (var graphics = webBrowser.CreateGraphics())
        {
            var bitmap = new Bitmap(webBrowser.Size.Width, webBrowser.Size.Height, graphics);
            webBrowser.DrawToBitmap(bitmap, webBrowser.ClientRectangle);

            string newFileName = Path.ChangeExtension(m_fileName, ".jpg");

            bitmap.Save(newFileName, ImageFormat.Jpeg);
        }

        // Shamefully exit the application
        Application.ExitThread();            
    }
}
于 2013-08-15T07:21:08.697 回答
0

您可以在一页中加载所有文件并使用此 lib html2canvas进行隐藏。

您可以在后台运行使用带有node-canvas的 nodejs 或使用node-webkit使其成为桌面应用程序

于 2013-08-26T02:31:08.727 回答
0

如果有人在寻找有效的答案,我最终使用了一个名为 Prince 的程序:https ://www.princexml.com

它的效果非常好,只需使用 CSS 或 JS 定位 HTML 即可使其与您的输出相匹配!

于 2019-11-13T04:56:21.730 回答