3个版本 (有破坏性)

0.4.0 2021年5月4日
0.3.0 2016年8月2日
0.2.0 2016年8月1日

#1933 in 文本处理

Download history 333/week @ 2024-03-14 369/week @ 2024-03-21 334/week @ 2024-03-28 490/week @ 2024-04-04 347/week @ 2024-04-11 327/week @ 2024-04-18 295/week @ 2024-04-25 301/week @ 2024-05-02 311/week @ 2024-05-09 396/week @ 2024-05-16 228/week @ 2024-05-23 439/week @ 2024-05-30 280/week @ 2024-06-06 258/week @ 2024-06-13 362/week @ 2024-06-20 237/week @ 2024-06-27

每月 1,238 次下载
resufancy 中使用

MIT 许可证

62KB
970

wkhtmltopdf-rs

对wkhtmltopdf的高级Rust绑定。这是一个围绕由 libwkhtmltox-sys 提供的低级绑定构建的包装器。

资源 链接
Crates Crates.io
文档 Cargo文档
上游 wkhtmltopdf.org

这个crate旨在通过安全的、便利的Rust提供wkhtmltopdf的完整配置。Wkhtmltopdf有几个非直观的限制(主要由Qt引起),这使得使用C绑定很容易导致未定义的行为。对API影响很大的两个这样的限制是

  1. Wkhtmltopdf的初始化只能在每个进程中发生一次;反初始化使得它可以安全地重用
  2. PDF生成必须始终在初始化wkhtmltopdf的线程上进行

这个crate应该使得在安全代码中违反这些规则变得不可能。如果您需要并行生成PDF,您将需要启动/派生进程来做到这一点。这样的抽象将是这个crate的一个受欢迎的补充。

安装

安装 wkhtmltopdf 0.12.3。

注意:这个库使用 libs(共享对象)和 includes(头文件)来生成PDF,而不是使用wkhtmltopdf可执行文件。

使用方法

基本用法如下

  let html = r#"<html><body><div>foo</div></body></html>"#;
  let mut pdf_app = PdfApplication::new().expect("Failed to init PDF application");
  let mut pdfout = pdf_app.builder()
      .orientation(Orientation::Landscape)
      .margin(Size::Inches(2))
      .title("Awesome Foo")
      .build_from_html(&html)
      .expect("failed to build pdf");

  pdfout.save("foo.pdf").expect("failed to save foo.pdf");
  println!("generated PDF saved as: foo.pdf");

构建

只要安装了包含文件(例如 pdf.h),那么它就是全部的cargo

cargo build
cargo test

注意:由于我们只能初始化一次 PdfApplication,并且它是 !Send/!Sync,所以测试必须合并成一个单一的测试用例。因此,未来的首选将是在各种良好的示例中进行测试。

欢迎以问题报告、功能请求、反馈和/或pull request的形式做出贡献。

依赖关系

~1.1–1.7MB
~53K SLoC