@@ -19,7 +19,7 @@ use zip::{write::SimpleFileOptions, ZipWriter};
1919
2020use crate :: {
2121 events:: { ExportCbzEvent , ExportPdfEvent } ,
22- extensions:: PathIsImg ,
22+ extensions:: { AnyhowErrorToStringChain , PathIsImg } ,
2323 types:: { ChapterInfo , Comic , ComicInfo } ,
2424} ;
2525
@@ -93,6 +93,13 @@ pub fn cbz(app: &AppHandle, comic: &Comic) -> anyhow::Result<()> {
9393 // 保证导出目录存在
9494 std:: fs:: create_dir_all ( & chapter_export_dir)
9595 . context ( format ! ( "创建目录`{}`失败" , chapter_export_dir. display( ) ) ) ?;
96+ // 先把封面拷贝到导出目录(如果有)
97+ if let Err ( err) = copy_cover ( comic, & chapter_export_dir) {
98+ let comic_title = & comic. name ;
99+ let err_title = format ! ( "`{comic_title}`导出cbz时,将封面拷贝到导出目录失败" ) ;
100+ let string_chain = err. to_string_chain ( ) ;
101+ tracing:: error!( err_title, message = string_chain) ;
102+ }
96103 // 并发处理
97104 let downloaded_chapter_infos = downloaded_chapter_infos. into_par_iter ( ) ;
98105 downloaded_chapter_infos. try_for_each ( |chapter_info| -> anyhow:: Result < ( ) > {
@@ -187,6 +194,18 @@ pub fn cbz(app: &AppHandle, comic: &Comic) -> anyhow::Result<()> {
187194 Ok ( ( ) )
188195}
189196
197+ fn copy_cover ( comic : & Comic , chapter_export_dir : & Path ) -> anyhow:: Result < ( ) > {
198+ let src_cover_path = comic. get_cover_path ( ) . context ( "获取封面路径失败" ) ?;
199+ let cover_filename = src_cover_path. file_name ( ) . context ( "获取封面的文件名失败" ) ?;
200+
201+ if src_cover_path. exists ( ) {
202+ let dst_cover_path = chapter_export_dir. join ( cover_filename) ;
203+ std:: fs:: copy ( src_cover_path, dst_cover_path) ?;
204+ }
205+
206+ Ok ( ( ) )
207+ }
208+
190209struct PdfCreateErrorEventGuard {
191210 uuid : String ,
192211 app : AppHandle ,
@@ -269,7 +288,7 @@ pub fn pdf(app: &AppHandle, comic: &Comic) -> anyhow::Result<()> {
269288 ) ) ?
270289 . filter_map ( Result :: ok)
271290 . map ( |entry| entry. path ( ) )
272- . filter ( |path| path. is_img ( ) )
291+ . filter ( |path| path. is_common_img ( ) )
273292 . collect ( ) ;
274293 image_paths. sort_by ( |a, b| a. file_name ( ) . cmp ( & b. file_name ( ) ) ) ;
275294
0 commit comments