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 在 编码
每月5,583次下载
用于 22 个crate(7个直接使用)
2MB
7.5K SLoC
pdf-writer
一步一步的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许可证下双许可。