KMPDFViewController.swift 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  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. refreshToolbarView()
  60. }
  61. func refreshToolbarView() {
  62. let _manager = KMPDFManager.manager
  63. if _manager.toolMode == .Markup ||
  64. _manager.toolMode == .Edit ||
  65. _manager.toolMode == .Form ||
  66. _manager.toolMode == .Fill ||
  67. _manager.toolMode == .Convert ||
  68. _manager.toolMode == .Protect ||
  69. _manager.toolMode == .Tools {
  70. toolbarBoxHeightConst.constant = 80
  71. } else {
  72. if _manager.isPageEditMode {
  73. toolbarBoxHeightConst.constant = 80
  74. } else {
  75. toolbarBoxHeightConst.constant = 40
  76. }
  77. }
  78. }
  79. //MARK: - 侧边栏
  80. func initSideBar() {
  81. sidebarBox.borderWidth = 0
  82. if sideBarController == nil {
  83. sideBarController = KMPDFSideBarController.init()
  84. }
  85. sideBarController?.view.frame = sidebarBox.bounds
  86. sideBarController?.view.autoresizingMask = [.width, .height]
  87. sidebarBox.contentView = sideBarController?.view
  88. sideBarController?.pdfView = pdfView
  89. sideBarController?.delegate = self
  90. sideBarController?.reloadData()
  91. }
  92. func enterPageEditMode() {
  93. pageEditViewController = KMNPageEditViewController(self.document)
  94. if(pageEditViewController != nil) {
  95. bottomContendBox.addSubview(pageEditViewController!.view)
  96. pageEditViewController?.view.frame = bottomContendBox.bounds
  97. pageEditViewController?.thumbnailBaseViewDelegate = self
  98. pageEditViewController?.view.autoresizingMask = [.width,.height]
  99. }
  100. }
  101. func exitPageEditMode() {
  102. if pageEditViewController != nil {
  103. pageEditViewController?.view.removeFromSuperview()
  104. pageEditViewController = nil
  105. }
  106. }
  107. }
  108. //MARK: - KMPDFSideBarControllerDelegate 左侧Sidebar代理
  109. extension KMPDFViewController: KMPDFSideBarControllerDelegate {
  110. func kmPDFSideBarControllerDidSidebarTypeUpdated(_ view: KMPDFSideBarController) {
  111. }
  112. func kmPDFSideBarControllerDidGotoPage(_ view: KMPDFSideBarController, _ pageIndex: Int) {
  113. pdfView.go(toPageIndex: pageIndex, animated: true)
  114. }
  115. }
  116. //MARK: - KMPDFToolbarControllerDelegate 工具栏代理
  117. extension KMPDFViewController: KMPDFToolbarControllerDelegate {
  118. func kmPDFToolbarControllerDidToolbarItemClicked(_ controller: KMPDFToolbarController, _ itemIdentifier: String) {
  119. print("toolbar点击", itemIdentifier)
  120. if itemIdentifier == KMPDFToolbar_ViewDisplay_Identifier {
  121. } else if itemIdentifier == KMPDFToolbar_PageEdit_Identifier {
  122. if KMPDFManager.manager.isPageEditMode == true {
  123. enterPageEditMode()
  124. } else {
  125. exitPageEditMode()
  126. }
  127. }
  128. refreshToolbarView()
  129. }
  130. }
  131. //MARK: - CPDFViewDelegate PDFView代理
  132. extension KMPDFViewController: CPDFViewDelegate {
  133. func pdfViewDocumentDidLoaded(_ pdfView: CPDFView!) {
  134. sideBarController?.reloadPageTurnerData()
  135. }
  136. func pdfViewCurrentPageDidChanged(_ pdfView: CPDFView!) {
  137. sideBarController?.reloadPageTurnerData()
  138. }
  139. func pdfViewScaleDidChanged(_ pdfView: CPDFView!) {
  140. }
  141. }
  142. extension KMPDFViewController: CPDFListViewDelegate {
  143. }
  144. extension KMPDFViewController: KMNThumbnailBaseViewDelegate {
  145. func clickThumbnailViewControlle(pageEditVC:KMNThumbnailBaseViewController?,currentIndex:Int) {
  146. exitPageEditMode()
  147. KMPDFManager.manager.isPageEditMode = false
  148. pdfToolbarController?.reloadPageEditView()
  149. }
  150. }