easyofd_reader/
dl_ofd_reader.rs1use std::io::{Read, Seek};
9
10use easyofd_core::{OfdPage, OfdResult};
11
12#[allow(deprecated)]
13use crate::model::{AnnotionEntity, OfdPageVo};
14use crate::ofd_reader_facade::OfdReaderFacade;
15use crate::read_options::ReadOptions;
16
17#[derive(Debug)]
25#[deprecated(since = "1.0.0", note = "使用 OfdReaderFacade 替代")]
26pub struct DlOfdReader {
27 facade: OfdReaderFacade,
29}
30
31#[allow(deprecated)]
32impl DlOfdReader {
33 pub fn open(path: impl AsRef<std::path::Path>) -> OfdResult<Self> {
37 Ok(Self {
38 facade: OfdReaderFacade::open(path)?,
39 })
40 }
41
42 pub fn from_bytes(data: &[u8]) -> OfdResult<Self> {
46 Ok(Self {
47 facade: OfdReaderFacade::from_bytes(data)?,
48 })
49 }
50
51 pub fn from_seek<R: Read + Seek>(source: R, options: ReadOptions) -> OfdResult<Self> {
53 Ok(Self {
54 facade: OfdReaderFacade::from_seek(source, options)?,
55 })
56 }
57
58 #[must_use]
60 pub fn facade(&self) -> &OfdReaderFacade {
61 &self.facade
62 }
63
64 #[must_use]
66 pub fn page_count(&self) -> usize {
67 self.facade.page_count()
68 }
69
70 #[must_use]
72 pub fn pages(&self) -> &[OfdPage] {
73 self.facade.pages()
74 }
75
76 #[must_use]
80 pub fn get_ofd_page_vo(&self) -> Vec<OfdPageVo> {
81 self.facade
82 .pages()
83 .iter()
84 .enumerate()
85 .map(|(i, page)| {
86 let page_path = page
87 .base_path
88 .clone()
89 .unwrap_or_else(|| format!("Pages/Page_{i}/Content.xml"));
90 OfdPageVo::new(page_path, None)
91 })
92 .collect()
93 }
94
95 #[must_use]
99 pub fn get_annotations(&self) -> Vec<AnnotionEntity> {
100 Vec::new()
102 }
103
104 #[must_use]
106 pub fn extract_all_text(&self) -> String {
107 self.facade.extract_all_text()
108 }
109}
110
111#[cfg(test)]
112mod tests {
113 #[allow(deprecated)]
114 use super::*;
115 use easyofd_core::TextObject;
116 use easyofd_writer::OfdWriter;
117
118 fn build_test_ofd() -> Vec<u8> {
119 let mut writer = OfdWriter::new();
120 let mut page = OfdPage::new(210.0, 297.0);
121 page.add_text(TextObject::new(10.0, 20.0, "DL Test"));
122 writer.add_page(page);
123 writer.build().unwrap()
124 }
125
126 #[test]
127 #[allow(deprecated)]
128 fn test_dl_ofd_reader_from_bytes() {
129 let bytes = build_test_ofd();
130 let reader = DlOfdReader::from_bytes(&bytes).unwrap();
131 assert_eq!(reader.page_count(), 1);
132 }
133
134 #[test]
135 #[allow(deprecated)]
136 fn test_dl_ofd_reader_get_ofd_page_vo() {
137 let bytes = build_test_ofd();
138 let reader = DlOfdReader::from_bytes(&bytes).unwrap();
139 let vos = reader.get_ofd_page_vo();
140 assert_eq!(vos.len(), 1);
141 }
142
143 #[test]
144 #[allow(deprecated)]
145 fn test_dl_ofd_reader_annotations() {
146 let bytes = build_test_ofd();
147 let reader = DlOfdReader::from_bytes(&bytes).unwrap();
148 assert!(reader.get_annotations().is_empty());
149 }
150
151 #[test]
152 #[allow(deprecated)]
153 fn test_dl_ofd_reader_extract_text() {
154 let bytes = build_test_ofd();
155 let reader = DlOfdReader::from_bytes(&bytes).unwrap();
156 let text = reader.extract_all_text();
157 assert!(text.contains("DL Test"));
158 }
159}