• wkhtmltopdf 代替 itext 将 url 转成 pdf


    通过 itextpdf 的 HtmlConverter.convertToPdf(); 方法生成的pdf 有点让人失望,CSS啥的不起作用了,(有可能我用得不对)

    后来用 wkhtmltopdf.exe 做了 网页生成PDF 效果还可以,下面是JAVA代码,C#的差不多

    public static void main(String[] args) throws IOException{ 
        String htmlPath = "http://www.vipsoft.com.cn/?id=" + id; //TODO application.yml 固定地址+参数
        String savePath = "C:\Users\vipsoft\Desktop\Pdf\" + fileName; //TODO 指定路径+动态文件名
        String pdfTool = "D:\Tools\Dotnet\wkhtmltopdf.exe";
        stringBuilder.append(" " + pdfTool + " "); //TODO application.yml
        stringBuilder.append(" --javascript-delay 5000 ");    //参数要在地址前面,否则可能会失败
        stringBuilder.append(" "" + htmlPath + "" ");       //本地 HTML 的文件路径或网页 HTML 的URL地址,要加 " 双引号,否则可能会失败
        stringBuilder.append(" "" + savePath + "" ");       //生成的 PDF 文档的保存路径  要加 " 双引号,否则可能会失败
        Process process = Runtime.getRuntime().exec(stringBuilder.toString());
    }

    https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

    入参如下:

    // 全局选项:
    //--collate 打印多个副本时进行检查(默认设置)
    //--no-collate 打印多个副本时不进行检查
    //--cookie-jar <path> 从指定的cookie JAR文件中读写 cookie 数据
    //--copies <number> 打印 PDF 文件的份数(默认值为:1)
    //--dpi <dpi> 设置一个分辨率,对于 X11 系统没有作用(默认值为:96)
    //--extended-help 相对 -H 参数的设置,显示更详细的说明文档
    //--grayscale 将生成灰度的 PDF 文档,占用空间小,但是不会有彩色
    //--help 显示帮助信息
    //--htmldoc 输出程序的 HTML 帮助文档
    //--image-dpi <integer> 当页面存在内嵌图片时,指定图像的分辨率(默认值为:600)
    //--image-quality <interger> 当使用 JPEG 算法压缩图片时,指定图像的质量(默认值为:94)
    //--license 输出授权许可信息并退出
    //--lowquality 生成低质量的 PDF/PS,能够减少最终生成文档所占用的存储空间
    //--manpage 输出程序的手册页
    //--quiet 静默模式,不输出任何信息
    //--read-args-from-stdin 从标准输入读取命令行参数
    //--readme 输出程序的 Readme 文档
    //--version 输出版本信息并退出
    //--no-pdf-compression 设置为不要对 PDF 对象使用无损压缩
    //--margin-bottom <unitreal> 设置页面的底边距,单位毫米(mm)
    //--margin-left <unitreal> 设置页面的左边距 (默认值为:10mm)
    //--margin-right <unitreal> 设置页面的右边距 (默认值为:10mm)
    //--margin-top <unitreal> 设置页面的上边距,单位毫米(mm)
    //--page-size <Size> 设置页面的大小,如:A4、Letter等(默认值为:A4)
    //--page-height <unitreal> 设置页面高度,单位毫米(mm)
    //--page-width <unitreal> 设置页面宽度,单位毫米(mm)
    //--orientation <orientation> 设置文档模式为风景或肖像(默认值为:肖像)
    //--title <text> 生成的 PDF 文档的标题(如果没有指定,则使用第一个文档的标题)

    //大纲选项:
    //--dump-default-toc-xsl 转储到默认的 TOC xsl 样式表到标准输出文件
    //--dump-outline <file> 将大纲转储到指定的文件(XML 文件)
    //--outline 在生成的 PDF 文档中添加大纲(默认设置)
    //--no-outline 不要在生成的 PDF 文档中添加大纲
    //--outline-depth <level> 设置大纲的深度(默认值为:4)

    //页面选项:
    //--allow <path> 允许加载指定文件夹中的文件(可重复使用此参数指定多个文件)
    //--background 输出页面背景到 PDF 文档(默认设置)
    //--no-background 不输出页面背景到 PDF 文档
    //--bypass-proxy-for <value> 设置主机的代理(可重复指定多个代理)
    //--cache-dir <path> Web缓存目录
    //--checkbox-checked-svg <path> 使用指定的SVG文件渲染选中的复选框
    //--checkbox-svg <path> 使用指定的SVG文件渲染未选中的复选框
    //--cookie <name> <value> 设置访问网页时额外的 cookie,value 应该是 url 编码的(可重复使用此参数指定多个 cookie)
    //--custom-header <name> <value> 设置访问网页时额外的 HTTP 头(可重复使用此参数指定多个 HTTP 头)
    //--custom-header-propagation 为每个资源请求添加自定义的 HTTP 头
    //--no-custom-header-propagation 不要为每个资源请求添加自定义的 HTTP 头
    //--debug-javascript 显示 JavaScript 调试输出的内容
    //--no-debug-javascript 不显示 JavaScript 调试输出的内容(默认设置)
    //--encoding <encoding> 设置输入文本的默认编码
    //--disable-external-links 禁止页面中的外链生成超链接
    //--enable-external-links 允许页面中的外链生成超链接(默认设置)
    //--disable-forms 不要将 HTML 表单转换为 PDF 表单(默认设置)
    //--enable-forms 将 HTML 表单转换为 PDF 表单
    //--images 加载图片并输出到 PDF 文档(默认设置)
    //--no-images 在生成的 PDF 文档中过滤掉图片
    //--disable-internal-links 禁止页面中的内链生成超链接
    //--enable-internal-links 允许页面中的内链生成超连接(默认设置)
    //--disable-javascript 禁止 Web 页面运行 JavaScript
    //--enable-javascript 允许 Web 页面运行 JavaScript(默认设置)
    //--javascript-delay <msec> 延迟指定的时间,等待 JavaScript 执行完成,单位毫秒(ms)(默认值为:200)
    //--load-error-handling <handler> 指定如何处理无法加载的页面:abort、ignore、skip(默认值为:abort)
    //--load-media-error-handling <handler> 指定如何处理无法加载的媒体文件:abort、ignore、skip(默认值为:ignore)
    //--disable-local-file-access 不允许一个本地文件加载其他的本地文件,使用命令行参数 --allow 指定的目录除外。
    //--enable-local-file-access 允许将本地文件转换到其他本地文件中读取(默认设置)
    //--exclude-from-outline 不要将页面包含在内容表和大纲中
    //--include-in-outline 将页面包含在内容表和大纲中(默认设置)
    //--page-offset <offset> 设置页码的起始值(默认值为:0)
    //--minimum-font-size <int> 设置最小的字体大小
    //--disable-plugins 禁用已安装的插件(默认设置)
    //--enable-plugins 启用已安装的插件(但插件可能不起作用)
    //--post <name> <value> 添加一个附加字段(可以重复使用该参数添加多个附加字段)
    //--post-file <name> <value> 添加一个附加文件(可以重复使用该参数添加多个附加文件)
    //--print-media-type 使用打印媒体类型代替屏幕
    //--no-print-media-type 不使用打印媒体类型代替屏幕(默认设置)
    //--proxy <proxy> 使用代理
    //--radiobutton-checked-svg <path> 使用指定的SVG文件渲染选中的单选按钮
    //--radiobutton-svg <path> 使用指定的SVG文件渲染未选中的单选按钮
    //--run-sript <js> 在页面加载完成后运行这个额外的 JavaScript(可以重复使用该参数添加多个额外的 JavaScript)
    //--disable-smart-shrinking 禁用智能收缩策略
    //--enable-smart-shrinking 启用智能收缩策略(默认设置)
    //--stop-slow-scripts 停止运行缓慢的 JavaScript 代码(默认设置)
    //--no-stop-slow-scripts 不停止运行缓慢的 JavaScript 代码
    //--disable-toc-back-links 禁止从标头链接到内容表(默认设置)
    //--enable-toc-back-links 允许从标头链接到内容表
    //--user-style-sheet <url> 指定一个用户样式表,以便加载每个页面
    //--username <username> HTTP 身份认证的用户名
    //--password <password> HTTP 身份认证的密码
    //--viewport-size <> 设置窗口大小,需要自定义滚动条或 CSS 属性来自适应窗口大小
    //--window-status <windowStatus> 等到window.status等于这个字符串前渲染页面
    //--zoom <float> 设置转换成 PDF 时页面的缩放比例(默认值为:1)
    //--default-header 添加一个默认的页眉,左边是页面的名称,右边是页码,是下面的缩写:
    // --header-left='[webpage]'
    // --header-right='[page]/[toPage]'
    // --top 2cm
    // --header-line

    //页眉和页脚选项:
    //--footer-left <text> 居左显示页脚文本
    //--footer-center <text> 居中显示页脚文本
    //--footer-right <text> 居右显示页脚文本
    //--footer-font-name <name> 设置页脚的字体名称(默认值为:Arial)
    //--footer-font-size <size> 设置页脚的字体大小(默认值为:12)
    //--footer-html <url> 添加一个 HTML 作为页脚
    //--footer-line 在页脚上方显示一条直线
    //--no-footer-line 不在页脚上方显示一条直线(默认设置)
    //--footer-spacing <real> 设置页脚与内容之间的间距,单位毫米(mm)(默认值为:0)

    //--header-left <text> 居左显示页眉文本
    //--header-center <text> 居中显示页眉文本
    //--header-right <text> 居右显示页眉文本
    //--header-font-name <name> 设置页眉的字体名称(默认值为:Arial)
    //--header-font-size <size> 设置页眉的字体大小(默认值为:12)
    //--header-html <url> 添加一个 HTML 作为页眉
    //--header-line 在页眉下方显示一条直线
    //--no-header-line 不在页眉下方显示一条直线(默认设置)
    //--header-spacing <real> 设置页眉与内容之间的间距,单位毫米(mm)(默认值为:0)
    //--replace <name> <value> 在页眉和页脚中替换指定名称的值(可以重复使用该参数指定多个需要替换的名称和值)

    //内容表选项:
    //--disable-dotted-lines 不要在 TOC 中使用虚线
    //--toc-header-text <text> 设置 TOC 的标题文本(默认值为:内容表)
    //--toc-level-indentation <width> 在 TOC 缩进每一级的标题长度(默认值为:1em)
    //--disable-toc-links 在 TOC 中不生成指向内容锚点的超链接
    //--toc-text-size-shrink <real> 在 TOC 中的每一级标题,字体按这个比例缩放(默认值为:0.8)
    //--xsl-style-sheet <file> 使用指定的 XSL 样式表打印内容表

    //页眉和页脚:
    //页眉和页脚可以使用参数 --header-* 和 --footer-* 添加到文档中。
    //有些参数也需要提供一个字符串 text 作为参数值。例如:--header-left
    //可以在 text 中使用以下变量,将会把以下变量替换为对应的值。

    //* [page] 当前正在打印的页面的页码
    //* [frompage] 打印的第一页的页码
    //* [topage] 打印的最后一页的页码
    //* [webpage] 当前正在打印的页面的 URL
    //* [section] 当前正在打印的章节的名称
    //* [subsection] 当前正在打印的分段的名称
    //* [date] 本地系统格式的当前日期
    //* [isodate] ISO 8601 扩展格式的当前日期
    //* [time] 本地系统格式的当前时间
    //* [title] 当前页对象的标题
    //* [doctitle] 输出文档的标题
    //* [sitepage] 当前正在处理的对象中当前页面的页码
    //* [sitepages] 当前正在处理的对象中的总页数

    //举个例子:
    //--header-right "Page [page] of [toPage]",
    //会在页面的右上角生成一个类似 Page x of y 的字符串,
    //其中 x 是当前页面的页码, y 是当前文档最后一页的页码。

  • 相关阅读:
    查询,创建,扩充表空间&&impdp--------表空间大全
    TOJ3660家庭关系(并查集+hash+图的连通性)
    [置顶] iptables 性能 测试
    CSU1312:榜单(模拟)
    uvalive 2326
    TOJ 2732存钱计划(三)(单源最短路)
    CSU1315:全场最水题之陈兴老师与比赛
    【图像处理】最临近插值和双线性内插值算法实现比较
    poj 3090 Visible Lattice Points 法利系列||通过计
    美丽的谎言(王愿共勉)
  • 原文地址:https://www.cnblogs.com/vipsoft/p/13850334.html
Copyright © 2020-2023  润新知