OpenPDFModule.m 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. //
  2. // ViewController.h
  3. // PDFView_RN
  4. //
  5. // Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  6. //
  7. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  8. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  9. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  10. // This notice may not be removed from this file.
  11. //
  12. #import "OpenPDFModule.h"
  13. #import "CPDFViewController.h"
  14. @interface OpenPDFModule ()<CPDFViewBaseControllerDelete>
  15. @end
  16. @implementation OpenPDFModule
  17. RCT_EXPORT_MODULE();
  18. RCT_EXPORT_METHOD(openPDF) {
  19. dispatch_async(dispatch_get_main_queue(), ^{
  20. NSString *documentPath = [[NSBundle mainBundle] pathForResource:@"developer_guide_ios" ofType:@"pdf"];
  21. UIViewController *rootNav = [OpenPDFModule presentedViewController];
  22. CPDFConfiguration *configuration = [[CPDFConfiguration alloc] init];
  23. CNavBarButtonItem *thumbnail = [[CNavBarButtonItem alloc]initWithViewLeftBarButtonItem:CPDFViewBarLeftButtonItem_Thumbnail];
  24. CNavBarButtonItem *back = [[CNavBarButtonItem alloc]initWithViewLeftBarButtonItem:CPDFViewBarLeftButtonItem_Back];
  25. CNavBarButtonItem *search = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_Search];
  26. CNavBarButtonItem *bota = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_Bota];
  27. CNavBarButtonItem *more = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_More];
  28. configuration.showleftItems = @[back,thumbnail];
  29. configuration.showRightItems = @[search,bota,more];
  30. CPDFViewController *pdfViewController = [[CPDFViewController alloc] initWithFilePath:documentPath password:nil configuration:configuration];
  31. pdfViewController.delegate = self;
  32. CNavigationController *nav = [[CNavigationController alloc]initWithRootViewController:pdfViewController];
  33. nav.modalPresentationStyle = UIModalPresentationFullScreen;
  34. [rootNav presentViewController:nav animated:YES completion:nil];
  35. });
  36. }
  37. RCT_EXPORT_METHOD(openPDFByPath:(nonnull NSString *)filePath) {
  38. dispatch_async(dispatch_get_main_queue(), ^{
  39. UIViewController *rootNav = [OpenPDFModule presentedViewController];
  40. CPDFConfiguration *configuration = [[CPDFConfiguration alloc] init];
  41. CNavBarButtonItem *thumbnail = [[CNavBarButtonItem alloc]initWithViewLeftBarButtonItem:CPDFViewBarLeftButtonItem_Thumbnail];
  42. CNavBarButtonItem *back = [[CNavBarButtonItem alloc]initWithViewLeftBarButtonItem:CPDFViewBarLeftButtonItem_Back];
  43. CNavBarButtonItem *search = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_Search];
  44. CNavBarButtonItem *bota = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_Bota];
  45. CNavBarButtonItem *more = [[CNavBarButtonItem alloc]initWithViewRightBarButtonItem:CPDFViewBarRightButtonItem_More];
  46. configuration.showleftItems = @[back,thumbnail];
  47. configuration.showRightItems = @[search,bota,more];
  48. CPDFViewController *pdfViewController = [[CPDFViewController alloc] initWithFilePath:filePath password:nil configuration:configuration];
  49. pdfViewController.delegate = self;
  50. CNavigationController *nav = [[CNavigationController alloc]initWithRootViewController:pdfViewController];
  51. nav.modalPresentationStyle = UIModalPresentationFullScreen;
  52. [rootNav presentViewController:nav animated:YES completion:nil];
  53. });
  54. }
  55. -(void)PDFViewBaseControllerDissmiss:(CPDFViewBaseController *)baseControllerDelete {
  56. [baseControllerDelete dismissViewControllerAnimated:YES completion:nil];
  57. }
  58. + (UIViewController*)presentedViewController {
  59. //get root view controller
  60. UIViewController *rootViewController = nil;
  61. id appDelegate = [[UIApplication sharedApplication] delegate];
  62. if ([appDelegate respondsToSelector:NSSelectorFromString(@"viewController")])
  63. {
  64. rootViewController = [appDelegate valueForKey:@"viewController"];
  65. }
  66. if (!rootViewController && [appDelegate respondsToSelector:@selector(window)])
  67. {
  68. UIWindow *window = [appDelegate valueForKey:@"window"];
  69. rootViewController = window.rootViewController;
  70. }
  71. if (!rootViewController)
  72. {
  73. UIWindow *window = [UIApplication sharedApplication].keyWindow;
  74. rootViewController = window.rootViewController;
  75. }
  76. if (!rootViewController)
  77. {
  78. return nil;
  79. }
  80. else
  81. {
  82. while (rootViewController.presentedViewController)
  83. {
  84. if (![rootViewController.presentedViewController isKindOfClass:[UIAlertController class]] &&
  85. rootViewController.modalPresentationStyle != UIModalPresentationPopover) {
  86. rootViewController = rootViewController.presentedViewController;
  87. } else {
  88. return rootViewController;
  89. }
  90. }
  91. }
  92. return rootViewController;
  93. }
  94. @end