7个版本 (3个稳定)

1.0.2 2023年2月15日
1.0.1 2023年2月5日
1.0.0 2022年9月15日
0.2.0 2022年9月15日
0.1.5 2022年9月7日

#837 in 文本处理

每月50次下载
用于 label-converter

MIT许可证

48KB
649

wkhtmlapp

到wkhtmltopdf和wkhtmltoimage的绑定

wkhtmlapp依赖于wkhtmltopdf应用程序来生成PDF或图像,以这种方式抽象化,以支持多线程而不损害主实例。这个库是受barryvdh的laravel-snappy启发的。

资源 链接
crate Crates.io
文档 Cargo文档
上游 wkhtmltopdf.org
Wkhtmltox版本 wkhtmltox-0.12.6-1

使用前的必要设置

  • 将wkhtmltopdf设置在系统环境变量中的路径或为您的操作系统下载wkhtmltopdf的可移植版本,存储它们,并在.env文件中使用WKHTMLTOPDF_CMD和WKHTMLTOIMG_CMD分别引用。
   //.env
   WKHTMLAPP_WORK_DIR="storage/temp"
   WKHTMLTOPDF_CMD="assets/bin/wkhtmltopdf/0.16/wkhtmltopdf"
   WKHTMLTOIMG_CMD="assets/bin/wkhtmltopdf/0.16/wkhtmltoimage"

只有一些参数已被验证,请谨慎使用

功能

  • 将HTML代码转换为PDF和IMG
  • 将HTML文件转换为PDF和IMG
  • 将URL链接转换为PDF和IMG

变更日志

1.0.0

  • 在Windows和Linux系统上与actix-web成功测试

0.2.0

  • 您可以实例化PdfApp或ImgApp,它们分别仅用于生成PDF或图像,或实例化App,它为您提供了对两者的访问

0.1.5

  • 参数值不再是可选的

0.1.4

  • 实现了生命周期,允许在发送参数时使用str而不是String

0.1.3

  • 修复:返回完整文件路径

示例

use wkhtmlapp::WkhtmlError;
fn main() -> Result<(), WkhtmlError> {
    let mut app = wkhtmlapp::App::new()?;
    let app_report = app.pdf_app
        .set_arg("enable-smart-shrinking", "true")?
        .set_arg("title", "Torres")?
        .set_arg("header-right", "Página [page] de [toPage]")?
        .set_arg("margin-top", "18")?;

    let report = app_report.run(
        wkhtmlapp::WkhtmlInput::Url("https://w3schools.org.cn/graphics/svg_intro.asp"),
        "demo",
    )?;
    println!("report: {:?}", report);
    Ok(())
}

PDF示例

let pdf_app = PdfApp::new().expect("Failed to init PDF Application");
let html_code = r#"<html><body><div>DEMO</div></body></html>"#;
let file_path = pdf_app.run(WkhtmlInput::Html(html_code),"demo")?;
let file_path = pdf_app.run(WkhtmlInput::File("examples/index.html"), "demo")?;
let file_path = pdf_app.run(
            WkhtmlInput::Url("https://www.rust-lang.net.cn/en-US/"),
            "demo",
        )?;

IMG示例

        let mut image_app = ImgApp::new().expect("Failed to init image Application");
        let args = HashMap::from([("height", "20"), ("width", "20")]);

        let res = image_app
            .set_format(ImgFormat::Png)?
            .set_args(args)?
            .run(WkhtmlInput::File("examples/index.html"), "demo")?;

ImgApp参数

选项 描述
allow 允许加载指定文件夹中的文件或文件(可重复)
bypass-proxy-for 绕过主机的代理(可重复)
cache-dir Web缓存目录
checkbox-checked-svg 在渲染勾选复选框时使用此SVG文件
checked-svg 在渲染未勾选复选框时使用此SVG文件
cookie 设置一个额外的cookie(可重复)
cookie-jar 从提供的cookie jar文件中读取和写入cookie
crop-h 设置裁剪的高度
crop-w 设置裁剪的宽度
crop-x 设置裁剪的x坐标(默认0)
crop-y 设置裁剪的y坐标(默认0)
custom-header 设置一个额外的HTTP头(可重复)
custom-header-propagation 为每个资源请求添加由--custom-header指定的HTTP头。
no-custom-header-propagation 不要为每个资源请求添加由--custom-header指定的HTTP头。
debug-javascript 显示javascript调试输出
no-debug-javascript 不显示javascript调试输出(默认)
编码 设置默认文本编码,用于输入
格式 输出格式
高度 设置屏幕高度(默认从页面内容计算得出)(默认0)
图片 加载或打印图片(默认)
no-images 不加载或打印图片
disable-javascript 不允许网页运行javascript
enable-javascript 允许网页运行javascript(默认)
javascript-delay 等待一些毫秒以便javascript完成(默认200)
load-error-handling 指定如何处理加载失败的页面:中止、忽略或跳过(默认中止)
load-media-error-handling 指定如何处理加载失败的媒体文件:中止、忽略或跳过(默认忽略)
disable-local-file-access 不允许将本地文件转换为读取其他本地文件,除非显式允许使用allow
enable-local-file-access 允许将本地文件转换为读取其他本地文件。(默认)
minimum-font-size 最小字体大小
password HTTP认证密码
disable-plugins 禁用已安装的插件(默认)
enable-plugins 启用已安装的插件(插件可能无法正常工作)
post 添加额外的post字段
post-file 发布额外的文件
proxy 使用代理
quality 输出图像质量(介于0到100之间)(默认94)
quiet 更简洁
radiobutton-checked-svg 渲染选定的单选按钮时使用此SVG文件
radiobutton-svg 渲染未选定的单选按钮时使用此SVG文件
run-script 页面加载完成后运行此额外的javascript(可重复)
disable-smart-width 使用指定的宽度,即使它不足以容纳内容
enable-smart-width 扩展--width以适应不可分割的内容(默认)
stop-slow-scripts 停止慢速运行的javascript
no-stop-slow-scripts 不停止慢速运行的javascript(默认)
transparent 在pngs中使背景透明 *
use-xserver 使用X服务器(某些插件和其他内容可能在没有X11的情况下无法工作)
user-style-sheet 指定一个用户样式表,与每个页面一起加载
username HTTP认证用户名
width 设置屏幕宽度(默认为1024)
window-status 在渲染页面之前等待window.status等于此字符串
zoom 使用此缩放因子(默认1)

