KMNPageSizeTool.swift 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //
  2. // KMPageSizeTool.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/9/26.
  6. //
  7. import Cocoa
  8. let KMNPaperSizeNameA3: String = KMLocalizedString("A3")
  9. let KMNPaperSizeNameA4: String = KMLocalizedString("A4")
  10. let KMNPaperSizeNameA5: String = KMLocalizedString("A5")
  11. let KMNPaperSizeNameB5: String = KMLocalizedString("B5")
  12. let KMNPaperSizeNameEnvelope10: String = KMLocalizedString("Envelope #10")
  13. let KMNPaperSizeNameEnvelopeChoukei: String = KMLocalizedString("Envelope Choukei 3")
  14. let KMNPaperSizeNameEnvelopeDL: String = KMLocalizedString("Envelope DL")
  15. let KMNPaperSizeNameJISB5: String = KMLocalizedString("JIS B5")
  16. let KMNPaperSizeNameROC16K: String = KMLocalizedString("ROC 16K")
  17. let KMNPaperSizeNameSuper: String = KMLocalizedString("Super B/A3")
  18. let KMNPaperSizeNameTabloid: String = KMLocalizedString("Tabloid")
  19. let KMNPaperSizeNameTabloidOversize: String = KMLocalizedString("Tabloid Oversize")
  20. let KMNPaperSizeNameUSLegal: String = KMLocalizedString("US Legal")
  21. let KMNPaperSizeNameUSLetter: String = KMLocalizedString("US Letter")
  22. @objcMembers class KMNPageSizeTool: NSObject {
  23. static func paperSize() -> [String] {
  24. return [KMNPaperSizeNameA3,
  25. KMNPaperSizeNameA4,
  26. KMNPaperSizeNameA5,
  27. KMNPaperSizeNameB5,
  28. KMNPaperSizeNameEnvelope10,
  29. KMNPaperSizeNameEnvelopeChoukei,
  30. KMNPaperSizeNameEnvelopeDL,
  31. KMNPaperSizeNameJISB5,
  32. KMNPaperSizeNameROC16K,
  33. KMNPaperSizeNameSuper,
  34. KMNPaperSizeNameTabloid,
  35. KMNPaperSizeNameTabloidOversize,
  36. KMNPaperSizeNameUSLegal,
  37. KMNPaperSizeNameUSLetter]
  38. }
  39. static func getPaperSize(paperName: String) -> NSSize {
  40. var size: NSSize = .zero
  41. if (paperName == KMNPaperSizeNameA3) {
  42. size = NSMakeSize(297, 420)
  43. } else if (paperName == KMNPaperSizeNameA4){
  44. size = NSMakeSize(210, 297)
  45. } else if (paperName == KMNPaperSizeNameA5){
  46. size = NSMakeSize(148, 210)
  47. } else if (paperName == KMNPaperSizeNameB5){
  48. size = NSMakeSize(176, 250)
  49. } else if (paperName == KMNPaperSizeNameEnvelope10){
  50. size = NSMakeSize(105, 241)
  51. } else if (paperName == KMNPaperSizeNameEnvelopeChoukei){
  52. size = NSMakeSize(120, 235)
  53. } else if (paperName == KMNPaperSizeNameEnvelopeDL){
  54. size = NSMakeSize(110, 220)
  55. } else if (paperName == KMNPaperSizeNameJISB5){
  56. size = NSMakeSize(182, 257)
  57. } else if (paperName == KMNPaperSizeNameROC16K){
  58. size = NSMakeSize(197, 273)
  59. } else if (paperName == KMNPaperSizeNameSuper){
  60. size = NSMakeSize(330, 483)
  61. } else if (paperName == KMNPaperSizeNameTabloid){
  62. size = NSMakeSize(279, 432)
  63. } else if (paperName == KMNPaperSizeNameTabloidOversize){
  64. size = NSMakeSize(305, 457)
  65. } else if (paperName == KMNPaperSizeNameUSLegal){
  66. size = NSMakeSize(216, 356)
  67. } else if (paperName == KMNPaperSizeNameUSLetter){
  68. size = NSMakeSize(216, 279)
  69. }
  70. return size
  71. }
  72. static func conversion(withUnit: String, value: CGFloat) -> String {
  73. var f = value
  74. if (withUnit == "cm") {
  75. f = value / 10.0
  76. } else if (withUnit == "in") {
  77. f = value / 25.4
  78. } else {
  79. f = value
  80. }
  81. if (fmod(f, 1) == 0) { //如果有一位小数点
  82. return String(format: "%.0f", f)
  83. } else if (fmod(value * 10, 1) == 0) { //如果有两位小数点
  84. return String(format: "%.1f", f)
  85. } else {
  86. return String(format: "%.2f", f)
  87. }
  88. }
  89. static func conversion(with unit: String, from funit: String, value: CGFloat) -> String {
  90. var f = value
  91. if (unit == funit) {
  92. } else if(unit == "cm") {
  93. if(funit == "mm") {
  94. f = value/10.0
  95. } else if(funit == "in") {
  96. f = value * 25.4
  97. }
  98. } else if(unit == "mm") {
  99. if(funit == "cm") {
  100. f = value * 10.0
  101. } else if(funit == "in") {
  102. f = value * 10 * 25.4
  103. }
  104. } else if(unit == "in") {
  105. if(funit == "cm") {
  106. f = value/25.4
  107. } else if(funit == "mm") {
  108. f = value/10.0
  109. f = f/25.4
  110. }
  111. }
  112. if (fmod(f, 1) == 0) { //如果有一位小数点
  113. return String(format: "%.0f", f)
  114. } else if (fmod(value * 10, 1) == 0) { //如果有两位小数点
  115. return String(format: "%.1f", f)
  116. } else {
  117. return String(format: "%.2f", f)
  118. }
  119. }
  120. }