1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //
- // KMNPDFPreView.swift
- // PDF Reader Pro
- //
- // Created by User-Tangchao on 2024/10/23.
- //
- import Cocoa
- class KMNPDFPreView: NSView {
- private lazy var contentBox_: NSBox = {
- let box = NSBox()
- return box
- }()
-
- lazy var pdfView: CPDFView = {
- let view = CPDFView()
- return view
- }()
-
- var contentInset: NSEdgeInsets = .init(top: 0, left: 0, bottom: 0, right: 0) {
- didSet {
- self.needsLayout = true
- }
- }
- deinit {
- KMPrint("KMNPDFPreView deinit.")
- }
-
- convenience init(fileUrl: URL, password: String?) {
- self.init()
-
- initSubviews()
- initDefaultValue()
-
- setFileUrl(fileUrl, password: password)
- }
-
- override func awakeFromNib() {
- super.awakeFromNib()
-
- initSubviews()
- initDefaultValue()
- }
-
- func initSubviews() {
- self.addSubview(self.contentBox_)
-
- self.contentBox_.contentView = self.pdfView
- }
-
- func initDefaultValue() {
-
- }
-
- func setFileUrl(_ fileUrl: URL, password: String?) {
- let document = CPDFDocument(url: fileUrl)
- let isLocked = document?.isLocked ?? false
- if isLocked {
- document?.unlock(withPassword: password ?? "")
- }
- pdfView.document = document
- }
-
- override func layout() {
- super.layout()
-
- let theFrame = self.bounds
- let contentX = self.contentInset.left
- let contentY = self.contentInset.top
- let contentW = NSWidth(theFrame)-contentX-self.contentInset.right
- let contentH = NSHeight(theFrame)-contentY-self.contentInset.bottom
- self.contentBox_.frame = NSMakeRect(contentX, contentY, contentW, contentH)
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- // Drawing code here.
- }
-
- }
|