Browse Source

【2025】【bota】缩图刷新页面不对问题处理

dinglingui 1 week ago
parent
commit
ad17f9c707

+ 15 - 15
PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNThumbnailManager.swift

@@ -15,7 +15,7 @@ let kmnThumbnailFolder: String = {
 public class KMNThumbnail: NSObject {
     var thumbnailDocument:CPDFDocument = CPDFDocument()
     
-   typealias KMNThumbnailCompletion = (_ image: NSImage?) -> Void
+    typealias KMNThumbnailCompletion = (_ image: NSImage?,_ page:CPDFPage?) -> Void
 
     var thumbnaiPage:CPDFPage? {
         get {
@@ -99,28 +99,28 @@ public class KMNThumbnail: NSObject {
                 thumSize.height = pageSize.height * minScanl
             }
             
-            thumbnaiPage?.thumbnail(of: thumSize, needReset: true,completion: { pageImage in
+            thumbnaiPage?.thumbnail(of: thumSize, needReset: true,completion: {[weak self] pageImage in
                 if completion != nil {
-                    completion!(pageImage)
+                    completion!(pageImage,self?.thumbnaiPage)
                 }
                 // 将 NSImage 转换为 PNG 数据
                 guard let tiffData = pageImage?.tiffRepresentation,
-                         let bitmapImage = NSBitmapImageRep(data: tiffData),
-                         let pngData = bitmapImage.representation(using: .png, properties: [:]) else {
-                       return
-                   }
-
-                   do {
-                       try pngData.write(to: URL(fileURLWithPath: imageFilePath))
-                   } catch {
-                   }
+                      let bitmapImage = NSBitmapImageRep(data: tiffData),
+                      let pngData = bitmapImage.representation(using: .png, properties: [:]) else {
+                    return
+                }
+                
+                do {
+                    try pngData.write(to: URL(fileURLWithPath: imageFilePath))
+                } catch {
+                }
                 
             });
         } else {
             if fileManager.fileExists(atPath: imageFilePath) {
                let image = NSImage.init(contentsOfFile: imageFilePath) ?? NSImage()
                 if completion != nil {
-                    completion!(image)
+                    completion!(image,self.thumbnaiPage)
                 }
             } else {
                 let maxOrg = max(thumSize.width, thumSize.height)
@@ -141,9 +141,9 @@ public class KMNThumbnail: NSObject {
                     thumSize.height = pageSize.height * minScanl
                 }
                 
-                thumbnaiPage?.thumbnail(of: thumSize, needReset: true,completion: { pageImage in
+                thumbnaiPage?.thumbnail(of: thumSize, needReset: true,completion: {[weak self] pageImage in
                     if completion != nil {
-                        completion!(pageImage)
+                        completion!(pageImage,self?.thumbnaiPage)
                     }
                     // 将 NSImage 转换为 PNG 数据
                     guard let tiffData = pageImage?.tiffRepresentation,

+ 9 - 6
PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNThumbnailView/KMNThumbnailCollectionViewItem.swift

@@ -52,13 +52,16 @@ class KMNThumbnailCollectionViewItem: NSCollectionViewItem {
             let relCellHeight = orgPageHeight * minimumValue
             let relCellWidth = orgPagewidth * minimumValue
             
-            thumbnailMode.generateThumImage { image in
-                self.cardFileView.properties.propertyInfo.iconImageWidth = relCellWidth
-                self.cardFileView.properties.propertyInfo.iconImageHeight = relCellHeight
-                if(image != nil) {
-                    self.cardFileView.properties.icon = image
+            thumbnailMode.generateThumImage {[weak self] image,page in
+                let pageIndex = page?.pageIndex() ?? 0
+                if(self?.thumbnailMode.pageIndex ?? 0 == pageIndex) {
+                    self?.cardFileView.properties.propertyInfo.iconImageWidth = relCellWidth
+                    self?.cardFileView.properties.propertyInfo.iconImageHeight = relCellHeight
+                    if(image != nil) {
+                        self?.cardFileView.properties.icon = image
+                    }
+                    self?.cardFileView.reloadData()
                 }
-                self.cardFileView.reloadData()
             }
         }
     }

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/KMLinkViewController/Views/KMLinkPageView/KMLinkPageView.swift

@@ -124,7 +124,7 @@ public class KMLinkPageView: BaseXibView {
             return
         }
         let thumbnail = KMNThumbnail.init(document: pdfView.document, currentPageIndex: choosedIndex-1)
-        thumbnail.generateThumImage {[weak self] image in
+        thumbnail.generateThumImage {[weak self] image,page in
             self?.pageImage.image = image
             if let width = image?.size.width, let height = image?.size.height {