18个版本 (9个破坏性更新)

0.10.0 2024年6月1日
0.9.2 2023年11月1日
0.7.1 2023年5月3日
0.6.0 2022年6月10日
0.3.1 2021年7月14日

#157编码

Download history 1218/week @ 2024-05-03 1206/week @ 2024-05-10 2088/week @ 2024-05-17 1466/week @ 2024-05-24 1439/week @ 2024-05-31 1665/week @ 2024-06-07 1811/week @ 2024-06-14 1595/week @ 2024-06-21 1356/week @ 2024-06-28 1295/week @ 2024-07-05 1511/week @ 2024-07-12 1560/week @ 2024-07-19 1353/week @ 2024-07-26 1502/week @ 2024-08-02 1438/week @ 2024-08-09 1042/week @ 2024-08-16

每月5,583次下载
用于 22 个crate(7个直接使用)

MIT/Apache

2MB
7.5K SLoC

pdf-writer

Crates.io Documentation

一步一步的PDF编写器。

[dependencies]
pdf-writer = "0.10"

API的入口点是主Pdf,它将文档构建成一个大的内部缓冲区。顶级编写器有许多方法来创建针对特定PDF对象的专用编写器。这些都遵循相同的通用模式:它们以可变借用的方式借用主缓冲区,以强类型方式公开构建器模式来写入单个字段,并在对象释放时完成对象。

还有一些其他顶级结构具有内部缓冲区,例如Content流的构建器,但尽可能从父编写器借用缓冲区以最小化分配。

最小示例

以下示例创建了一个带有单个空A4页的PDF。

use pdf_writer::{Pdf, Rect, Ref};

// Define some indirect reference ids we'll use.
let catalog_id = Ref::new(1);
let page_tree_id = Ref::new(2);
let page_id = Ref::new(3);

// Write a document catalog and a page tree with one A4 page that uses no resources.
let mut pdf = Pdf::new();
pdf.catalog(catalog_id).pages(page_tree_id);
pdf.pages(page_tree_id).kids([page_id]).count(1);
pdf.page(page_id)
    .parent(page_tree_id)
    .media_box(Rect::new(0.0, 0.0, 595.0, 842.0))
    .resources();

// Finish with cross-reference table and trailer and write to file.
std::fs::write("target/empty.pdf", pdf.finish())?;

有关更多示例,请查看仓库中的示例文件夹

安全性

此crate禁止使用不安全代码,但它依赖于一些使用内部不安全代码的流行crate。

许可证

此crate在MIT和Apache 2.0许可证下双许可。

依赖关系