KMPrintPaperModel.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // KMPrintPaperModel.swift
  3. // PDF Master
  4. //
  5. // Created by lizhe on 2022/12/21.
  6. //
  7. import Cocoa
  8. enum KMPrintPaperDirectionType: String, CaseIterable {
  9. case vertical = "Vertical" //纵向
  10. case horizontal = "Horizontal" //横向
  11. static func allValues() -> [String] {
  12. var array: [String] = []
  13. for key in KMPrintPaperDirectionType.allCases {
  14. array.append(key.rawValue)
  15. }
  16. return array
  17. }
  18. static func typeOfRawValue(_ rawValue: String) -> KMPrintPaperDirectionType {
  19. var type: KMPrintPaperDirectionType = .vertical
  20. switch rawValue {
  21. case KMPrintPaperDirectionType.vertical.rawValue, NSLocalizedString(KMPrintPaperDirectionType.vertical.rawValue, comment: ""):
  22. type = .vertical
  23. case KMPrintPaperDirectionType.horizontal.rawValue, NSLocalizedString(KMPrintPaperDirectionType.horizontal.rawValue, comment: ""):
  24. type = .horizontal
  25. default:
  26. type = .vertical
  27. }
  28. return type
  29. }
  30. }
  31. enum KMPrintPaperInfoUnit: Int {
  32. case mm = 0
  33. case cm
  34. case `in`
  35. case px
  36. }
  37. //打印纸张设置
  38. struct KMPrintPaperInfo {
  39. var type: KMPaperType = .A4
  40. var inset: NSEdgeInsets = NSEdgeInsetsMake(20, 20, 20, 20)
  41. var customSize: CGSize = CGSize(width: 210, height: 297)
  42. var unit: KMPrintPaperInfoUnit = .mm
  43. var size: CGSize {
  44. return KMPaperType.paperSize(type: type, unit: unit)
  45. }
  46. // var showSize: CGSize {
  47. // return KMPaperType.paperSize(type: type, px: false)
  48. // }
  49. enum KMPaperType: String, CaseIterable {
  50. case Actual = "Actual Size"
  51. case A3 = "A3"
  52. case A4 = "A4"
  53. case A5 = "A5"
  54. case B5 = "B5"
  55. case Envelope_10 = "Envelope #10"
  56. case Envelope_Choukei_3 = "Envelope Choukei 3"
  57. case Envelope_DL = "DL信封"
  58. case JIS_B5 = "JIS B5"
  59. case ROC_16K = "ROC 16K"
  60. case SuperB_A3 = "Super B/A3"
  61. case Tabloid = "Tabloid"
  62. case Tabloid_Oversize = "Tabloid Oversize"
  63. case US_Legal = "US Legal"
  64. case US_Letter = "US Letter"
  65. case custom = "Custom"
  66. static func allValues() -> [String] {
  67. var array: [String] = []
  68. for key in KMPaperType.allCases {
  69. array.append(key.rawValue)
  70. }
  71. return array
  72. }
  73. static func paperSize(type: KMPaperType, unit: KMPrintPaperInfoUnit) -> CGSize {
  74. var size = NSZeroSize
  75. switch type {
  76. //28.3
  77. case KMPaperType.A3:
  78. size = CGSize(width: 297, height: 420)
  79. case KMPaperType.A4:
  80. size = CGSize(width: 210, height: 297)
  81. case KMPaperType.A5:
  82. size = CGSize(width: 148, height: 210)
  83. case KMPaperType.B5:
  84. size = CGSize(width: 176, height: 250)
  85. case KMPaperType.Envelope_10:
  86. size = CGSize(width: 105, height: 241)
  87. case KMPaperType.Envelope_Choukei_3:
  88. size = CGSize(width: 120, height: 235)
  89. case KMPaperType.Envelope_DL:
  90. size = CGSize(width: 110, height: 220)
  91. case KMPaperType.JIS_B5:
  92. size = CGSize(width: 182, height: 257)
  93. case KMPaperType.ROC_16K:
  94. size = CGSize(width: 197, height: 273)
  95. case KMPaperType.SuperB_A3:
  96. size = CGSize(width: 330, height: 483)
  97. case KMPaperType.Tabloid:
  98. size = CGSize(width: 279, height: 432)
  99. case KMPaperType.Tabloid_Oversize:
  100. size = CGSize(width: 305, height: 457)
  101. case KMPaperType.US_Legal:
  102. size = CGSize(width: 216, height: 356)
  103. case KMPaperType.US_Letter:
  104. size = CGSize(width: 216, height: 279)
  105. default:
  106. size = CGSize(width: 210, height: 297)
  107. }
  108. if unit == .mm {
  109. } else if unit == .cm {
  110. size = CGSize(width: floor(size.width * 0.1),
  111. height: floor(size.height * 0.1))
  112. } else if unit == .in {
  113. size = CGSize(width: floor(size.width * 0.254),
  114. height: floor(size.height * 0.254))
  115. } else {
  116. size = CGSize(width: floor(size.width * (595.0 / 210.0)),
  117. height: floor(size.height * (842.0 / 297.0)))
  118. }
  119. return CGSize(width: size.width * 100 / 100, height: size.height * 100 / 100)
  120. }
  121. }
  122. }
  123. class KMPrintPaperModel: NSObject {
  124. var info: KMPrintPaperInfo = KMPrintPaperInfo()
  125. var direction: KMPrintPaperDirectionType = .vertical
  126. }