|
@@ -25,6 +25,7 @@ import Foundation
|
|
|
import SVGKit
|
|
|
import KTVHTTPCache
|
|
|
import NCCommunication
|
|
|
+import PDFKit
|
|
|
|
|
|
class NCUtility: NSObject {
|
|
|
@objc static let sharedInstance: NCUtility = {
|
|
@@ -507,5 +508,24 @@ class NCUtility: NSObject {
|
|
|
let fileName = (metadata.fileNameView as NSString).deletingPathExtension + ".mov"
|
|
|
return NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameView LIKE[c] %@", metadata.account, metadata.serverUrl, fileName))
|
|
|
}
|
|
|
+
|
|
|
+ @objc func pdfThumbnail(url: URL, width: CGFloat = 240) -> UIImage? {
|
|
|
+ if #available(iOS 11.0, *) {
|
|
|
+ guard let data = try? Data(contentsOf: url), let page = PDFDocument(data: data)?.page(at: 0) else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
+ let pageSize = page.bounds(for: .mediaBox)
|
|
|
+ let pdfScale = width / pageSize.width
|
|
|
+
|
|
|
+ // Apply if you're displaying the thumbnail on screen
|
|
|
+ let scale = UIScreen.main.scale * pdfScale
|
|
|
+ let screenSize = CGSize(width: pageSize.width * scale, height: pageSize.height * scale)
|
|
|
+
|
|
|
+ return page.thumbnail(of: screenSize, for: .mediaBox)
|
|
|
+ } else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|