KMPrintPaperModel.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. //打印纸张设置
  32. struct KMPrintPaperInfo {
  33. var type: KMPaperType = .A4
  34. var inset: NSEdgeInsets = NSEdgeInsetsMake(20, 20, 20, 20)
  35. var customSize: CGSize = CGSize(width: 210, height: 297)
  36. var size: CGSize {
  37. return KMPaperType.paperSize(type: type, px: true)
  38. }
  39. // var showSize: CGSize {
  40. // return KMPaperType.paperSize(type: type, px: false)
  41. // }
  42. enum KMPaperType: String, CaseIterable {
  43. case Actual = "Actual Size"
  44. case A3 = "A3"
  45. case A4 = "A4"
  46. case A5 = "A5"
  47. case B5 = "B5"
  48. case Envelope_10 = "Envelope #10"
  49. case Envelope_Choukei_3 = "Envelope Choukei 3"
  50. case Envelope_DL = "DL信封"
  51. case JIS_B5 = "JIS B5"
  52. case ROC_16K = "ROC 16K"
  53. case SuperB_A3 = "Super B/A3"
  54. case Tabloid = "Tabloid"
  55. case Tabloid_Oversize = "Tabloid Oversize"
  56. case US_Legal = "US Legal"
  57. case US_Letter = "US Letter"
  58. case custom = "Custom"
  59. static func allValues() -> [String] {
  60. var array: [String] = []
  61. for key in KMPaperType.allCases {
  62. array.append(key.rawValue)
  63. }
  64. return array
  65. }
  66. static func paperSize(type: KMPaperType, px: Bool) -> CGSize {
  67. var size = NSZeroSize
  68. switch type {
  69. //28.3
  70. case KMPaperType.A3:
  71. size = CGSize(width: 297, height: 420)
  72. case KMPaperType.A4:
  73. size = CGSize(width: 210, height: 297)
  74. case KMPaperType.A5:
  75. size = CGSize(width: 148, height: 210)
  76. case KMPaperType.B5:
  77. size = CGSize(width: 176, height: 250)
  78. case KMPaperType.Envelope_10:
  79. size = CGSize(width: 105, height: 241)
  80. case KMPaperType.Envelope_Choukei_3:
  81. size = CGSize(width: 120, height: 235)
  82. case KMPaperType.Envelope_DL:
  83. size = CGSize(width: 110, height: 220)
  84. case KMPaperType.JIS_B5:
  85. size = CGSize(width: 182, height: 257)
  86. case KMPaperType.ROC_16K:
  87. size = CGSize(width: 197, height: 273)
  88. case KMPaperType.SuperB_A3:
  89. size = CGSize(width: 330, height: 483)
  90. case KMPaperType.Tabloid:
  91. size = CGSize(width: 279, height: 432)
  92. case KMPaperType.Tabloid_Oversize:
  93. size = CGSize(width: 305, height: 457)
  94. case KMPaperType.US_Legal:
  95. size = CGSize(width: 216, height: 356)
  96. case KMPaperType.US_Letter:
  97. size = CGSize(width: 216, height: 279)
  98. default:
  99. size = CGSize(width: 210, height: 297)
  100. }
  101. if px {
  102. return CGSize(width: floor(size.width * (595.0 / 210.0)),
  103. height: floor(size.height * (842.0 / 297.0)))
  104. } else {
  105. return size
  106. }
  107. }
  108. }
  109. }
  110. class KMPrintPaperModel: NSObject {
  111. var info: KMPrintPaperInfo = KMPrintPaperInfo()
  112. var direction: KMPrintPaperDirectionType = .vertical
  113. }