ElyPDF: an edited document's export does not quote the file's size (P-13)
This commit is contained in:
3 files changed
+28
-2
No files matched your search
@@ -203,6 +203,8 @@ impl Viewer {
|
||||
Err(error) => return self.failed(&error, cx),
|
||||
}
|
||||
let (work, path, revision) = (tab.work.join("export.out"), tab.session.path().map(PathBuf::from), tab.session.revision());
|
||||
// Unsaved edits: the file on disk is not "before".
|
||||
let compared = path.clone().filter(|_| !tab.view.read(cx).modified());
|
||||
let opened = target.clone();
|
||||
log::info!("pdf: exports {}", if kind == Kind::Text { "text" } else { "an optimized copy" });
|
||||
self.read_in(
|
||||
@@ -214,7 +216,7 @@ impl Viewer {
|
||||
}
|
||||
let bytes = std::fs::read(&work)?;
|
||||
std::fs::remove_file(&work)?;
|
||||
let before = path.as_deref().map(std::fs::metadata).transpose()?.map(|meta| meta.len());
|
||||
let before = compared.as_deref().map(std::fs::metadata).transpose()?.map(|meta| meta.len());
|
||||
ely_files::export(&target, path.as_deref(), &bytes, revision)?;
|
||||
Ok((before, bytes.len() as u64))
|
||||
},
|
||||
|
||||
@@ -195,3 +195,27 @@ fn a_picture_never_drawn_is_checked_before_an_overwrite() {
|
||||
settle(cx, |app| viewer.read(app).active_tab().and_then(|tab| tab.risk) == Some(ely_office::Risk::Repaired));
|
||||
assert_eq!(std::fs::read(&path).expect("reads"), bytes, "Save turned into Save As");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn an_edited_document_does_not_quote_the_files_size() {
|
||||
let dir = tempfile::tempdir().expect("a temp dir");
|
||||
let mut cx = TestAppContext::single();
|
||||
let path = file(dir.path(), "doc.pdf", &[(612.0, 792.0, &["First"])]);
|
||||
let (viewer, cx) = windowed(&mut cx, dir.path(), &[path], true);
|
||||
let view = shown(cx, &viewer);
|
||||
// The window's toasts live on its root.
|
||||
let root = cx.update(|window, app| {
|
||||
let root = ely_ui::document_root(ely_platform::AppId::Pdf, viewer.clone().into(), &ely_ui::commands::FILE, Vec::new(), window, app);
|
||||
viewer.update(app, |viewer, _| viewer.core.root = root.downgrade());
|
||||
root
|
||||
});
|
||||
let note = ely_pdf_engine::NewAnnot { page: 0, shape: ely_pdf_engine::Shape::Note((100.0, 500.0)), rgb: None, contents: "n".into(), author: String::new() };
|
||||
cx.update(|_, app| view.update(app, |view, cx| view.annotate("a note", vec![note], cx)));
|
||||
settle(cx, |app| view.read(app).settled() && view.read(app).modified());
|
||||
let id = cx.update(|_, app| viewer.read(app).core.tabs[0].id);
|
||||
let out = dir.path().join("small.pdf");
|
||||
let how = Optimizing { compress: true, from: 300, to: 150 };
|
||||
cx.update(|_, app| viewer.update(app, |viewer, cx| viewer.write_export(id, Kind::Optimized, how, out.clone(), cx)));
|
||||
let done = cx.update(|_, app| crate::viewer::Viewer::text(app, "pdf.export.done", &[("name", "small.pdf")]));
|
||||
settle(cx, |app| root.read(app).toasts(app).iter().any(|(text, _)| *text == done));
|
||||
}
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
- [x] P-10 预览回复被丢弃时“应用”静默无事 — 预览回复照常交回,版本已变即提示,不显示过期预览
|
||||
- [x] P-11 撤销或重做在 MuPDF 侧失败后 worker 的步数不再同步 — 撤销失败后重读历史标记
|
||||
- [x] P-12 `unhook` 中途抛出时泄漏保留的对象 — 保留的链接随保留随计数
|
||||
- [ ] P-13 优化导出的“之前”大小取磁盘文件而非当前文档
|
||||
- [x] P-13 优化导出的“之前”大小取磁盘文件而非当前文档 — 有未保存编辑时不与磁盘文件比大小
|
||||
- [ ] P-14 文字块含控制字符时 JSON 回复不可解析
|
||||
- [x] D-01 导出或打印对话框开着时关闭其标签即崩溃 — Docs 实现 tab_closed,关标签即撤下其导出对话框;R1 PASS
|
||||
- [x] D-02 邮件合并以当前标签为模板,预览后生成的每份都是同一条记录 — 选数据时记下模板标签,预览副本不作模板;R1 测试绕过选 CSV 入口;R2 PASS
|
||||
|
||||
Reference in new issue
Block a user