123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- //
- // KMPDFViewController.swift
- // PDF Reader Pro
- //
- // Created by Niehaoyu on 2024/10/18.
- //
- import Cocoa
- class KMPDFViewController: NSViewController {
- @IBOutlet var contendBox: NSBox!
-
- @IBOutlet var toolbarBox: NSBox! //工具栏Box
-
- @IBOutlet var sidebarBox: NSBox! //左侧边栏Box
-
- @IBOutlet var infoContendBox: NSBox! //
-
- @IBOutlet var bottomContendBox: NSBox! //
-
- @IBOutlet var toolbarBoxHeightConst: NSLayoutConstraint!
-
- var viewManager: KMPDFViewManager = KMPDFViewManager.init()
- var toolbarManager: KMPDFToolbarManager = KMPDFToolbarManager.init()
-
- var pdfView: CPDFListView!
- var document: CPDFDocument?
- var myDocument: NSDocument?
-
- var insertDocuments: Set<CPDFDocument> = [] //插入新文档时,SDK会出现崩溃,临时记录
- //工具栏
- private var pdfToolbarController: KMPDFToolbarController?
-
- //BOTA SideBar
- private var sideBarController: KMPDFSideBarController?
-
- //页面编辑
- private var pageEditViewController: KMNPageEditViewController?
-
- private var displaySettingController: KMNDisplayViewController?
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- toolbarManager.pdfViewManager = viewManager
- }
-
- override func viewDidAppear() {
- super.viewDidAppear()
-
- setupUI()
-
- }
-
- func setupUI() {
-
- initPDFView()
-
- initToolbar()
-
- initSideBar()
-
- infoContendBox.borderWidth = 0
- }
-
- //MARK: - PDFView
- func initPDFView() {
- if pdfView == nil {
- pdfView = CPDFListView.init(frame: infoContendBox.bounds)
- pdfView?.autoresizingMask = [.width, .height]
- }
- infoContendBox.addSubview(pdfView)
- pdfView.document = self.document
-
- pdfView.delegate = self
- pdfView.pdfListViewDelegate = self
-
- }
-
-
-
- //MARK: - 工具栏
- func initToolbar() {
- toolbarBox.borderWidth = 0
-
- if pdfToolbarController == nil {
- pdfToolbarController = KMPDFToolbarController.init()
- }
- pdfToolbarController?.view.frame = toolbarBox.bounds
- pdfToolbarController?.view.autoresizingMask = [.width, .height]
- pdfToolbarController?.delegate = self
- toolbarBox.contentView = pdfToolbarController?.view
-
- pdfToolbarController?.viewManager = viewManager
- pdfToolbarController?.toolbarManager = toolbarManager
- pdfToolbarController?.pdfView = pdfView
- pdfToolbarController?.setUpData()
-
- refreshToolbarView()
- }
-
- func refreshToolbarView() {
-
- let _manager = viewManager
-
- if _manager.toolMode == .Markup ||
- _manager.toolMode == .Edit ||
- _manager.toolMode == .Form ||
- _manager.toolMode == .Fill ||
- _manager.toolMode == .Convert ||
- _manager.toolMode == .Protect ||
- _manager.toolMode == .Tools {
-
- toolbarBoxHeightConst.constant = 80
- } else {
- if _manager.isPageEditMode {
- toolbarBoxHeightConst.constant = 80
- } else {
- toolbarBoxHeightConst.constant = 40
- }
- }
-
- }
-
- //MARK: - 侧边栏
- func initSideBar() {
- sidebarBox.borderWidth = 0
-
- if sideBarController == nil {
- sideBarController = KMPDFSideBarController.init()
- }
- sideBarController?.view.frame = sidebarBox.bounds
- sideBarController?.view.autoresizingMask = [.width, .height]
- sidebarBox.contentView = sideBarController?.view
-
- sideBarController?.pdfView = pdfView
- sideBarController?.delegate = self
- sideBarController?.pdfViewManager = viewManager
-
- sideBarController?.reloadData()
- }
-
- //MARK: - PDFDisplayView
- func updatePDFDisplaySettingView() {
- if viewManager.showDisplayView {
- if displaySettingController == nil {
- displaySettingController = KMNDisplayViewController.init()
- }
- displaySettingController?.view.frame = CGRectMake(0, 0, 264, CGRectGetHeight(bottomContendBox.frame))
- displaySettingController?.view.autoresizingMask = [.height, .maxXMargin]
- bottomContendBox.addSubview(displaySettingController!.view, positioned: .above, relativeTo: infoContendBox)
- displaySettingController?.pdfView = self.pdfView
-
- displaySettingController?.reloadData()
-
- } else {
- displaySettingController?.view.removeFromSuperview()
-
- }
- }
-
-
- //MARK: - 页面编辑
- func enterPageEditMode() {
- pageEditViewController = KMNPageEditViewController(self.document)
- if(pageEditViewController != nil) {
- bottomContendBox.addSubview(pageEditViewController!.view)
- pageEditViewController?.view.frame = bottomContendBox.bounds
- pageEditViewController?.thumbnailBaseViewDelegate = self
- pageEditViewController?.view.autoresizingMask = [.width,.height]
- }
- }
-
- func exitPageEditMode() {
- if pageEditViewController != nil {
- pageEditViewController?.view.removeFromSuperview()
- pageEditViewController = nil
- }
- }
-
- }
- //MARK: - KMPDFSideBarControllerDelegate 左侧Sidebar代理
- extension KMPDFViewController: KMPDFSideBarControllerDelegate {
- func kmPDFSideBarControllerDidSidebarTypeUpdated(_ view: KMPDFSideBarController) {
-
- }
-
- func kmPDFSideBarControllerDidGotoPage(_ view: KMPDFSideBarController, _ pageIndex: Int) {
- pdfView.go(toPageIndex: pageIndex, animated: true)
-
- }
-
- }
- //MARK: - KMPDFToolbarControllerDelegate 工具栏代理
- extension KMPDFViewController: KMPDFToolbarControllerDelegate {
- func kmPDFToolbarControllerDidToolbarItemClicked(_ controller: KMPDFToolbarController, _ itemIdentifier: String) {
-
- print("toolbar点击", itemIdentifier)
- if itemIdentifier == KMPDFToolbar_ViewDisplay_Identifier {
- updatePDFDisplaySettingView()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Identifier {
- if viewManager.isPageEditMode == true {
- enterPageEditMode()
- } else {
- exitPageEditMode()
- }
- } else if itemIdentifier == KMPDFToolbar_convert_word_Identifier {
- let winC = KMConvertWordWindowController()
- let model = KMDocumentModel(url: self.pdfView.document.documentURL)
- winC.documentModel = model
- self.km_safe_beginSheet(windowC: winC)
- } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertFile_Identifier {
- pageEditViewController?.insertFromPDFAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertBlank_Identifier {
- pageEditViewController?.insertFromBlankAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertClip_Identifier {
- pageEditViewController?.insertFromClipboardAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertScanner_Identifier {
- pageEditViewController?.insertFromScannerAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Extract_Identifier {
- pageEditViewController?.extractPDFAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Replace_Identifier {
- pageEditViewController?.replacePDFAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Split_Identifier {
- pageEditViewController?.splitPDFAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Reverse_Identifier {
- pageEditViewController?.reversePDFAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_LeftRotate_Identifier {
- pageEditViewController?.rotatePageLeftAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_RightRotate_Identifier{
- pageEditViewController?.rotatePageRightAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Delete_Identifier {
- pageEditViewController?.deletePageAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Reduce_Identifier {
- pageEditViewController?.zoomOutPageAction()
- } else if itemIdentifier == KMPDFToolbar_PageEdit_Increase_Identifier {
- pageEditViewController?.zoomInPageAction()
- }
-
- refreshToolbarView()
- }
- }
- //MARK: - CPDFViewDelegate PDFView代理
- extension KMPDFViewController: CPDFViewDelegate {
- func pdfViewDocumentDidLoaded(_ pdfView: CPDFView!) {
- sideBarController?.reloadPageTurnerData()
- }
-
- func pdfViewCurrentPageDidChanged(_ pdfView: CPDFView!) {
- sideBarController?.reloadPageTurnerData()
-
- }
-
- func pdfViewScaleDidChanged(_ pdfView: CPDFView!) {
- pdfToolbarController?.reloadSelectZoomView()
-
- }
-
- }
- extension KMPDFViewController: CPDFListViewDelegate {
- }
-
- extension KMPDFViewController: KMNThumbnailBaseViewDelegate {
- func clickThumbnailViewControlle(pageEditVC:KMNThumbnailBaseViewController?,currentIndex:Int) {
- exitPageEditMode()
- viewManager.isPageEditMode = false
- pdfToolbarController?.reloadPageEditView()
- }
-
- func insertPDFThumbnailViewControlle(pageEditVC: KMNThumbnailBaseViewController?, pdfDocment: CPDFDocument?) {
- if(pdfDocment != nil) {
- insertDocuments.insert(pdfDocment!)
- }
- }
- }
-
|