pub struct XfdfDocument {
pub xmlns: Option<String>,
pub fields: Vec<XfdfField>,
pub annotations: Vec<Annotation>,
pub metadata: HashMap<String, String>,
}Expand description
XFDF 文档 一份完整的 XFDF 文档。
它里面通常会包含:
- 文档级元数据
- 表单字段
- 注释列表
Fields§
§xmlns: Option<String>XML 命名空间
fields: Vec<XfdfField>表单字段
annotations: Vec<Annotation>注释列表
metadata: HashMap<String, String>元数据
Implementations§
Source§impl XfdfDocument
impl XfdfDocument
Sourcepub fn parse(xml_str: &str) -> Result<Self>
pub fn parse(xml_str: &str) -> Result<Self>
解析 XFDF/XML 字符串,得到统一的文档对象。
§示例
use pdfxml::XfdfDocument;
let xml = r#"<?xml version="1.0" encoding="UTF-8" ?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<annots>
<text page="0" rect="100,700,250,730">Hello</text>
</annots>
</xfdf>"#;
let doc = XfdfDocument::parse(xml)?;
assert_eq!(doc.annotations.len(), 1);Sourcepub fn get_annotations_for_page(&self, page: usize) -> Vec<&Annotation>
pub fn get_annotations_for_page(&self, page: usize) -> Vec<&Annotation>
获取指定页面上的所有注释。
§示例
use pdfxml::XfdfDocument;
let doc = XfdfDocument::parse(r#"<?xml version="1.0" encoding="UTF-8" ?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<annots>
<text page="0" rect="100,700,250,730">Hello</text>
<text page="1" rect="100,650,250,680">World</text>
</annots>
</xfdf>"#)?;
assert_eq!(doc.get_annotations_for_page(0).len(), 1);Sourcepub fn total_pages(&self) -> usize
pub fn total_pages(&self) -> usize
返回文档总页数。
如果没有任何注释,默认返回 1。
§示例
use pdfxml::XfdfDocument;
let doc = XfdfDocument::parse(r#"<?xml version="1.0" encoding="UTF-8" ?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<annots>
<text page="2" rect="100,700,250,730">Hello</text>
</annots>
</xfdf>"#)?;
assert_eq!(doc.total_pages(), 3);Sourcepub fn to_xfdf_string(&self) -> Result<String>
pub fn to_xfdf_string(&self) -> Result<String>
把当前文档重新序列化成 XFDF 字符串。
§示例
use pdfxml::XfdfDocument;
let doc = XfdfDocument::parse(r#"<?xml version="1.0" encoding="UTF-8" ?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<annots>
<text page="0" rect="100,700,250,730">Hello</text>
</annots>
</xfdf>"#)?;
let xml = doc.to_xfdf_string()?;
assert!(xml.contains("<xfdf"));Trait Implementations§
Source§impl Clone for XfdfDocument
impl Clone for XfdfDocument
Source§fn clone(&self) -> XfdfDocument
fn clone(&self) -> XfdfDocument
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for XfdfDocument
impl RefUnwindSafe for XfdfDocument
impl Send for XfdfDocument
impl Sync for XfdfDocument
impl Unpin for XfdfDocument
impl UnsafeUnpin for XfdfDocument
impl UnwindSafe for XfdfDocument
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more