KMPDFViewController.swift 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. //
  2. // KMPDFViewController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by Niehaoyu on 2024/10/18.
  6. //
  7. import Cocoa
  8. class KMPDFViewController: NSViewController {
  9. @IBOutlet var contendBox: NSBox!
  10. @IBOutlet var toolbarBox: NSBox! //工具栏Box
  11. @IBOutlet var sidebarBox: NSBox! //左侧边栏Box
  12. @IBOutlet var infoContendBox: NSBox! //
  13. @IBOutlet var bottomContendBox: NSBox! //
  14. @IBOutlet var toolbarBoxHeightConst: NSLayoutConstraint!
  15. var pdfView: CPDFListView!
  16. var document: CPDFDocument?
  17. var myDocument: NSDocument?
  18. //工具栏
  19. private var pdfToolbarController: KMPDFToolbarController?
  20. //BOTA SideBar
  21. private var sideBarController: KMPDFSideBarController?
  22. //页面编辑
  23. private var pageEditViewController: KMNPageEditViewController?
  24. override func viewDidLoad() {
  25. super.viewDidLoad()
  26. // Do view setup here.
  27. }
  28. override func viewDidAppear() {
  29. super.viewDidAppear()
  30. setupUI()
  31. }
  32. func setupUI() {
  33. initPDFView()
  34. initToolbar()
  35. initSideBar()
  36. infoContendBox.borderWidth = 0
  37. }
  38. //MARK: - PDFView
  39. func initPDFView() {
  40. if pdfView == nil {
  41. pdfView = CPDFListView.init(frame: infoContendBox.bounds)
  42. pdfView?.autoresizingMask = [.width, .height]
  43. }
  44. infoContendBox.addSubview(pdfView)
  45. pdfView.document = self.document
  46. pdfView.delegate = self
  47. pdfView.pdfListViewDelegate = self
  48. }
  49. //MARK: - 工具栏
  50. func initToolbar() {
  51. toolbarBox.borderWidth = 0
  52. if pdfToolbarController == nil {
  53. pdfToolbarController = KMPDFToolbarController.init()
  54. }
  55. pdfToolbarController?.view.frame = toolbarBox.bounds
  56. pdfToolbarController?.view.autoresizingMask = [.width, .height]
  57. pdfToolbarController?.delegate = self
  58. toolbarBox.contentView = pdfToolbarController?.view
  59. pdfToolbarController?.pdfView = pdfView
  60. refreshToolbarView()
  61. }
  62. func refreshToolbarView() {
  63. let _manager = KMPDFManager.manager
  64. if _manager.toolMode == .Markup ||
  65. _manager.toolMode == .Edit ||
  66. _manager.toolMode == .Form ||
  67. _manager.toolMode == .Fill ||
  68. _manager.toolMode == .Convert ||
  69. _manager.toolMode == .Protect ||
  70. _manager.toolMode == .Tools {
  71. toolbarBoxHeightConst.constant = 80
  72. } else {
  73. if _manager.isPageEditMode {
  74. toolbarBoxHeightConst.constant = 80
  75. } else {
  76. toolbarBoxHeightConst.constant = 40
  77. }
  78. }
  79. }
  80. //MARK: - 侧边栏
  81. func initSideBar() {
  82. sidebarBox.borderWidth = 0
  83. if sideBarController == nil {
  84. sideBarController = KMPDFSideBarController.init()
  85. }
  86. sideBarController?.view.frame = sidebarBox.bounds
  87. sideBarController?.view.autoresizingMask = [.width, .height]
  88. sidebarBox.contentView = sideBarController?.view
  89. sideBarController?.pdfView = pdfView
  90. sideBarController?.delegate = self
  91. sideBarController?.reloadData()
  92. }
  93. func enterPageEditMode() {
  94. pageEditViewController = KMNPageEditViewController(self.document)
  95. if(pageEditViewController != nil) {
  96. bottomContendBox.addSubview(pageEditViewController!.view)
  97. pageEditViewController?.view.frame = bottomContendBox.bounds
  98. pageEditViewController?.thumbnailBaseViewDelegate = self
  99. pageEditViewController?.view.autoresizingMask = [.width,.height]
  100. }
  101. }
  102. func exitPageEditMode() {
  103. if pageEditViewController != nil {
  104. pageEditViewController?.view.removeFromSuperview()
  105. pageEditViewController = nil
  106. }
  107. }
  108. }
  109. //MARK: - KMPDFSideBarControllerDelegate 左侧Sidebar代理
  110. extension KMPDFViewController: KMPDFSideBarControllerDelegate {
  111. func kmPDFSideBarControllerDidSidebarTypeUpdated(_ view: KMPDFSideBarController) {
  112. }
  113. func kmPDFSideBarControllerDidGotoPage(_ view: KMPDFSideBarController, _ pageIndex: Int) {
  114. pdfView.go(toPageIndex: pageIndex, animated: true)
  115. }
  116. }
  117. //MARK: - KMPDFToolbarControllerDelegate 工具栏代理
  118. extension KMPDFViewController: KMPDFToolbarControllerDelegate {
  119. func kmPDFToolbarControllerDidToolbarItemClicked(_ controller: KMPDFToolbarController, _ itemIdentifier: String) {
  120. print("toolbar点击", itemIdentifier)
  121. if itemIdentifier == KMPDFToolbar_ViewDisplay_Identifier {
  122. } else if itemIdentifier == KMPDFToolbar_PageEdit_Identifier {
  123. if KMPDFManager.manager.isPageEditMode == true {
  124. enterPageEditMode()
  125. } else {
  126. exitPageEditMode()
  127. }
  128. } else if itemIdentifier == KMPDFToolbar_convert_word_Identifier {
  129. let winC = KMConvertWordWindowController()
  130. let model = KMDocumentModel(url: self.pdfView.document.documentURL)
  131. winC.documentModel = model
  132. self.km_safe_beginSheet(windowC: winC)
  133. }
  134. refreshToolbarView()
  135. }
  136. }
  137. //MARK: - CPDFViewDelegate PDFView代理
  138. extension KMPDFViewController: CPDFViewDelegate {
  139. func pdfViewDocumentDidLoaded(_ pdfView: CPDFView!) {
  140. sideBarController?.reloadPageTurnerData()
  141. }
  142. func pdfViewCurrentPageDidChanged(_ pdfView: CPDFView!) {
  143. sideBarController?.reloadPageTurnerData()
  144. }
  145. func pdfViewScaleDidChanged(_ pdfView: CPDFView!) {
  146. pdfToolbarController?.reloadSelectZoomView()
  147. }
  148. }
  149. extension KMPDFViewController: CPDFListViewDelegate {
  150. }
  151. extension KMPDFViewController: KMNThumbnailBaseViewDelegate {
  152. func clickThumbnailViewControlle(pageEditVC:KMNThumbnailBaseViewController?,currentIndex:Int) {
  153. exitPageEditMode()
  154. KMPDFManager.manager.isPageEditMode = false
  155. pdfToolbarController?.reloadPageEditView()
  156. }
  157. }