KMPrintPaperModel.swift 4.1 KB

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