KMTools_OC.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //
  2. // KMTools_OC.m
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2023/3/27.
  6. //
  7. #import "KMTools_OC.h"
  8. #import <AppKit/AppKit.h>
  9. @implementation KMTools_OC
  10. + (BOOL)isDefaultRoleHandlerForContentType:(NSString*)fileExtension {
  11. NSString *app = (NSString*)CFBridgingRelease(LSCopyDefaultRoleHandlerForContentType((CFStringRef)CFBridgingRetain([self UTIforFileExtension:fileExtension]),
  12. kLSRolesAll));
  13. if ([app isEqualToString:[[NSBundle mainBundle] bundleIdentifier]]) {
  14. return YES;
  15. }
  16. return NO;
  17. }
  18. + (BOOL)setMyselfAsDefaultApplicationForFileExtension:(NSString *) fileExtension {
  19. OSStatus returnStatus = LSSetDefaultRoleHandlerForContentType ((CFStringRef)CFBridgingRetain([self UTIforFileExtension:fileExtension]),
  20. kLSRolesAll,
  21. (CFStringRef) CFBridgingRetain([[NSBundle mainBundle] bundleIdentifier]));
  22. if (returnStatus != 0) {
  23. return NO;
  24. }
  25. return YES;
  26. }
  27. + (BOOL) setPreviewAsDefaultApplicationForFileExtension:(NSString *) fileExtension {
  28. OSStatus returnStatus = LSSetDefaultRoleHandlerForContentType ((CFStringRef)CFBridgingRetain([self UTIforFileExtension:fileExtension]),
  29. kLSRolesAll,
  30. (CFStringRef)@"com.apple.Preview");
  31. if (returnStatus != 0) {
  32. return NO;
  33. }
  34. return YES;
  35. }
  36. #pragma mark --SetDefaultRoleHandlerForContentType
  37. + (NSString *)UTIforFileExtension:(NSString *) extension {
  38. NSString * UTIString = (NSString *)CFBridgingRelease(UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
  39. (CFStringRef)CFBridgingRetain(extension),
  40. NULL));
  41. return UTIString;
  42. }
  43. @end
  44. @implementation KMTools_OC (Testing)
  45. + (NSData *)getPDFData {
  46. NSMutableData *pdfData = [[NSMutableData alloc] init];
  47. CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData((CFMutableDataRef)pdfData);
  48. CFMutableDictionaryRef myDictionary = CFDictionaryCreateMutable(NULL,
  49. 0,
  50. &kCFTypeDictionaryKeyCallBacks,
  51. &kCFTypeDictionaryValueCallBacks);
  52. CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("PDF Master"));
  53. CGRect mediaBox = CGRectMake(0, 0, 595, 842);
  54. CGContextRef pdfContext = CGPDFContextCreate(consumer, &mediaBox, myDictionary);
  55. CGContextSetRGBFillColor(pdfContext, 1.0, 0.0, 0.0, 0.0);
  56. CGContextSetTextDrawingMode(pdfContext, kCGTextFill);
  57. CFRelease(myDictionary);
  58. CGContextBeginPage(pdfContext, &mediaBox);
  59. CGContextEndPage(pdfContext);
  60. CGPDFContextClose(pdfContext);
  61. CGContextRelease (pdfContext);
  62. CGDataConsumerRelease(consumer);
  63. return pdfData;
  64. }
  65. @end
  66. @implementation KMPageSizeTool
  67. + (NSString *)conversionWithUnit:(NSString *)unit value:(CGFloat)value
  68. {
  69. CGFloat f = value;
  70. if ([unit isEqualToString:@"cm"]) {
  71. f = value/10.0;
  72. } else if([unit isEqualToString:@"in"]){
  73. f = value/25.4;
  74. } else {
  75. f = value;
  76. }
  77. if (fmodf(f, 1)==0) {//如果有一位小数点
  78. return [NSString stringWithFormat:@"%.0f",f];
  79. } else if (fmodf(value*10, 1)==0) {//如果有两位小数点
  80. return [NSString stringWithFormat:@"%.1f",f];
  81. } else {
  82. return [NSString stringWithFormat:@"%.2f",f];
  83. }
  84. }
  85. @end