zoukankan      html  css  js  c++  java
  • 从HTML生成PDF文件

    从HTML生成PDF文件

    public static void WriterPDF(string tempFileName, bool isLowerWindows = true, bool withMarkwater = true)
    {
        string wkhtmltopdfPath = ResourceUtilities.WkhtmltopdfPathLower;
        if (!isLowerWindows)
        {
            wkhtmltopdfPath = ResourceUtilities.WkhtmltopdfPathHigher;
        }
    
        var pi = new ProcessStartInfo(wkhtmltopdfPath);
        pi.CreateNoWindow = true;
        pi.UseShellExecute = false;
        if (!Directory.Exists(ResourceUtilities.WkhtmltoxFolder))
        {
            Directory.CreateDirectory(ResourceUtilities.WkhtmltoxFolder);
        }
    
        if (!Directory.Exists(ResourceUtilities.PDFTempFolder))
        {
            Directory.CreateDirectory(ResourceUtilities.PDFTempFolder);
        }
    
        pi.WorkingDirectory = ResourceUtilities.WkhtmltoxFolder;
        string[] result = CreateWkhtmltopdfArguments(tempFileName, withMarkwater);
        pi.Arguments = result[0];
    
        using (var process = Process.Start(pi))
        {
            process.WaitForExit(99999);
            Debug.WriteLine(process.ExitCode);
        }
    
        if (withMarkwater)
        {
            string pdfExportFile = ExportFilePathHelper.GetExportFilePath() + tempFileName + ".pdf";
            AddWatermark(result[1], pdfExportFile);
            //IoHelper.DeleteFile(ResourceUtilities.PDFTempFolder + tempFileName + ".pdf");
            string htmlTempFolder = ResourceUtilities.HtmlTempFolder.Replace("\", "/");
            string htmlTempFile = htmlTempFolder + tempFileName + ".html";
            //IoHelper.DeleteFile(htmlTempFile);
        }
    }
    public static string[] CreateWkhtmltopdfArguments(string fileName, bool withMarkwater = false)
    {
    
        string arguments = "file:///";
        string htmlTempFolder = ResourceUtilities.HtmlTempFolder.Replace("\", "/");
        string htmlTempFile = htmlTempFolder + fileName + ".html";
        string pdfExportFolder = ExportFilePathHelper.GetExportFilePath();
        if (!Directory.Exists(pdfExportFolder))
        {
            Directory.CreateDirectory(pdfExportFolder);
        }
    
        string pdfExportFile = pdfExportFolder + fileName + ".pdf";
        if (withMarkwater)
        {
            string tempExportFolder = ResourceUtilities.PDFTempFolder;
            pdfExportFile = tempExportFolder + fileName + ".pdf";
        }
    
        arguments = arguments + htmlTempFile + " " + pdfExportFile;
        string[] result = new string[] { arguments, pdfExportFile };
        return result;
    
    }
    

    有几个地方要注意

    1. 使用的是wkhtmltopdf这个C++编写的工具
    2. 这个工具有两个主要的版本,一个是依赖VS2013 C++ Runtime编译的,一个是依赖早期的类库编译的,要根据自己的操作系统判断使用哪一个。官网地址http://wkhtmltopdf.org/downloads.html
  • 相关阅读:
    Ubuntu 修改 ssh 登录后的欢迎信息
    Hbase的配置和安装
    python起的 simpleHTTPServer服务传输文件
    hadoop修改MR的提交的代码程序的副本数
    Fair Scheduler 队列设置经验总结
    调度系统任务创建---创建一个JoinTrigger的依赖任务(五)
    调度系统任务创建---创建一个MultiJob的任务(四)
    调度系统任务创建---创建一个有上下游依赖的任务(三)
    调度系统任务创建---创建一个简单调度任务(二)
    SSM框架新特性关于用Java配置类完全代替XML
  • 原文地址:https://www.cnblogs.com/wuyicqb/p/5516359.html
Copyright © 2011-2022 走看看