PdfApp Args

选项 描述
collate 全局选项
no-collate 全局选项
cookie-jar 全局选项
copies 全局选项
dpi 全局选项
extended-help 全局选项
grayscale 全局选项
help 全局选项
htmldoc 全局选项
ignore-load-errors 全局选项 - 旧版v0.9
image-dpi 全局选项
image-quality 全局选项
license 全局选项
log-level 全局选项
lowquality 全局选项
manpage 全局选项
margin-bottom 全局选项
margin-left 全局选项
margin-right 全局选项
margin-top 全局选项
orientation 全局选项
page-height 全局选项
page-size 全局选项
page-width 全局选项
no-pdf-compression 全局选项
quiet 全局选项
read-args-from-stdin 全局选项
readme 全局选项
title 全局选项
use-xserver 全局选项
version 全局选项
dump-default-toc-xsl 大纲选项
dump-outline 大纲选项
outline 大纲选项
no-outline 大纲选项
outline-depth 大纲选项
output-format 大纲选项
allow 页面选项
background 页面选项
no-background 页面选项
bypass-proxy-for 页面选项
cache-dir 页面选项
checkbox-checked-svg 页面选项
checkbox-svg 页面选项
cookie 页面选项
custom-header 页面选项
custom-header-propagation 页面选项
no-custom-header-propagation 页面选项
debug-javascript 页面选项
no-debug-javascript 页面选项
default-header 页面选项
编码 页面选项
disable-external-links 页面选项
enable-external-links 页面选项
disable-forms 页面选项
enable-forms 页面选项
图片 页面选项
no-images 页面选项
disable-internal-links 页面选项
enable-internal-links 页面选项
disable-javascript 页面选项
enable-javascript 页面选项
javascript-delay 页面选项
keep-relative-links 页面选项
load-error-handling 页面选项
load-media-error-handling 页面选项
disable-local-file-access 页面选项
enable-local-file-access 页面选项
minimum-font-size 页面选项
exclude-from-outline 页面选项
include-in-outline 页面选项
page-offset 页面选项
password 页面选项
disable-plugins 页面选项
enable-plugins 页面选项
post 页面选项
post-file 页面选项
print-media-type 页面选项
no-print-media-type 页面选项
proxy 页面选项
proxy-hostname-lookup 页面选项
radiobutton-checked-svg 页面选项
radiobutton-svg 页面选项
redirect-delay 页面选项 // 旧版v0.9
resolve-relative-links 页面选项
run-script 页面选项
禁用智能缩放 页面选项
启用智能缩放 页面选项
ssl-crt-path 页面选项
ssl-key-password 页面选项
ssl-key-path 页面选项
stop-slow-scripts 页面选项
no-stop-slow-scripts 页面选项
禁用目录后链 页面选项
启用目录后链 页面选项
user-style-sheet 页面选项
username 页面选项
视口大小 页面选项
window-status 页面选项
zoom 页面选项
页脚居中 页眉和页脚选项
页脚字体名称 页眉和页脚选项
页脚字体大小 页眉和页脚选项
页脚HTML 页眉和页脚选项
页脚左对齐 页眉和页脚选项
页脚线条 页眉和页脚选项
无页脚线条 页眉和页脚选项
页脚右对齐 页眉和页脚选项
页脚间距 页眉和页脚选项
页眉居中 页眉和页脚选项
页眉字体名称 页眉和页脚选项
页眉字体大小 页眉和页脚选项
页眉HTML 页眉和页脚选项
页眉左对齐 页眉和页脚选项
页眉线条 页眉和页脚选项
无页眉线条 页眉和页脚选项
页眉右对齐 页眉和页脚选项
页眉间距 页眉和页脚选项
替换 页眉和页脚选项
封面 封面对象
目录 目录对象
禁用点划线 目录选项
目录深度 目录选项 - 旧版 v0.9
目录字体名称 目录选项 - 旧版 v0.9
目录一级字体大小 目录选项 - 旧版 v0.9
目录标题文本 目录选项
目录标题字体名称 目录选项 - 旧版 v0.9
目录标题字体大小 目录选项 - 旧版 v0.9
目录级别缩进 目录选项
禁用目录链接 目录选项
目录文本大小缩小 目录选项
xsl样式表 目录选项

许可证

MIT

自由软件,太棒了!

依赖项

约400–700KB
约14K SLoC