├── .DS_Store ├── README.md ├── WYPDFConverterSwift ├── .DS_Store ├── Resource │ ├── Document │ │ ├── iOS.ppt │ │ ├── H5,JS资源.txt │ │ ├── Page.pages │ │ ├── 华为推荐书目.xls │ │ ├── 抵押贷款.numbers │ │ ├── excel操作大全.doc │ │ ├── 大话Swift 3.0(上).key │ │ └── Xcode快捷键.rtf │ └── image │ │ ├── image0.jpg │ │ ├── image1.jpg │ │ ├── image2.jpg │ │ ├── image3.jpg │ │ ├── image4.jpg │ │ ├── image5.jpg │ │ ├── image6.jpg │ │ ├── image7.jpg │ │ └── image8.jpg ├── WYPDFConverterSwift │ ├── .DS_Store │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── ViewController.swift │ ├── AppDelegate.swift │ └── ViewController │ │ └── WYWebViewController.swift ├── WYPDFConverterSwift.xcodeproj │ ├── xcuserdata │ │ ├── apple.xcuserdatad │ │ │ ├── xcdebugger │ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ │ ├── xcschememanagement.plist │ │ │ │ └── WYPDFConverterSwift.xcscheme │ │ └── young.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── WYPDFConverterSwift.xcscheme │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ ├── apple.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── young.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── project.pbxproj ├── WYPDFConverterSwiftTests │ ├── Info.plist │ └── WYPDFConverterSwiftTests.swift ├── WYPDFConverterSwiftUITests │ ├── Info.plist │ └── WYPDFConverterSwiftUITests.swift └── WYPDFConverter │ └── WYPDFConverter.swift └── WYPDFConverterOC ├── WYPDFConverterOC ├── Assets.xcassets │ ├── Contents.json │ ├── contract_add.imageset │ │ ├── contract_add@2x.png │ │ ├── contract_add@3x.png │ │ └── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── ViewController.h ├── Controller │ ├── WYFilesViewController.h │ ├── WYImageViewController.h │ ├── WYWebViewController.h │ ├── WYFilesViewController.m │ ├── WYImageViewController.m │ └── WYWebViewController.m ├── Cell │ ├── WYImageCollectionViewCell.m │ └── WYImageCollectionViewCell.h ├── AppDelegate.h ├── main.m ├── Catagory │ ├── UIViewController+ImagePicker.h │ └── UIViewController+ImagePicker.m ├── Info.plist ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── AppDelegate.m └── ViewController.m ├── Resource ├── Document │ ├── iOS.ppt │ ├── Page.pages │ ├── 华为推荐书目.xls │ ├── H5,JS资源.txt │ ├── 抵押贷款.numbers │ ├── excel操作大全.doc │ ├── 虎扑篮球.webarchive │ ├── 大话Swift 3.0(上).key │ └── Xcode快捷键.rtf └── image │ ├── image0.jpg │ ├── image1.jpg │ ├── image2.jpg │ ├── image3.jpg │ ├── image4.jpg │ ├── image5.jpg │ ├── image6.jpg │ ├── image7.jpg │ └── image8.jpg ├── WYPDFConverterOC.xcodeproj ├── xcuserdata │ ├── apple.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── WYPDFConverterOC.xcscheme │ └── young.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── WYPDFConverterOC.xcscheme ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ ├── apple.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── young.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── project.pbxproj ├── WYPDFConverter ├── UIWebView+WYFile.h ├── WYPDFConverter.h ├── WYPDFConverter.m └── UIWebView+WYFile.m ├── WYPDFConverterOCTests ├── Info.plist └── WYPDFConverterOCTests.m └── WYPDFConverterOCUITests ├── Info.plist └── WYPDFConverterOCUITests.m /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WYPDFConverterDemo 2 | PDF转换器 3 | 4 | [简书地址](http://www.jianshu.com/p/b6fb4d662969) 5 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/.DS_Store -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/iOS.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/iOS.ppt -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image0.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image1.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image2.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image3.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image4.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image5.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image6.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image7.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/image/image8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/image/image8.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/Page.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/Page.pages -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/华为推荐书目.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/华为推荐书目.xls -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/iOS.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/iOS.ppt -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image0.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image1.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image2.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image3.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image4.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image5.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image6.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image7.jpg -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/image/image8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/image/image8.jpg -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/H5,JS资源.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/H5,JS资源.txt -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/抵押贷款.numbers: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/抵押贷款.numbers -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/excel操作大全.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/excel操作大全.doc -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/虎扑篮球.webarchive: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/虎扑篮球.webarchive -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/H5,JS资源.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/H5,JS资源.txt -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/Page.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/Page.pages -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/华为推荐书目.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/华为推荐书目.xls -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/抵押贷款.numbers: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/抵押贷款.numbers -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/WYPDFConverterSwift/.DS_Store -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/excel操作大全.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/excel操作大全.doc -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/大话Swift 3.0(上).key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/Resource/Document/大话Swift 3.0(上).key -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/大话Swift 3.0(上).key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/Resource/Document/大话Swift 3.0(上).key -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/young.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/contract_add.imageset/contract_add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/contract_add.imageset/contract_add@2x.png -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/contract_add.imageset/contract_add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/contract_add.imageset/contract_add@3x.png -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.xcworkspace/xcuserdata/young.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.xcworkspace/xcuserdata/young.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.xcworkspace/xcuserdata/young.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/captain-young/WYPDFConverterDemo/HEAD/WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.xcworkspace/xcuserdata/young.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYFilesViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WYFilesViewController.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/29. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYFilesViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYImageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WYImageViewController.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYImageViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Cell/WYImageCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYImageCollectionViewCell.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "WYImageCollectionViewCell.h" 10 | 11 | @implementation WYImageCollectionViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Cell/WYImageCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // WYImageCollectionViewCell.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYImageCollectionViewCell : UICollectionViewCell 12 | @property (weak, nonatomic) IBOutlet UIImageView *imageView; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYWebViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WYWebViewController.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYWebViewController : UIViewController 12 | 13 | @property (nonatomic, copy) NSString *filePath; 14 | 15 | @property (nonatomic, copy) NSString *fileName; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverter/UIWebView+WYFile.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+WYFile.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIWebView (WYFile) 12 | 13 | 14 | /** 15 | webView转换为PDF数据 16 | */ 17 | - (NSData *)convert2PDFData; 18 | 19 | 20 | /** 21 | 转换成image图片 22 | */ 23 | - (UIImage *)convert2Image; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/contract_add.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "contract_add@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "contract_add@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Catagory/UIViewController+ImagePicker.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+ImagePicker.h 3 | // JunYouLawer 4 | // 5 | // Created by Apple on 16/9/5. 6 | // Copyright © 2016年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef void(^imageBlock)(UIImage *image); 13 | 14 | @interface UIViewController (ImagePicker) 15 | 16 | /** 17 | * 照片选择 18 | * 19 | * @param edit 照片是否需要编辑 20 | * @param block 照片回调 21 | */ 22 | - (void)showCanEdit:(BOOL)edit image:(imageBlock)block; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOCTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOCUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwiftTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwiftUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WYPDFConverterOC.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1834C8741EF9043F0092518D 16 | 17 | primary 18 | 19 | 20 | 1834C88D1EF904400092518D 21 | 22 | primary 23 | 24 | 25 | 1834C8981EF904400092518D 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/xcuserdata/young.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WYPDFConverterOC.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1834C8741EF9043F0092518D 16 | 17 | primary 18 | 19 | 20 | 1834C88D1EF904400092518D 21 | 22 | primary 23 | 24 | 25 | 1834C8981EF904400092518D 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverter/WYPDFConverter.h: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverter.h 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "UIWebView+WYFile.h" 12 | 13 | @interface WYPDFConverter : NSObject 14 | 15 | /** 16 | image to PDF 17 | 18 | @param fileName 文件名 19 | @param images 图片数组 20 | */ 21 | + (BOOL)convertPDFWithImages:(NSArray*)images fileName:(NSString *)fileName; 22 | 23 | 24 | /** 25 | webView to PDF 26 | 27 | */ 28 | + (BOOL)convertPDFWithWebView:(UIWebView *)webView fileName:(NSString *)fileName; 29 | 30 | 31 | /** 32 | 文件夹目录 33 | */ 34 | + (NSString *)pdfSaveFolder; 35 | 36 | /** 37 | 文件保存地址 38 | 39 | @param fileName 文件名 40 | */ 41 | + (NSString *)saveDirectory:(NSString *)fileName; 42 | 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WYPDFConverterSwift.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 6F14D9F31EF954BF00911D47 16 | 17 | primary 18 | 19 | 20 | 6F14DA071EF954BF00911D47 21 | 22 | primary 23 | 24 | 25 | 6F14DA121EF954BF00911D47 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/young.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WYPDFConverterSwift.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 6F14D9F31EF954BF00911D47 16 | 17 | primary 18 | 19 | 20 | 6F14DA071EF954BF00911D47 21 | 22 | primary 23 | 24 | 25 | 6F14DA121EF954BF00911D47 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOCTests/WYPDFConverterOCTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverterOCTests.m 3 | // WYPDFConverterOCTests 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYPDFConverterOCTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation WYPDFConverterOCTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwiftTests/WYPDFConverterSwiftTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverterSwiftTests.swift 3 | // WYPDFConverterSwiftTests 4 | // 5 | // Created by 杨新威 on 2017/6/20. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import WYPDFConverterSwift 11 | 12 | class WYPDFConverterSwiftTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOCUITests/WYPDFConverterOCUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverterOCUITests.m 3 | // WYPDFConverterOCUITests 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WYPDFConverterOCUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation WYPDFConverterOCUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwiftUITests/WYPDFConverterSwiftUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverterSwiftUITests.swift 3 | // WYPDFConverterSwiftUITests 4 | // 5 | // Created by 杨新威 on 2017/6/20. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class WYPDFConverterSwiftUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | NSPhotoLibraryUsageDescription 32 | 33 | NSCameraUsageDescription 34 | 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYFilesViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYFilesViewController.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/29. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "WYFilesViewController.h" 10 | #import "WYWebViewController.h" 11 | 12 | @interface WYFilesViewController () 13 | 14 | @property (strong, nonatomic) NSArray *files; 15 | @property (strong, nonatomic) NSArray *type; 16 | @property (weak, nonatomic) IBOutlet UITableView *tableView; 17 | 18 | @end 19 | 20 | @implementation WYFilesViewController 21 | 22 | - (void)viewDidLoad { 23 | 24 | [super viewDidLoad]; 25 | [self getData]; 26 | 27 | [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])]; 28 | 29 | } 30 | 31 | - (void)getData{ 32 | _files = @[@"抵押贷款",@"大话Swift 3.0(上)",@"华为推荐书目",@"Xcode快捷键",@"Page",@"iOS",@"H5,JS资源",@"excel操作大全",@"虎扑篮球"]; 33 | _type = @[@"numbers",@"key",@"xls",@"rtf",@"pages",@"ppt",@"txt",@"doc",@"webarchive"]; 34 | } 35 | 36 | #pragma mark -- UITableViewDelegate 37 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 38 | { 39 | return _files.count; 40 | } 41 | 42 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 43 | { 44 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath]; 45 | cell.textLabel.text = [NSString stringWithFormat:@"%@.%@",_files[indexPath.row],_type[indexPath.row]]; 46 | return cell; 47 | } 48 | 49 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 50 | [tableView deselectRowAtIndexPath:indexPath animated:YES]; 51 | WYWebViewController *webVc = [[WYWebViewController alloc] init]; 52 | webVc.filePath = [[NSBundle mainBundle] pathForResource:_files[indexPath.row] ofType:_type[indexPath.row]]; 53 | webVc.fileName = _files[indexPath.row]; 54 | [self.navigationController pushViewController:webVc animated:YES]; 55 | } 56 | 57 | 58 | 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // WYPDFConverterSwift 4 | // 5 | // Created by 杨新威 on 2017/6/20. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{ 12 | 13 | @IBOutlet weak var tableView: UITableView! 14 | var files : Array! 15 | var types : Array! 16 | let cellID = "cellID" 17 | 18 | 19 | override func viewDidLoad() { 20 | super.viewDidLoad() 21 | 22 | self.getData() 23 | self.tableView.dataSource = self 24 | self.tableView.delegate = self 25 | self.tableView?.register(UITableViewCell.self, forCellReuseIdentifier: cellID) 26 | } 27 | 28 | func getData() { 29 | files = ["多张图片转PDF","抵押贷款","大话Swift 3.0(上)","华为推荐书目","Xcode快捷键","Page","iOS","H5,JS资源","excel操作大全"] 30 | types = ["image","numbers","key","xls","rtf","pages","ppt","txt","doc"] 31 | } 32 | 33 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 34 | return files.count 35 | } 36 | 37 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 38 | let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) 39 | cell.textLabel?.text = files[indexPath.row] + "." + types[indexPath.row] 40 | cell.accessoryType = .disclosureIndicator 41 | return cell 42 | } 43 | 44 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 45 | tableView.deselectRow(at: indexPath, animated: true) 46 | if indexPath.row == 0 { 47 | 48 | }else{ 49 | let webVc = WYWebViewController() 50 | webVc.fileName = files[indexPath.row] 51 | webVc.filePath = Bundle.main.path(forResource: files[indexPath.row], ofType: types[indexPath.row]) 52 | self.navigationController?.pushViewController(webVc, animated: true) 53 | 54 | } 55 | } 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Catagory/UIViewController+ImagePicker.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+ImagePicker.m 3 | // JunYouLawer 4 | // 5 | // Created by Apple on 16/9/5. 6 | // Copyright © 2016年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "UIViewController+ImagePicker.h" 10 | #import "objc/runtime.h" 11 | #import 12 | 13 | static BOOL canEdit = NO; 14 | static char blockKey; 15 | 16 | @interface UIViewController() 17 | 18 | @property (nonatomic,copy)imageBlock imageBlock; 19 | 20 | @end 21 | 22 | @implementation UIViewController (ImagePicker) 23 | 24 | 25 | 26 | #pragma mark-set 27 | - (void)setImageBlock:(imageBlock)imageBlock 28 | { 29 | objc_setAssociatedObject(self, &blockKey, imageBlock, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 30 | } 31 | #pragma mark-get 32 | - (imageBlock )imageBlock 33 | { 34 | return objc_getAssociatedObject(self, &blockKey); 35 | } 36 | 37 | - (void)showCanEdit:(BOOL)edit image:(imageBlock)block 38 | { 39 | if (edit) { 40 | canEdit = edit; 41 | } 42 | 43 | //跳转到相册页面 44 | UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init]; 45 | imagePickerController.delegate = self; 46 | imagePickerController.allowsEditing = canEdit; 47 | 48 | self.imageBlock = [block copy]; 49 | //相册 50 | imagePickerController.sourceType =UIImagePickerControllerSourceTypePhotoLibrary; 51 | [self presentViewController:imagePickerController animated:YES completion:NULL]; 52 | 53 | 54 | } 55 | 56 | - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 57 | { 58 | [picker dismissViewControllerAnimated:YES completion:^{}]; 59 | 60 | UIImage *image; 61 | //是否要裁剪 62 | if ([picker allowsEditing]){ 63 | 64 | //编辑之后的图像 65 | image = [info objectForKey:UIImagePickerControllerEditedImage]; 66 | 67 | } else { 68 | 69 | image = [info objectForKey:UIImagePickerControllerOriginalImage]; 70 | } 71 | 72 | if(self.imageBlock) 73 | { 74 | self.imageBlock(image); 75 | } 76 | } 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | 24 | - (void)applicationWillResignActive:(UIApplication *)application { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | 30 | - (void)applicationDidEnterBackground:(UIApplication *)application { 31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 33 | } 34 | 35 | 36 | - (void)applicationWillEnterForeground:(UIApplication *)application { 37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | 41 | - (void)applicationDidBecomeActive:(UIApplication *)application { 42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 48 | } 49 | 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // WYPDFConverterSwift 4 | // 5 | // Created by 杨新威 on 2017/6/20. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/ViewController/WYWebViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WYWebViewController.swift 3 | // WYPDFConverterSwift 4 | // 5 | // Created by 杨新威 on 2017/6/20. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class WYWebViewController: UIViewController ,UIDocumentInteractionControllerDelegate,UIWebViewDelegate{ 12 | 13 | var webView : UIWebView! 14 | var filePath : String! 15 | var fileName : String! 16 | var docVc : UIDocumentInteractionController! 17 | 18 | override func viewDidLoad() { 19 | super.viewDidLoad() 20 | 21 | self.navigationItem.title = fileName 22 | 23 | let url = URL.init(fileURLWithPath: filePath) 24 | let request = URLRequest.init(url: url) 25 | 26 | webView = UIWebView.init(frame: self.view.frame) 27 | webView.scalesPageToFit = true 28 | webView.delegate = self 29 | webView.loadRequest(request as URLRequest) 30 | self.view.addSubview(webView) 31 | 32 | docVc = UIDocumentInteractionController.init() 33 | docVc.delegate = self 34 | 35 | self.navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "PDF转换", style: .plain, target: self, action: #selector(webView2PDF)) 36 | } 37 | 38 | func webView2PDF() { 39 | 40 | let result = WYPDFConverter.converterPDFWithWebView(webView,fileName: fileName + ".pdf") 41 | 42 | if result { 43 | print("convert success") 44 | 45 | docVc.url = NSURL.fileURL(withPath: fileName + ".pdf") 46 | docVc.presentPreview(animated: true) 47 | } 48 | 49 | } 50 | 51 | func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController { 52 | return self 53 | } 54 | 55 | func documentInteractionControllerRectForPreview(_ controller: UIDocumentInteractionController) -> CGRect { 56 | return self.view.frame 57 | } 58 | 59 | func documentInteractionControllerViewForPreview(_ controller: UIDocumentInteractionController) -> UIView? { 60 | return self.view 61 | } 62 | 63 | func webView(_ webView: UIWebView, didFailLoadWithError error: Error) { 64 | webView.stringByEvaluatingJavaScript(from: "document.body.innerText='fail load'") 65 | } 66 | 67 | 68 | } 69 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverter/WYPDFConverter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverter.swift 3 | // WYPDFConverterSwift 4 | // 5 | // Created by Apple on 2017/6/21. 6 | // Copyright © 2017年 杨新威. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class WYPDFConverter: NSObject { 12 | 13 | class func convertPDFWithImages(images : Array,fileName : String) -> Bool { 14 | 15 | if images.count == 0 { 16 | return false; 17 | } 18 | 19 | 20 | return true 21 | } 22 | 23 | class func converterPDFWithWebView(_ webView : UIWebView, fileName : String) -> Bool { 24 | let pdfPath = self.saveDirectory(fileName : fileName) 25 | print("/******************文件类型****************/\n\(pdfPath)\n/************************************/"); 26 | 27 | let pdfData = self.convert2PDFData(webView: webView) 28 | 29 | let result = pdfData.write(toFile: self.saveDirectory(fileName: fileName), atomically: true) 30 | 31 | return result 32 | } 33 | 34 | fileprivate class func convert2PDFData(webView : UIWebView) ->NSData { 35 | 36 | 37 | let format = webView.viewPrintFormatter() 38 | let render = UIPrintPageRenderer.init() 39 | 40 | render.addPrintFormatter(format, startingAtPageAt: 0) 41 | 42 | let pageRect = CGRect.init(x: 0, y: 0, width: 600, height: 768) 43 | let printableRect = pageRect.insetBy(dx: 50, dy: 50) 44 | 45 | 46 | 47 | render.setValue(NSValue.init(cgRect: pageRect), forKey: "paperRect") 48 | render.setValue(NSValue.init(cgRect: printableRect), forKey: "printableRect") 49 | 50 | let pdfData = NSMutableData.init() 51 | 52 | UIGraphicsBeginPDFContextToData(pdfData, CGRect.zero, nil) 53 | 54 | for i in 0.. String { 65 | let path = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last! 66 | return "\(path)/WYPDF" 67 | } 68 | 69 | fileprivate class func creatPDFFolder() -> Void{ 70 | let fileManager = FileManager.default 71 | if !fileManager.fileExists(atPath: self.pdfSaveFolder()) { 72 | _ = try! fileManager.createDirectory(atPath: self.pdfSaveFolder(), withIntermediateDirectories: true, attributes: nil) 73 | 74 | } 75 | } 76 | 77 | class func saveDirectory(fileName:String) -> String { 78 | 79 | let manager = FileManager.default 80 | let urlForDocument = manager.urls(for: .cachesDirectory, in: .userDomainMask); 81 | let url = urlForDocument[0] 82 | return url.path + "/" + fileName 83 | } 84 | } 85 | 86 | 87 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverter/WYPDFConverter.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYPDFConverter.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "WYPDFConverter.h" 10 | 11 | @implementation WYPDFConverter 12 | + (BOOL)convertPDFWithImages:(NSArray*)images fileName:(NSString *)fileName{ 13 | 14 | if (!images || images.count == 0) return NO; 15 | 16 | // pdf文件存储路径 17 | NSString *pdfPath = [self saveDirectory:fileName]; 18 | NSLog(@"****************文件路径:%@*******************",pdfPath); 19 | 20 | BOOL result = UIGraphicsBeginPDFContextToFile(pdfPath, CGRectZero, NULL); 21 | 22 | // pdf每一页的尺寸大小 23 | 24 | CGRect pdfBounds = UIGraphicsGetPDFContextBounds(); 25 | CGFloat pdfWidth = pdfBounds.size.width; 26 | CGFloat pdfHeight = pdfBounds.size.height; 27 | 28 | NSLog(@"%@",NSStringFromCGRect(pdfBounds)); 29 | 30 | [images enumerateObjectsUsingBlock:^(UIImage * _Nonnull image, NSUInteger idx, BOOL * _Nonnull stop) { 31 | // 绘制PDF 32 | UIGraphicsBeginPDFPage(); 33 | 34 | // 获取每张图片的实际长宽 35 | CGFloat imageW = image.size.width; 36 | CGFloat imageH = image.size.height; 37 | // CGRect imageBounds = CGRectMake(0, 0, imageW, imageH); 38 | // NSLog(@"%@",NSStringFromCGRect(imageBounds)); 39 | 40 | // 每张图片居中显示 41 | // 如果图片宽高都小于PDF宽高 42 | if (imageW <= pdfWidth && imageH <= pdfHeight) { 43 | 44 | CGFloat originX = (pdfWidth - imageW) * 0.5; 45 | CGFloat originY = (pdfHeight - imageH) * 0.5; 46 | [image drawInRect:CGRectMake(originX, originY, imageW, imageH)]; 47 | 48 | } 49 | else{ 50 | CGFloat w,h; // 先声明缩放之后的宽高 51 | // 图片宽高比大于PDF 52 | if ((imageW / imageH) > (pdfWidth / pdfHeight)){ 53 | w = pdfWidth - 20; 54 | h = w * imageH / imageW; 55 | 56 | }else{ 57 | // 图片高宽比大于PDF 58 | h = pdfHeight - 20; 59 | w = h * imageW / imageH; 60 | } 61 | [image drawInRect:CGRectMake((pdfWidth - w) * 0.5, (pdfHeight - h) * 0.5, w, h)]; 62 | } 63 | }]; 64 | 65 | UIGraphicsEndPDFContext(); 66 | 67 | return result; 68 | } 69 | 70 | + (BOOL)convertPDFWithWebView:(UIWebView *)webView fileName:(NSString *)fileName{ 71 | 72 | NSString *pdfPath = [self saveDirectory:fileName]; 73 | NSLog(@"****************文件路径:%@*******************",pdfPath); 74 | 75 | NSData *pdfData = [webView convert2PDFData]; 76 | BOOL result = [pdfData writeToFile:pdfPath atomically:YES]; 77 | 78 | return result; 79 | } 80 | 81 | 82 | /** 83 | 文件保存路径 84 | */ 85 | // 创建目录文件夹 86 | + (void)creatPDFFolder{ 87 | NSFileManager *fileManager = [NSFileManager defaultManager]; 88 | if (![fileManager fileExistsAtPath:[self pdfSaveFolder]]) { 89 | [fileManager createDirectoryAtPath:[self pdfSaveFolder] withIntermediateDirectories:YES attributes:nil error:NULL]; 90 | } 91 | } 92 | // 文件存放主目录 93 | + (NSString *)pdfSaveFolder{ 94 | return [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"WYPDF"]; 95 | } 96 | 97 | + (NSString *)saveDirectory:(NSString *)fileName{ 98 | [self creatPDFFolder]; 99 | return [[self pdfSaveFolder] stringByAppendingPathComponent:fileName]; 100 | } 101 | 102 | @end 103 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYImageViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYImageViewController.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "WYImageViewController.h" 10 | #import "WYImageCollectionViewCell.h" 11 | #import "WYPDFConverter.h" 12 | #import "UIViewController+ImagePicker.h" 13 | @interface WYImageViewController () 14 | 15 | @property (weak, nonatomic) IBOutlet UICollectionView *collectionView; 16 | @property (strong, nonatomic) NSMutableArray *selectImages; 17 | @property (strong, nonatomic) UIDocumentInteractionController *docVC; 18 | 19 | @end 20 | 21 | @implementation WYImageViewController 22 | #pragma mark -- lazy loading UI 23 | - (NSMutableArray *)selectImages{ 24 | if (!_selectImages) { 25 | _selectImages = [NSMutableArray array]; 26 | }return _selectImages; 27 | } 28 | 29 | - (UIDocumentInteractionController *)docVC{ 30 | if (!_docVC) { 31 | _docVC = [[UIDocumentInteractionController alloc] init]; 32 | _docVC.delegate = self; 33 | }return _docVC; 34 | } 35 | 36 | #pragma mark -- 37 | 38 | - (void)viewDidLoad { 39 | [super viewDidLoad]; 40 | self.automaticallyAdjustsScrollViewInsets = NO; 41 | 42 | _collectionView.backgroundColor = [UIColor whiteColor]; 43 | 44 | // 默认添加九张不同大小的图片 45 | for (NSInteger i = 0; i < 9; i++) { 46 | UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"image%zd.jpg",i]]; 47 | [self.selectImages addObject:image]; 48 | } 49 | } 50 | 51 | #pragma mark UICollectionViewDelegate,UICollectionViewDataSource 52 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ 53 | return self.selectImages.count + 1; 54 | } 55 | 56 | - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 57 | 58 | WYImageCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"imageCell" forIndexPath:indexPath]; 59 | cell.imageView.image = (indexPath.row == self.selectImages.count) ? [UIImage imageNamed:@"contract_add"] : self.selectImages[indexPath.row]; 60 | return cell; 61 | } 62 | 63 | - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ 64 | if (indexPath.row == self.selectImages.count) { 65 | // 从相册选择图片 66 | [self showCanEdit:NO image:^(UIImage *image) { 67 | [self.selectImages addObject:image]; 68 | [collectionView reloadData]; 69 | }]; 70 | 71 | }else{ 72 | // 点击删除图片 73 | [self.selectImages removeObjectAtIndex:indexPath.row]; 74 | [collectionView reloadData]; 75 | } 76 | } 77 | 78 | 79 | 80 | - (IBAction)image2PDF:(UIButton *)sender { 81 | 82 | if (self.selectImages.count == 0) return; 83 | 84 | // 将当前时间戳作为文件名 85 | NSString *fileName = [NSString stringWithFormat:@"IMG_%.0f.pdf",[[NSDate date] timeIntervalSince1970]]; 86 | BOOL result = [WYPDFConverter convertPDFWithImages:self.selectImages fileName:fileName]; 87 | 88 | if (result) { 89 | NSLog(@"convert success"); 90 | 91 | self.docVC.URL = [NSURL fileURLWithPath:[WYPDFConverter saveDirectory:fileName]]; 92 | [self.docVC presentPreviewAnimated:YES]; 93 | } 94 | 95 | } 96 | 97 | #pragma mark - UIDocumentInteractionControllerDelegate Methods 98 | - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{ 99 | return self; 100 | } 101 | 102 | @end 103 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "WYImageViewController.h" 11 | #import 12 | #import "WYPDFConverter.h" 13 | @interface ViewController () 14 | 15 | @property (nonatomic, strong) QLPreviewController *qlVc; 16 | 17 | @property (weak, nonatomic) IBOutlet UITableView *tableView; 18 | 19 | @property (strong, nonatomic) NSArray *kinds; 20 | 21 | @property (strong, nonatomic) NSMutableArray *filesArr; 22 | 23 | @end 24 | 25 | static NSString *const cellID = @"cellID"; 26 | 27 | @implementation ViewController 28 | 29 | - (NSMutableArray *)filesArr{ 30 | if (!_filesArr) { 31 | _filesArr = [NSMutableArray array]; 32 | }return _filesArr; 33 | } 34 | 35 | - (QLPreviewController *)qlVc{ 36 | if (!_qlVc) { 37 | _qlVc = [[QLPreviewController alloc] init]; 38 | _qlVc.dataSource = self; 39 | }return _qlVc; 40 | } 41 | 42 | - (void)viewDidLoad { 43 | 44 | [super viewDidLoad]; 45 | 46 | [self getData]; 47 | 48 | [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID]; 49 | } 50 | 51 | - (void)getData{ 52 | 53 | [self.filesArr removeAllObjects]; 54 | 55 | _kinds = @[@"图片转PDF",@"各种格式文档转PDF(webView2PDF、image)",@"格式转换后的文件"]; 56 | 57 | NSFileManager *fm = [NSFileManager defaultManager]; 58 | 59 | NSString *file ; // 文件名 60 | 61 | NSDirectoryEnumerator *enumer = [fm enumeratorAtPath:[WYPDFConverter pdfSaveFolder]]; 62 | 63 | while (file = [enumer nextObject]) { 64 | // 添加PDF和图片文件 65 | if ([file.pathExtension isEqualToString:@"pdf"] || [file.pathExtension isEqualToString:@"png"]) { 66 | [self.filesArr addObject:file]; 67 | } 68 | } 69 | 70 | } 71 | 72 | #pragma mark -- UITableViewDelegate 73 | 74 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 75 | return _kinds.count; 76 | } 77 | 78 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 79 | return 1; 80 | } 81 | 82 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 83 | { 84 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath]; 85 | cell.textLabel.text = [NSString stringWithFormat:@"%@",_kinds[indexPath.section]]; 86 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 87 | return cell; 88 | } 89 | 90 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 91 | [tableView deselectRowAtIndexPath:indexPath animated:YES]; 92 | 93 | // 三种不同页面跳转的方法 94 | if (indexPath.section == 0){ 95 | 96 | UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 97 | WYImageViewController *imageVc = [sb instantiateViewControllerWithIdentifier:@"imageVC"]; 98 | [self.navigationController pushViewController:imageVc animated:YES]; 99 | 100 | }else if(indexPath.section == 1){ 101 | 102 | [self performSegueWithIdentifier:@"FileVCSegue" sender:self]; 103 | 104 | }else if (indexPath.section == 2){ 105 | // 更新数据 106 | [self getData]; 107 | [self.qlVc reloadData]; 108 | [self.navigationController pushViewController:self.qlVc animated:YES]; 109 | } 110 | } 111 | 112 | #pragma mark QLPreviewControllerDataSource 113 | //返回文件的个数 114 | - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{ 115 | return self.filesArr.count; 116 | } 117 | 118 | //加载需要显示的文件 119 | - (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{ 120 | 121 | NSString *filePath = [WYPDFConverter saveDirectory:self.filesArr[index]]; 122 | 123 | return [NSURL fileURLWithPath:filePath]; 124 | } 125 | 126 | @end 127 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /WYPDFConverterOC/Resource/Document/Xcode快捷键.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg936\cocoartf1404\cocoasubrtf130 2 | {\fonttbl\f0\fnil\fcharset134 PingFangSC-Regular;\f1\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 5 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 6 | 7 | \f0\fs24 \cf0 \'ce\'c4\'bc\'fe\'b2\'d9\'d7\'f7\'c0\'e0 8 | \f1 :\ 9 | 10 | \f0 \'d0\'c2\'bd\'a8\'ce\'c4\'bc\'fe 11 | \f1 command+n\ 12 | 13 | \f0 \'d7\'f3\'cb\'f5\'bd\'f8 14 | \f1 command+[\ 15 | 16 | \f0 \'d3\'d2\'cb\'f5\'bd\'f8 17 | \f1 command+]\ 18 | 19 | \f0 \'cf\'ee\'c4\'bf\'d6\'d0\'b2\'e9\'d5\'d2 20 | \f1 command+shift+F\ 21 | 22 | \f0 \'b2\'e9\'d5\'d2\'cf\'c2\'d2\'bb\'b8\'f6 23 | \f1 command+g\ 24 | 25 | \f0 \'b2\'e9\'d5\'d2\'c9\'cf\'d2\'bb\'b8\'f6 26 | \f1 command+shift+g\ 27 | 28 | \f0 \'c7\'d0\'bb\'bb\'cd\'b7 29 | \f1 / 30 | \f0 \'d4\'b4\'ce\'c4\'bc\'fe 31 | \f1 command+ctrl+ 32 | \f0 \'c9\'cf\'bc\'fd\'cd\'b7 33 | \f1 \ 34 | 35 | \f0 \'b4\'f2\'bf\'aa\'cd\'b7\'ce\'c4\'bc\'fe 36 | \f1 command+shift+d\ 37 | 38 | \f0 \'d5\'db\'b5\'fe\'bf\'e9 39 | \f1 command+option+ 40 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 41 | \f1 \ 42 | 43 | \f0 \'d5\'b9\'bf\'aa\'bf\'e9 44 | \f1 command+option+ 45 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 46 | \f1 \ 47 | 48 | \f0 \'d5\'db\'b5\'fe\'c0\'e0\'d6\'d0\'cb\'f9\'d3\'d0\'b7\'bd\'b7\'a8 49 | \f1 command+option+shift+ 50 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 51 | \f1 \ 52 | 53 | \f0 \'d5\'b9\'bf\'aa\'c0\'e0\'d6\'d0\'cb\'f9\'d3\'d0\'b7\'bd\'b7\'a8 54 | \f1 command+option+shift+ 55 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 56 | \f1 \ 57 | 58 | \f0 \'b1\'e0\'bc\'ad\'b2\'d9\'d7\'f7\'c0\'e0 59 | \f1 :\ 60 | 61 | \f0 \'ce\'c4\'bc\'fe\'ca\'d7\'d0\'d0 62 | \f1 command+ 63 | \f0 \'c9\'cf\'bc\'fd\'cd\'b7 64 | \f1 \ 65 | 66 | \f0 \'ce\'c4\'bc\'fe\'c4\'a9 67 | \f1 command+ 68 | \f0 \'cf\'c2\'bc\'fd\'cd\'b7 69 | \f1 \ 70 | 71 | \f0 \'d0\'d0\'ca\'d7 72 | \f1 command+ 73 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 74 | \f1 \ 75 | 76 | \f0 \'d0\'d0\'c4\'a9 77 | \f1 command+ 78 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 79 | \f1 \ 80 | 81 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'c7\'b0\'c3\'e6 82 | \f1 command+shift+ 83 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 84 | \f1 \ 85 | 86 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'ba\'f3\'c3\'e6 87 | \f1 command+shift+ 88 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 89 | \f1 \ 90 | 91 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'d7\'f3\'d3\'d2\'cf\'e0\'c1\'da\'d7\'d6\'b7\'fb 92 | \f1 shift+ 93 | \f0 \'d7\'f3\'d3\'d2\'bc\'fd\'cd\'b7 94 | \f1 \ 95 | 96 | \f0 \'c9\'cf\'d2\'bb\'b5\'a5\'b4\'ca 97 | \f1 option+ 98 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 99 | \f1 \ 100 | 101 | \f0 \'cf\'c2\'d2\'bb\'b5\'a5\'b4\'ca 102 | \f1 option+ 103 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 104 | \f1 \ 105 | 106 | \f0 \'cf\'d4\'ca\'be 107 | \f1 / 108 | \f0 \'d2\'fe\'b2\'d8\'b5\'bc\'ba\'bd\'c6\'f7\'c3\'e6\'b0\'e5 109 | \f1 :Command+0 110 | \f0 \'cf\'d4\'ca\'be 111 | \f1 / 112 | \f0 \'d2\'fe\'b2\'d8\'ca\'b5\'d3\'c3\'b9\'a4\'be\'df\'c3\'e6\'b0\'e5 113 | \f1 :Command+Option+0\ 114 | 115 | \f0 \'ce\'c4\'bc\'fe\'cc\'f8\'d7\'aa\'c0\'b8 116 | \f1 :Control+6 117 | \f0 \'a3\'a8\'bc\'fc\'c8\'eb\'b7\'bd\'b7\'a8 118 | \f1 / 119 | \f0 \'b1\'e4\'c1\'bf\'c3\'fb 120 | \f1 +Enter 121 | \f0 \'cc\'f8\'d7\'aa\'a3\'a9 122 | \f1 \ 123 | 124 | \f0 \'bf\'ec\'cb\'d9\'b4\'f2\'bf\'aa 125 | \f1 : Command + Shift + O( 126 | \f0 \'d7\'d4\'b6\'a8\'d2\'e5\'b5\'c4 127 | \f1 option + o)\ 128 | 129 | \f0 \'c7\'e5\'b3\'fd\'b9\'a4\'b3\'cc 130 | \f1 : Command + Shift + K\ 131 | 132 | \f0 \'cc\'f8\'d7\'aa\'b5\'bd\'c0\'e0\'ce\'c4\'bc\'fe\'b4\'a6 133 | \f1 Command + Shift + J Show Related Items\'91 134 | \f0 \'b5\'af\'b3\'f6\'b2\'cb\'b5\'a5 135 | \f1 CTRL + 1 136 | \f0 \'a3\'ac 137 | \f1 ( 138 | \f0 \'b8\'d0\'be\'f5\'d2\'d4\'ba\'f3\'b4\'f3\'b0\'ae\'b4\'cb\'b7\'bd\'b7\'a8 139 | \f1 )\ 140 | \ 141 | 142 | \f0 \'d4\'cb\'d0\'d0 143 | \f1 \ 144 | cmd+ r 145 | \f0 \'d4\'cb\'d0\'d0 146 | \f1 Cmd + . 147 | \f0 \'cd\'a3\'d6\'b9 148 | \f1 \ 149 | f6 150 | \f0 \'b5\'a5\'b2\'bd 151 | \f1 f7 152 | \f0 \'b6\'bc\'d7\'df 153 | \f1 \ 154 | f8 155 | \f0 \'d7\'df\'b6\'cf\'b5\'e3 156 | \f1 \ 157 | cmd + ctrl + y 158 | \f0 \'bc\'cc\'d0\'f8\'d7\'df 159 | \f1 \ 160 | cmd + y 161 | \f0 \'c6\'f4\'d3\'c3\'d4\'dd\'cd\'a3\'b6\'cf\'b5\'e3 162 | \f1 163 | \f0 \'cc\'ed\'bc\'d3\'b6\'cf\'b5\'e3 164 | \f1 cmd + \\} -------------------------------------------------------------------------------- /WYPDFConverterSwift/Resource/Document/Xcode快捷键.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg936\cocoartf1404\cocoasubrtf130 2 | {\fonttbl\f0\fnil\fcharset134 PingFangSC-Regular;\f1\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 5 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 6 | 7 | \f0\fs24 \cf0 \'ce\'c4\'bc\'fe\'b2\'d9\'d7\'f7\'c0\'e0 8 | \f1 :\ 9 | 10 | \f0 \'d0\'c2\'bd\'a8\'ce\'c4\'bc\'fe 11 | \f1 command+n\ 12 | 13 | \f0 \'d7\'f3\'cb\'f5\'bd\'f8 14 | \f1 command+[\ 15 | 16 | \f0 \'d3\'d2\'cb\'f5\'bd\'f8 17 | \f1 command+]\ 18 | 19 | \f0 \'cf\'ee\'c4\'bf\'d6\'d0\'b2\'e9\'d5\'d2 20 | \f1 command+shift+F\ 21 | 22 | \f0 \'b2\'e9\'d5\'d2\'cf\'c2\'d2\'bb\'b8\'f6 23 | \f1 command+g\ 24 | 25 | \f0 \'b2\'e9\'d5\'d2\'c9\'cf\'d2\'bb\'b8\'f6 26 | \f1 command+shift+g\ 27 | 28 | \f0 \'c7\'d0\'bb\'bb\'cd\'b7 29 | \f1 / 30 | \f0 \'d4\'b4\'ce\'c4\'bc\'fe 31 | \f1 command+ctrl+ 32 | \f0 \'c9\'cf\'bc\'fd\'cd\'b7 33 | \f1 \ 34 | 35 | \f0 \'b4\'f2\'bf\'aa\'cd\'b7\'ce\'c4\'bc\'fe 36 | \f1 command+shift+d\ 37 | 38 | \f0 \'d5\'db\'b5\'fe\'bf\'e9 39 | \f1 command+option+ 40 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 41 | \f1 \ 42 | 43 | \f0 \'d5\'b9\'bf\'aa\'bf\'e9 44 | \f1 command+option+ 45 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 46 | \f1 \ 47 | 48 | \f0 \'d5\'db\'b5\'fe\'c0\'e0\'d6\'d0\'cb\'f9\'d3\'d0\'b7\'bd\'b7\'a8 49 | \f1 command+option+shift+ 50 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 51 | \f1 \ 52 | 53 | \f0 \'d5\'b9\'bf\'aa\'c0\'e0\'d6\'d0\'cb\'f9\'d3\'d0\'b7\'bd\'b7\'a8 54 | \f1 command+option+shift+ 55 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 56 | \f1 \ 57 | 58 | \f0 \'b1\'e0\'bc\'ad\'b2\'d9\'d7\'f7\'c0\'e0 59 | \f1 :\ 60 | 61 | \f0 \'ce\'c4\'bc\'fe\'ca\'d7\'d0\'d0 62 | \f1 command+ 63 | \f0 \'c9\'cf\'bc\'fd\'cd\'b7 64 | \f1 \ 65 | 66 | \f0 \'ce\'c4\'bc\'fe\'c4\'a9 67 | \f1 command+ 68 | \f0 \'cf\'c2\'bc\'fd\'cd\'b7 69 | \f1 \ 70 | 71 | \f0 \'d0\'d0\'ca\'d7 72 | \f1 command+ 73 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 74 | \f1 \ 75 | 76 | \f0 \'d0\'d0\'c4\'a9 77 | \f1 command+ 78 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 79 | \f1 \ 80 | 81 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'c7\'b0\'c3\'e6 82 | \f1 command+shift+ 83 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 84 | \f1 \ 85 | 86 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'ba\'f3\'c3\'e6 87 | \f1 command+shift+ 88 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 89 | \f1 \ 90 | 91 | \f0 \'d1\'a1\'d6\'d0\'b9\'e2\'b1\'ea\'d7\'f3\'d3\'d2\'cf\'e0\'c1\'da\'d7\'d6\'b7\'fb 92 | \f1 shift+ 93 | \f0 \'d7\'f3\'d3\'d2\'bc\'fd\'cd\'b7 94 | \f1 \ 95 | 96 | \f0 \'c9\'cf\'d2\'bb\'b5\'a5\'b4\'ca 97 | \f1 option+ 98 | \f0 \'d7\'f3\'bc\'fd\'cd\'b7 99 | \f1 \ 100 | 101 | \f0 \'cf\'c2\'d2\'bb\'b5\'a5\'b4\'ca 102 | \f1 option+ 103 | \f0 \'d3\'d2\'bc\'fd\'cd\'b7 104 | \f1 \ 105 | 106 | \f0 \'cf\'d4\'ca\'be 107 | \f1 / 108 | \f0 \'d2\'fe\'b2\'d8\'b5\'bc\'ba\'bd\'c6\'f7\'c3\'e6\'b0\'e5 109 | \f1 :Command+0 110 | \f0 \'cf\'d4\'ca\'be 111 | \f1 / 112 | \f0 \'d2\'fe\'b2\'d8\'ca\'b5\'d3\'c3\'b9\'a4\'be\'df\'c3\'e6\'b0\'e5 113 | \f1 :Command+Option+0\ 114 | 115 | \f0 \'ce\'c4\'bc\'fe\'cc\'f8\'d7\'aa\'c0\'b8 116 | \f1 :Control+6 117 | \f0 \'a3\'a8\'bc\'fc\'c8\'eb\'b7\'bd\'b7\'a8 118 | \f1 / 119 | \f0 \'b1\'e4\'c1\'bf\'c3\'fb 120 | \f1 +Enter 121 | \f0 \'cc\'f8\'d7\'aa\'a3\'a9 122 | \f1 \ 123 | 124 | \f0 \'bf\'ec\'cb\'d9\'b4\'f2\'bf\'aa 125 | \f1 : Command + Shift + O( 126 | \f0 \'d7\'d4\'b6\'a8\'d2\'e5\'b5\'c4 127 | \f1 option + o)\ 128 | 129 | \f0 \'c7\'e5\'b3\'fd\'b9\'a4\'b3\'cc 130 | \f1 : Command + Shift + K\ 131 | 132 | \f0 \'cc\'f8\'d7\'aa\'b5\'bd\'c0\'e0\'ce\'c4\'bc\'fe\'b4\'a6 133 | \f1 Command + Shift + J Show Related Items\'91 134 | \f0 \'b5\'af\'b3\'f6\'b2\'cb\'b5\'a5 135 | \f1 CTRL + 1 136 | \f0 \'a3\'ac 137 | \f1 ( 138 | \f0 \'b8\'d0\'be\'f5\'d2\'d4\'ba\'f3\'b4\'f3\'b0\'ae\'b4\'cb\'b7\'bd\'b7\'a8 139 | \f1 )\ 140 | \ 141 | 142 | \f0 \'d4\'cb\'d0\'d0 143 | \f1 \ 144 | cmd+ r 145 | \f0 \'d4\'cb\'d0\'d0 146 | \f1 Cmd + . 147 | \f0 \'cd\'a3\'d6\'b9 148 | \f1 \ 149 | f6 150 | \f0 \'b5\'a5\'b2\'bd 151 | \f1 f7 152 | \f0 \'b6\'bc\'d7\'df 153 | \f1 \ 154 | f8 155 | \f0 \'d7\'df\'b6\'cf\'b5\'e3 156 | \f1 \ 157 | cmd + ctrl + y 158 | \f0 \'bc\'cc\'d0\'f8\'d7\'df 159 | \f1 \ 160 | cmd + y 161 | \f0 \'c6\'f4\'d3\'c3\'d4\'dd\'cd\'a3\'b6\'cf\'b5\'e3 162 | \f1 163 | \f0 \'cc\'ed\'bc\'d3\'b6\'cf\'b5\'e3 164 | \f1 cmd + \\} -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverter/UIWebView+WYFile.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIWebView+WYFile.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "UIWebView+WYFile.h" 10 | 11 | @implementation UIWebView (WYFile) 12 | 13 | - (NSData *)convert2PDFData{ 14 | 15 | // 返回视图的打印格式化 16 | UIViewPrintFormatter *format = [self viewPrintFormatter]; 17 | UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init]; 18 | [render addPrintFormatter:format startingAtPageAtIndex:0]; 19 | 20 | // 设置PDF文件每页的尺寸 21 | CGRect pageRect = CGRectMake(0, 0, 600, 768); 22 | // 呈现每个页面的上下文的尺寸大小 23 | CGRect printableRect = CGRectInset(pageRect, 50, 50); 24 | 25 | [render setValue:[NSValue valueWithCGRect:pageRect] forKey:@"paperRect"]; 26 | [render setValue:[NSValue valueWithCGRect:printableRect] forKey:@"printableRect"]; 27 | 28 | NSMutableData *pdfData = [NSMutableData data]; 29 | // 文档信息 可设置为nil 30 | // CFMutableDictionaryRef myDictionary = CFDictionaryCreateMutable(nil, 0, 31 | // &kCFTypeDictionaryKeyCallBacks, 32 | // &kCFTypeDictionaryValueCallBacks); 33 | 34 | // CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File")); 35 | // CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name")); 36 | 37 | UIGraphicsBeginPDFContextToData(pdfData, pageRect, NULL); 38 | 39 | for (NSInteger i = 0; i < [render numberOfPages]; i++) { 40 | 41 | UIGraphicsBeginPDFPage(); 42 | CGRect bounds = UIGraphicsGetPDFContextBounds(); 43 | [render drawPageAtIndex:i inRect:bounds]; 44 | } 45 | 46 | UIGraphicsEndPDFContext(); 47 | 48 | return pdfData; 49 | 50 | } 51 | 52 | - (UIImage *)convert2Image{ 53 | 54 | /* 55 | 将 UIWebView 分屏截取,然后将截取的图片拼接成一张图片 56 | 将 UIWebView 从头,contentOffset = (0, 0),开始截取webView.bounds.size.height高度的图片, 57 | 58 | 59 | */ 60 | CGSize boundsSize = self.bounds.size; 61 | CGFloat boundsWidth = self.bounds.size.width; 62 | CGFloat boundsHeight = self.bounds.size.height; 63 | CGPoint offset = self.scrollView.contentOffset; 64 | 65 | [self.scrollView setContentOffset:CGPointMake(0, 0)]; 66 | 67 | CGFloat contentHeight = self.scrollView.contentSize.height; 68 | NSMutableArray *images = [NSMutableArray array]; 69 | 70 | while (contentHeight > 0) { 71 | UIGraphicsBeginImageContext(boundsSize); 72 | 73 | [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 74 | 75 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 76 | 77 | UIGraphicsEndImageContext(); 78 | 79 | [images addObject:image]; 80 | 81 | CGFloat offsetY = self.scrollView.contentOffset.y; 82 | 83 | [self.scrollView setContentOffset:CGPointMake(0, offsetY + boundsHeight)]; 84 | 85 | contentHeight -= boundsHeight; 86 | } 87 | 88 | [self.scrollView setContentOffset:offset]; 89 | 90 | UIGraphicsBeginImageContext(self.scrollView.contentSize); 91 | 92 | [images enumerateObjectsUsingBlock:^(UIImage *image, NSUInteger idx, BOOL *stop) { 93 | [image drawInRect:CGRectMake(0, boundsHeight * idx, boundsWidth, boundsHeight)]; 94 | }]; 95 | 96 | UIImage *fullImage = UIGraphicsGetImageFromCurrentImageContext(); 97 | 98 | UIGraphicsEndImageContext(); 99 | 100 | return fullImage; 101 | 102 | 103 | // CGFloat scale = [UIScreen mainScreen].scale; 104 | // UIImage* image = nil; 105 | // 106 | // UIGraphicsBeginImageContextWithOptions(self.scrollView.contentSize, NO, scale); 107 | // //保存现在的位置和尺寸 108 | // CGPoint savedContentOffset = self.scrollView.contentOffset; 109 | // CGRect savedFrame = self.frame; 110 | // //设置尺寸和内容一样大 111 | // self.scrollView.contentOffset = CGPointZero; 112 | // self.frame = CGRectMake(0, 0, self.scrollView.contentSize.width, self.scrollView.contentSize.height); 113 | // 114 | // [self.layer renderInContext: UIGraphicsGetCurrentContext()]; 115 | // image = UIGraphicsGetImageFromCurrentImageContext(); 116 | // 117 | // //恢复原来的位置和尺寸 118 | // self.scrollView.contentOffset = savedContentOffset; 119 | // self.frame = savedFrame; 120 | // 121 | // UIGraphicsEndImageContext(); 122 | // 123 | // return image; 124 | 125 | } 126 | 127 | 128 | @end 129 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/WYPDFConverterOC.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/xcuserdata/young.xcuserdatad/xcschemes/WYPDFConverterOC.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/WYPDFConverterSwift.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/xcuserdata/young.xcuserdatad/xcschemes/WYPDFConverterSwift.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Controller/WYWebViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // WYWebViewController.m 3 | // WYPDFConverterOC 4 | // 5 | // Created by Apple on 2017/6/20. 6 | // Copyright © 2017年 White-Young. All rights reserved. 7 | // 8 | 9 | #import "WYWebViewController.h" 10 | #import "WYPDFConverter.h" 11 | 12 | #define WY_SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width 13 | #define WY_SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height 14 | 15 | 16 | @interface WYWebViewController () 17 | 18 | @property (strong, nonatomic) UIWebView *webView; 19 | @property (strong, nonatomic) UIDocumentInteractionController *docVC; 20 | @property (strong, nonatomic) UIActivityIndicatorView *indictorView; 21 | @property (strong, nonatomic) UIButton *imageConverterBtn; 22 | 23 | @end 24 | 25 | @implementation WYWebViewController 26 | 27 | #pragma mark -- lazy loading UI 28 | - (UIWebView *)webView{ 29 | if (!_webView) { 30 | _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, WY_SCREEN_WIDTH, WY_SCREEN_HEIGHT - 50)]; 31 | _webView.delegate = self; 32 | _webView.scalesPageToFit = YES; 33 | [self.view addSubview:_webView]; 34 | }return _webView; 35 | } 36 | 37 | - (UIActivityIndicatorView *)indictorView{ 38 | if (!_indictorView) { 39 | _indictorView = [[UIActivityIndicatorView alloc] init]; 40 | _indictorView.center = self.view.center; 41 | _indictorView.bounds = CGRectMake(0, 0, 50, 50); 42 | _indictorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 43 | [self.view addSubview:_indictorView]; 44 | }return _indictorView; 45 | } 46 | 47 | - (UIButton *)imageConverterBtn{ 48 | if (!_imageConverterBtn) { 49 | _imageConverterBtn = ({ 50 | UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 51 | button.frame = CGRectMake(20, CGRectGetMaxY(self.webView.frame) + 10, WY_SCREEN_WIDTH - 40 , 30); 52 | [button setTitle:@"Image转换" forState:UIControlStateNormal]; 53 | button.backgroundColor = [UIColor orangeColor]; 54 | [self.view addSubview:button]; 55 | button; 56 | }); 57 | }return _imageConverterBtn; 58 | } 59 | 60 | - (UIDocumentInteractionController *)docVC{ 61 | if (!_docVC) { 62 | _docVC = [[UIDocumentInteractionController alloc] init]; 63 | _docVC.delegate = self; 64 | }return _docVC; 65 | } 66 | 67 | - (void)viewDidLoad { 68 | [super viewDidLoad]; 69 | 70 | self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 71 | 72 | 73 | self.navigationItem.title = _fileName; 74 | 75 | self.automaticallyAdjustsScrollViewInsets = YES; 76 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"PDF转换" style:UIBarButtonItemStylePlain target:self action:@selector(convertPDFAction)]; 77 | 78 | NSURL *fileUrl = [NSURL fileURLWithPath:_filePath]; 79 | NSURLRequest *request = [NSURLRequest requestWithURL:fileUrl]; 80 | [self.webView loadRequest:request]; 81 | 82 | [self.indictorView startAnimating]; 83 | 84 | 85 | [self.imageConverterBtn addTarget:self action:@selector(convert2Image) forControlEvents:UIControlEventTouchUpInside]; 86 | 87 | 88 | 89 | } 90 | 91 | 92 | /** 93 | 转换成图片 94 | */ 95 | - (void)convert2Image{ 96 | self.indictorView.hidden = NO; 97 | [self.indictorView startAnimating]; 98 | 99 | UIImage *image = [self.webView convert2Image]; 100 | NSData *imageData = UIImagePNGRepresentation(image); 101 | NSString *imagePath = [WYPDFConverter saveDirectory:[NSString stringWithFormat:@"%@_IMG.png",self.fileName]]; 102 | BOOL result = [imageData writeToFile:imagePath atomically:YES]; 103 | 104 | if (result) { 105 | self.docVC.URL = [NSURL fileURLWithPath:imagePath]; 106 | [self.docVC presentPreviewAnimated:YES]; 107 | 108 | [self.indictorView stopAnimating]; 109 | } 110 | } 111 | 112 | /** 113 | 转换成PDF格式文件 114 | */ 115 | - (void)convertPDFAction{ 116 | 117 | self.indictorView.hidden = NO; 118 | [self.indictorView startAnimating]; 119 | 120 | NSString *fileName = [NSString stringWithFormat:@"%@.pdf",_fileName]; 121 | BOOL result = [WYPDFConverter convertPDFWithWebView:self.webView fileName:fileName]; 122 | 123 | if (result) { 124 | 125 | NSLog(@"convert success"); 126 | 127 | self.docVC.URL = [NSURL fileURLWithPath:[WYPDFConverter saveDirectory:fileName]]; 128 | [self.docVC presentPreviewAnimated:YES]; 129 | [self.indictorView stopAnimating]; 130 | 131 | } 132 | } 133 | 134 | #pragma mark - UIDocumentInteractionControllerDelegate Methods 135 | - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{ 136 | return self; 137 | } 138 | 139 | 140 | #pragma mark - UIWebViewDelegate 141 | 142 | - (void)webViewDidFinishLoad:(UIWebView *)webView{ 143 | [self.indictorView stopAnimating]; 144 | } 145 | 146 | //- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ 147 | // [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText='fail load'"]; 148 | //} 149 | 150 | 151 | 152 | 153 | @end 154 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | -------------------------------------------------------------------------------- /WYPDFConverterSwift/WYPDFConverterSwift.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 18B2CE211EFA59C500315A16 /* WYPDFConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B2CE201EFA59C500315A16 /* WYPDFConverter.swift */; }; 11 | 6F14D9F81EF954BF00911D47 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F14D9F71EF954BF00911D47 /* AppDelegate.swift */; }; 12 | 6F14D9FA1EF954BF00911D47 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F14D9F91EF954BF00911D47 /* ViewController.swift */; }; 13 | 6F14D9FD1EF954BF00911D47 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6F14D9FB1EF954BF00911D47 /* Main.storyboard */; }; 14 | 6F14D9FF1EF954BF00911D47 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6F14D9FE1EF954BF00911D47 /* Assets.xcassets */; }; 15 | 6F14DA021EF954BF00911D47 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA001EF954BF00911D47 /* LaunchScreen.storyboard */; }; 16 | 6F14DA0D1EF954BF00911D47 /* WYPDFConverterSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F14DA0C1EF954BF00911D47 /* WYPDFConverterSwiftTests.swift */; }; 17 | 6F14DA181EF954BF00911D47 /* WYPDFConverterSwiftUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F14DA171EF954BF00911D47 /* WYPDFConverterSwiftUITests.swift */; }; 18 | 6F14DA391EF954ED00911D47 /* excel操作大全.doc in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA271EF954ED00911D47 /* excel操作大全.doc */; }; 19 | 6F14DA3A1EF954ED00911D47 /* H5,JS资源.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA281EF954ED00911D47 /* H5,JS资源.txt */; }; 20 | 6F14DA3B1EF954ED00911D47 /* iOS.ppt in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA291EF954ED00911D47 /* iOS.ppt */; }; 21 | 6F14DA3C1EF954ED00911D47 /* Page.pages in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA2A1EF954ED00911D47 /* Page.pages */; }; 22 | 6F14DA3D1EF954ED00911D47 /* Xcode快捷键.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA2B1EF954ED00911D47 /* Xcode快捷键.rtf */; }; 23 | 6F14DA3E1EF954ED00911D47 /* 华为推荐书目.xls in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA2C1EF954ED00911D47 /* 华为推荐书目.xls */; }; 24 | 6F14DA3F1EF954ED00911D47 /* 大话Swift 3.0(上).key in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA2D1EF954ED00911D47 /* 大话Swift 3.0(上).key */; }; 25 | 6F14DA401EF954ED00911D47 /* 抵押贷款.numbers in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA2E1EF954ED00911D47 /* 抵押贷款.numbers */; }; 26 | 6F14DA411EF954ED00911D47 /* image0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA301EF954ED00911D47 /* image0.jpg */; }; 27 | 6F14DA421EF954ED00911D47 /* image1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA311EF954ED00911D47 /* image1.jpg */; }; 28 | 6F14DA431EF954ED00911D47 /* image2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA321EF954ED00911D47 /* image2.jpg */; }; 29 | 6F14DA441EF954ED00911D47 /* image3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA331EF954ED00911D47 /* image3.jpg */; }; 30 | 6F14DA451EF954ED00911D47 /* image4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA341EF954ED00911D47 /* image4.jpg */; }; 31 | 6F14DA461EF954ED00911D47 /* image5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA351EF954ED00911D47 /* image5.jpg */; }; 32 | 6F14DA471EF954ED00911D47 /* image6.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA361EF954ED00911D47 /* image6.jpg */; }; 33 | 6F14DA481EF954ED00911D47 /* image7.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA371EF954ED00911D47 /* image7.jpg */; }; 34 | 6F14DA491EF954ED00911D47 /* image8.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6F14DA381EF954ED00911D47 /* image8.jpg */; }; 35 | 6F14DA4C1EF9609B00911D47 /* WYWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F14DA4B1EF9609B00911D47 /* WYWebViewController.swift */; }; 36 | /* End PBXBuildFile section */ 37 | 38 | /* Begin PBXContainerItemProxy section */ 39 | 6F14DA091EF954BF00911D47 /* PBXContainerItemProxy */ = { 40 | isa = PBXContainerItemProxy; 41 | containerPortal = 6F14D9EC1EF954BF00911D47 /* Project object */; 42 | proxyType = 1; 43 | remoteGlobalIDString = 6F14D9F31EF954BF00911D47; 44 | remoteInfo = WYPDFConverterSwift; 45 | }; 46 | 6F14DA141EF954BF00911D47 /* PBXContainerItemProxy */ = { 47 | isa = PBXContainerItemProxy; 48 | containerPortal = 6F14D9EC1EF954BF00911D47 /* Project object */; 49 | proxyType = 1; 50 | remoteGlobalIDString = 6F14D9F31EF954BF00911D47; 51 | remoteInfo = WYPDFConverterSwift; 52 | }; 53 | /* End PBXContainerItemProxy section */ 54 | 55 | /* Begin PBXFileReference section */ 56 | 18B2CE201EFA59C500315A16 /* WYPDFConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WYPDFConverter.swift; sourceTree = ""; }; 57 | 6F14D9F41EF954BF00911D47 /* WYPDFConverterSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WYPDFConverterSwift.app; sourceTree = BUILT_PRODUCTS_DIR; }; 58 | 6F14D9F71EF954BF00911D47 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 59 | 6F14D9F91EF954BF00911D47 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 60 | 6F14D9FC1EF954BF00911D47 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 61 | 6F14D9FE1EF954BF00911D47 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 62 | 6F14DA011EF954BF00911D47 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 63 | 6F14DA031EF954BF00911D47 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 64 | 6F14DA081EF954BF00911D47 /* WYPDFConverterSwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WYPDFConverterSwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 65 | 6F14DA0C1EF954BF00911D47 /* WYPDFConverterSwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WYPDFConverterSwiftTests.swift; sourceTree = ""; }; 66 | 6F14DA0E1EF954BF00911D47 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 67 | 6F14DA131EF954BF00911D47 /* WYPDFConverterSwiftUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WYPDFConverterSwiftUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 68 | 6F14DA171EF954BF00911D47 /* WYPDFConverterSwiftUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WYPDFConverterSwiftUITests.swift; sourceTree = ""; }; 69 | 6F14DA191EF954BF00911D47 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 70 | 6F14DA271EF954ED00911D47 /* excel操作大全.doc */ = {isa = PBXFileReference; lastKnownFileType = file; path = "excel操作大全.doc"; sourceTree = ""; }; 71 | 6F14DA281EF954ED00911D47 /* H5,JS资源.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "H5,JS资源.txt"; sourceTree = ""; }; 72 | 6F14DA291EF954ED00911D47 /* iOS.ppt */ = {isa = PBXFileReference; lastKnownFileType = file; path = iOS.ppt; sourceTree = ""; }; 73 | 6F14DA2A1EF954ED00911D47 /* Page.pages */ = {isa = PBXFileReference; lastKnownFileType = file; path = Page.pages; sourceTree = ""; }; 74 | 6F14DA2B1EF954ED00911D47 /* Xcode快捷键.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = "Xcode快捷键.rtf"; sourceTree = ""; }; 75 | 6F14DA2C1EF954ED00911D47 /* 华为推荐书目.xls */ = {isa = PBXFileReference; lastKnownFileType = file; path = "华为推荐书目.xls"; sourceTree = ""; }; 76 | 6F14DA2D1EF954ED00911D47 /* 大话Swift 3.0(上).key */ = {isa = PBXFileReference; lastKnownFileType = file; path = "大话Swift 3.0(上).key"; sourceTree = ""; }; 77 | 6F14DA2E1EF954ED00911D47 /* 抵押贷款.numbers */ = {isa = PBXFileReference; lastKnownFileType = file; path = "抵押贷款.numbers"; sourceTree = ""; }; 78 | 6F14DA301EF954ED00911D47 /* image0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image0.jpg; sourceTree = ""; }; 79 | 6F14DA311EF954ED00911D47 /* image1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image1.jpg; sourceTree = ""; }; 80 | 6F14DA321EF954ED00911D47 /* image2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image2.jpg; sourceTree = ""; }; 81 | 6F14DA331EF954ED00911D47 /* image3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image3.jpg; sourceTree = ""; }; 82 | 6F14DA341EF954ED00911D47 /* image4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image4.jpg; sourceTree = ""; }; 83 | 6F14DA351EF954ED00911D47 /* image5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image5.jpg; sourceTree = ""; }; 84 | 6F14DA361EF954ED00911D47 /* image6.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image6.jpg; sourceTree = ""; }; 85 | 6F14DA371EF954ED00911D47 /* image7.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image7.jpg; sourceTree = ""; }; 86 | 6F14DA381EF954ED00911D47 /* image8.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image8.jpg; sourceTree = ""; }; 87 | 6F14DA4B1EF9609B00911D47 /* WYWebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WYWebViewController.swift; sourceTree = ""; }; 88 | /* End PBXFileReference section */ 89 | 90 | /* Begin PBXFrameworksBuildPhase section */ 91 | 6F14D9F11EF954BF00911D47 /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | 6F14DA051EF954BF00911D47 /* Frameworks */ = { 99 | isa = PBXFrameworksBuildPhase; 100 | buildActionMask = 2147483647; 101 | files = ( 102 | ); 103 | runOnlyForDeploymentPostprocessing = 0; 104 | }; 105 | 6F14DA101EF954BF00911D47 /* Frameworks */ = { 106 | isa = PBXFrameworksBuildPhase; 107 | buildActionMask = 2147483647; 108 | files = ( 109 | ); 110 | runOnlyForDeploymentPostprocessing = 0; 111 | }; 112 | /* End PBXFrameworksBuildPhase section */ 113 | 114 | /* Begin PBXGroup section */ 115 | 18B2CE1F1EFA599F00315A16 /* WYPDFConverter */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | 18B2CE201EFA59C500315A16 /* WYPDFConverter.swift */, 119 | ); 120 | path = WYPDFConverter; 121 | sourceTree = ""; 122 | }; 123 | 6F14D9EB1EF954BF00911D47 = { 124 | isa = PBXGroup; 125 | children = ( 126 | 18B2CE1F1EFA599F00315A16 /* WYPDFConverter */, 127 | 6F14DA251EF954ED00911D47 /* Resource */, 128 | 6F14D9F61EF954BF00911D47 /* WYPDFConverterSwift */, 129 | 6F14DA0B1EF954BF00911D47 /* WYPDFConverterSwiftTests */, 130 | 6F14DA161EF954BF00911D47 /* WYPDFConverterSwiftUITests */, 131 | 6F14D9F51EF954BF00911D47 /* Products */, 132 | ); 133 | sourceTree = ""; 134 | }; 135 | 6F14D9F51EF954BF00911D47 /* Products */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | 6F14D9F41EF954BF00911D47 /* WYPDFConverterSwift.app */, 139 | 6F14DA081EF954BF00911D47 /* WYPDFConverterSwiftTests.xctest */, 140 | 6F14DA131EF954BF00911D47 /* WYPDFConverterSwiftUITests.xctest */, 141 | ); 142 | name = Products; 143 | sourceTree = ""; 144 | }; 145 | 6F14D9F61EF954BF00911D47 /* WYPDFConverterSwift */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 6F14D9F71EF954BF00911D47 /* AppDelegate.swift */, 149 | 6F14D9F91EF954BF00911D47 /* ViewController.swift */, 150 | 6F14DA4A1EF9608000911D47 /* ViewController */, 151 | 6F14D9FB1EF954BF00911D47 /* Main.storyboard */, 152 | 6F14D9FE1EF954BF00911D47 /* Assets.xcassets */, 153 | 6F14DA001EF954BF00911D47 /* LaunchScreen.storyboard */, 154 | 6F14DA031EF954BF00911D47 /* Info.plist */, 155 | ); 156 | path = WYPDFConverterSwift; 157 | sourceTree = ""; 158 | }; 159 | 6F14DA0B1EF954BF00911D47 /* WYPDFConverterSwiftTests */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | 6F14DA0C1EF954BF00911D47 /* WYPDFConverterSwiftTests.swift */, 163 | 6F14DA0E1EF954BF00911D47 /* Info.plist */, 164 | ); 165 | path = WYPDFConverterSwiftTests; 166 | sourceTree = ""; 167 | }; 168 | 6F14DA161EF954BF00911D47 /* WYPDFConverterSwiftUITests */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | 6F14DA171EF954BF00911D47 /* WYPDFConverterSwiftUITests.swift */, 172 | 6F14DA191EF954BF00911D47 /* Info.plist */, 173 | ); 174 | path = WYPDFConverterSwiftUITests; 175 | sourceTree = ""; 176 | }; 177 | 6F14DA251EF954ED00911D47 /* Resource */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | 6F14DA261EF954ED00911D47 /* Document */, 181 | 6F14DA2F1EF954ED00911D47 /* image */, 182 | ); 183 | path = Resource; 184 | sourceTree = ""; 185 | }; 186 | 6F14DA261EF954ED00911D47 /* Document */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 6F14DA271EF954ED00911D47 /* excel操作大全.doc */, 190 | 6F14DA281EF954ED00911D47 /* H5,JS资源.txt */, 191 | 6F14DA291EF954ED00911D47 /* iOS.ppt */, 192 | 6F14DA2A1EF954ED00911D47 /* Page.pages */, 193 | 6F14DA2B1EF954ED00911D47 /* Xcode快捷键.rtf */, 194 | 6F14DA2C1EF954ED00911D47 /* 华为推荐书目.xls */, 195 | 6F14DA2D1EF954ED00911D47 /* 大话Swift 3.0(上).key */, 196 | 6F14DA2E1EF954ED00911D47 /* 抵押贷款.numbers */, 197 | ); 198 | path = Document; 199 | sourceTree = ""; 200 | }; 201 | 6F14DA2F1EF954ED00911D47 /* image */ = { 202 | isa = PBXGroup; 203 | children = ( 204 | 6F14DA301EF954ED00911D47 /* image0.jpg */, 205 | 6F14DA311EF954ED00911D47 /* image1.jpg */, 206 | 6F14DA321EF954ED00911D47 /* image2.jpg */, 207 | 6F14DA331EF954ED00911D47 /* image3.jpg */, 208 | 6F14DA341EF954ED00911D47 /* image4.jpg */, 209 | 6F14DA351EF954ED00911D47 /* image5.jpg */, 210 | 6F14DA361EF954ED00911D47 /* image6.jpg */, 211 | 6F14DA371EF954ED00911D47 /* image7.jpg */, 212 | 6F14DA381EF954ED00911D47 /* image8.jpg */, 213 | ); 214 | path = image; 215 | sourceTree = ""; 216 | }; 217 | 6F14DA4A1EF9608000911D47 /* ViewController */ = { 218 | isa = PBXGroup; 219 | children = ( 220 | 6F14DA4B1EF9609B00911D47 /* WYWebViewController.swift */, 221 | ); 222 | path = ViewController; 223 | sourceTree = ""; 224 | }; 225 | /* End PBXGroup section */ 226 | 227 | /* Begin PBXNativeTarget section */ 228 | 6F14D9F31EF954BF00911D47 /* WYPDFConverterSwift */ = { 229 | isa = PBXNativeTarget; 230 | buildConfigurationList = 6F14DA1C1EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwift" */; 231 | buildPhases = ( 232 | 6F14D9F01EF954BF00911D47 /* Sources */, 233 | 6F14D9F11EF954BF00911D47 /* Frameworks */, 234 | 6F14D9F21EF954BF00911D47 /* Resources */, 235 | ); 236 | buildRules = ( 237 | ); 238 | dependencies = ( 239 | ); 240 | name = WYPDFConverterSwift; 241 | productName = WYPDFConverterSwift; 242 | productReference = 6F14D9F41EF954BF00911D47 /* WYPDFConverterSwift.app */; 243 | productType = "com.apple.product-type.application"; 244 | }; 245 | 6F14DA071EF954BF00911D47 /* WYPDFConverterSwiftTests */ = { 246 | isa = PBXNativeTarget; 247 | buildConfigurationList = 6F14DA1F1EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwiftTests" */; 248 | buildPhases = ( 249 | 6F14DA041EF954BF00911D47 /* Sources */, 250 | 6F14DA051EF954BF00911D47 /* Frameworks */, 251 | 6F14DA061EF954BF00911D47 /* Resources */, 252 | ); 253 | buildRules = ( 254 | ); 255 | dependencies = ( 256 | 6F14DA0A1EF954BF00911D47 /* PBXTargetDependency */, 257 | ); 258 | name = WYPDFConverterSwiftTests; 259 | productName = WYPDFConverterSwiftTests; 260 | productReference = 6F14DA081EF954BF00911D47 /* WYPDFConverterSwiftTests.xctest */; 261 | productType = "com.apple.product-type.bundle.unit-test"; 262 | }; 263 | 6F14DA121EF954BF00911D47 /* WYPDFConverterSwiftUITests */ = { 264 | isa = PBXNativeTarget; 265 | buildConfigurationList = 6F14DA221EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwiftUITests" */; 266 | buildPhases = ( 267 | 6F14DA0F1EF954BF00911D47 /* Sources */, 268 | 6F14DA101EF954BF00911D47 /* Frameworks */, 269 | 6F14DA111EF954BF00911D47 /* Resources */, 270 | ); 271 | buildRules = ( 272 | ); 273 | dependencies = ( 274 | 6F14DA151EF954BF00911D47 /* PBXTargetDependency */, 275 | ); 276 | name = WYPDFConverterSwiftUITests; 277 | productName = WYPDFConverterSwiftUITests; 278 | productReference = 6F14DA131EF954BF00911D47 /* WYPDFConverterSwiftUITests.xctest */; 279 | productType = "com.apple.product-type.bundle.ui-testing"; 280 | }; 281 | /* End PBXNativeTarget section */ 282 | 283 | /* Begin PBXProject section */ 284 | 6F14D9EC1EF954BF00911D47 /* Project object */ = { 285 | isa = PBXProject; 286 | attributes = { 287 | LastSwiftUpdateCheck = 0830; 288 | LastUpgradeCheck = 0830; 289 | ORGANIZATIONNAME = "杨新威"; 290 | TargetAttributes = { 291 | 6F14D9F31EF954BF00911D47 = { 292 | CreatedOnToolsVersion = 8.3; 293 | ProvisioningStyle = Automatic; 294 | }; 295 | 6F14DA071EF954BF00911D47 = { 296 | CreatedOnToolsVersion = 8.3; 297 | ProvisioningStyle = Automatic; 298 | TestTargetID = 6F14D9F31EF954BF00911D47; 299 | }; 300 | 6F14DA121EF954BF00911D47 = { 301 | CreatedOnToolsVersion = 8.3; 302 | ProvisioningStyle = Automatic; 303 | TestTargetID = 6F14D9F31EF954BF00911D47; 304 | }; 305 | }; 306 | }; 307 | buildConfigurationList = 6F14D9EF1EF954BF00911D47 /* Build configuration list for PBXProject "WYPDFConverterSwift" */; 308 | compatibilityVersion = "Xcode 3.2"; 309 | developmentRegion = English; 310 | hasScannedForEncodings = 0; 311 | knownRegions = ( 312 | en, 313 | Base, 314 | ); 315 | mainGroup = 6F14D9EB1EF954BF00911D47; 316 | productRefGroup = 6F14D9F51EF954BF00911D47 /* Products */; 317 | projectDirPath = ""; 318 | projectRoot = ""; 319 | targets = ( 320 | 6F14D9F31EF954BF00911D47 /* WYPDFConverterSwift */, 321 | 6F14DA071EF954BF00911D47 /* WYPDFConverterSwiftTests */, 322 | 6F14DA121EF954BF00911D47 /* WYPDFConverterSwiftUITests */, 323 | ); 324 | }; 325 | /* End PBXProject section */ 326 | 327 | /* Begin PBXResourcesBuildPhase section */ 328 | 6F14D9F21EF954BF00911D47 /* Resources */ = { 329 | isa = PBXResourcesBuildPhase; 330 | buildActionMask = 2147483647; 331 | files = ( 332 | 6F14DA451EF954ED00911D47 /* image4.jpg in Resources */, 333 | 6F14DA411EF954ED00911D47 /* image0.jpg in Resources */, 334 | 6F14DA401EF954ED00911D47 /* 抵押贷款.numbers in Resources */, 335 | 6F14DA3B1EF954ED00911D47 /* iOS.ppt in Resources */, 336 | 6F14DA3D1EF954ED00911D47 /* Xcode快捷键.rtf in Resources */, 337 | 6F14DA021EF954BF00911D47 /* LaunchScreen.storyboard in Resources */, 338 | 6F14DA481EF954ED00911D47 /* image7.jpg in Resources */, 339 | 6F14DA471EF954ED00911D47 /* image6.jpg in Resources */, 340 | 6F14DA3E1EF954ED00911D47 /* 华为推荐书目.xls in Resources */, 341 | 6F14DA441EF954ED00911D47 /* image3.jpg in Resources */, 342 | 6F14DA431EF954ED00911D47 /* image2.jpg in Resources */, 343 | 6F14DA3F1EF954ED00911D47 /* 大话Swift 3.0(上).key in Resources */, 344 | 6F14DA3A1EF954ED00911D47 /* H5,JS资源.txt in Resources */, 345 | 6F14DA3C1EF954ED00911D47 /* Page.pages in Resources */, 346 | 6F14D9FF1EF954BF00911D47 /* Assets.xcassets in Resources */, 347 | 6F14DA391EF954ED00911D47 /* excel操作大全.doc in Resources */, 348 | 6F14DA491EF954ED00911D47 /* image8.jpg in Resources */, 349 | 6F14D9FD1EF954BF00911D47 /* Main.storyboard in Resources */, 350 | 6F14DA461EF954ED00911D47 /* image5.jpg in Resources */, 351 | 6F14DA421EF954ED00911D47 /* image1.jpg in Resources */, 352 | ); 353 | runOnlyForDeploymentPostprocessing = 0; 354 | }; 355 | 6F14DA061EF954BF00911D47 /* Resources */ = { 356 | isa = PBXResourcesBuildPhase; 357 | buildActionMask = 2147483647; 358 | files = ( 359 | ); 360 | runOnlyForDeploymentPostprocessing = 0; 361 | }; 362 | 6F14DA111EF954BF00911D47 /* Resources */ = { 363 | isa = PBXResourcesBuildPhase; 364 | buildActionMask = 2147483647; 365 | files = ( 366 | ); 367 | runOnlyForDeploymentPostprocessing = 0; 368 | }; 369 | /* End PBXResourcesBuildPhase section */ 370 | 371 | /* Begin PBXSourcesBuildPhase section */ 372 | 6F14D9F01EF954BF00911D47 /* Sources */ = { 373 | isa = PBXSourcesBuildPhase; 374 | buildActionMask = 2147483647; 375 | files = ( 376 | 6F14D9FA1EF954BF00911D47 /* ViewController.swift in Sources */, 377 | 18B2CE211EFA59C500315A16 /* WYPDFConverter.swift in Sources */, 378 | 6F14D9F81EF954BF00911D47 /* AppDelegate.swift in Sources */, 379 | 6F14DA4C1EF9609B00911D47 /* WYWebViewController.swift in Sources */, 380 | ); 381 | runOnlyForDeploymentPostprocessing = 0; 382 | }; 383 | 6F14DA041EF954BF00911D47 /* Sources */ = { 384 | isa = PBXSourcesBuildPhase; 385 | buildActionMask = 2147483647; 386 | files = ( 387 | 6F14DA0D1EF954BF00911D47 /* WYPDFConverterSwiftTests.swift in Sources */, 388 | ); 389 | runOnlyForDeploymentPostprocessing = 0; 390 | }; 391 | 6F14DA0F1EF954BF00911D47 /* Sources */ = { 392 | isa = PBXSourcesBuildPhase; 393 | buildActionMask = 2147483647; 394 | files = ( 395 | 6F14DA181EF954BF00911D47 /* WYPDFConverterSwiftUITests.swift in Sources */, 396 | ); 397 | runOnlyForDeploymentPostprocessing = 0; 398 | }; 399 | /* End PBXSourcesBuildPhase section */ 400 | 401 | /* Begin PBXTargetDependency section */ 402 | 6F14DA0A1EF954BF00911D47 /* PBXTargetDependency */ = { 403 | isa = PBXTargetDependency; 404 | target = 6F14D9F31EF954BF00911D47 /* WYPDFConverterSwift */; 405 | targetProxy = 6F14DA091EF954BF00911D47 /* PBXContainerItemProxy */; 406 | }; 407 | 6F14DA151EF954BF00911D47 /* PBXTargetDependency */ = { 408 | isa = PBXTargetDependency; 409 | target = 6F14D9F31EF954BF00911D47 /* WYPDFConverterSwift */; 410 | targetProxy = 6F14DA141EF954BF00911D47 /* PBXContainerItemProxy */; 411 | }; 412 | /* End PBXTargetDependency section */ 413 | 414 | /* Begin PBXVariantGroup section */ 415 | 6F14D9FB1EF954BF00911D47 /* Main.storyboard */ = { 416 | isa = PBXVariantGroup; 417 | children = ( 418 | 6F14D9FC1EF954BF00911D47 /* Base */, 419 | ); 420 | name = Main.storyboard; 421 | sourceTree = ""; 422 | }; 423 | 6F14DA001EF954BF00911D47 /* LaunchScreen.storyboard */ = { 424 | isa = PBXVariantGroup; 425 | children = ( 426 | 6F14DA011EF954BF00911D47 /* Base */, 427 | ); 428 | name = LaunchScreen.storyboard; 429 | sourceTree = ""; 430 | }; 431 | /* End PBXVariantGroup section */ 432 | 433 | /* Begin XCBuildConfiguration section */ 434 | 6F14DA1A1EF954BF00911D47 /* Debug */ = { 435 | isa = XCBuildConfiguration; 436 | buildSettings = { 437 | ALWAYS_SEARCH_USER_PATHS = NO; 438 | CLANG_ANALYZER_NONNULL = YES; 439 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 440 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 441 | CLANG_CXX_LIBRARY = "libc++"; 442 | CLANG_ENABLE_MODULES = YES; 443 | CLANG_ENABLE_OBJC_ARC = YES; 444 | CLANG_WARN_BOOL_CONVERSION = YES; 445 | CLANG_WARN_CONSTANT_CONVERSION = YES; 446 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 447 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 448 | CLANG_WARN_EMPTY_BODY = YES; 449 | CLANG_WARN_ENUM_CONVERSION = YES; 450 | CLANG_WARN_INFINITE_RECURSION = YES; 451 | CLANG_WARN_INT_CONVERSION = YES; 452 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 453 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 454 | CLANG_WARN_UNREACHABLE_CODE = YES; 455 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 456 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 457 | COPY_PHASE_STRIP = NO; 458 | DEBUG_INFORMATION_FORMAT = dwarf; 459 | ENABLE_STRICT_OBJC_MSGSEND = YES; 460 | ENABLE_TESTABILITY = YES; 461 | GCC_C_LANGUAGE_STANDARD = gnu99; 462 | GCC_DYNAMIC_NO_PIC = NO; 463 | GCC_NO_COMMON_BLOCKS = YES; 464 | GCC_OPTIMIZATION_LEVEL = 0; 465 | GCC_PREPROCESSOR_DEFINITIONS = ( 466 | "DEBUG=1", 467 | "$(inherited)", 468 | ); 469 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 470 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 471 | GCC_WARN_UNDECLARED_SELECTOR = YES; 472 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 473 | GCC_WARN_UNUSED_FUNCTION = YES; 474 | GCC_WARN_UNUSED_VARIABLE = YES; 475 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 476 | MTL_ENABLE_DEBUG_INFO = YES; 477 | ONLY_ACTIVE_ARCH = YES; 478 | SDKROOT = iphoneos; 479 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 480 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 481 | TARGETED_DEVICE_FAMILY = "1,2"; 482 | }; 483 | name = Debug; 484 | }; 485 | 6F14DA1B1EF954BF00911D47 /* Release */ = { 486 | isa = XCBuildConfiguration; 487 | buildSettings = { 488 | ALWAYS_SEARCH_USER_PATHS = NO; 489 | CLANG_ANALYZER_NONNULL = YES; 490 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 491 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 492 | CLANG_CXX_LIBRARY = "libc++"; 493 | CLANG_ENABLE_MODULES = YES; 494 | CLANG_ENABLE_OBJC_ARC = YES; 495 | CLANG_WARN_BOOL_CONVERSION = YES; 496 | CLANG_WARN_CONSTANT_CONVERSION = YES; 497 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 498 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 499 | CLANG_WARN_EMPTY_BODY = YES; 500 | CLANG_WARN_ENUM_CONVERSION = YES; 501 | CLANG_WARN_INFINITE_RECURSION = YES; 502 | CLANG_WARN_INT_CONVERSION = YES; 503 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 504 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 505 | CLANG_WARN_UNREACHABLE_CODE = YES; 506 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 507 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 508 | COPY_PHASE_STRIP = NO; 509 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 510 | ENABLE_NS_ASSERTIONS = NO; 511 | ENABLE_STRICT_OBJC_MSGSEND = YES; 512 | GCC_C_LANGUAGE_STANDARD = gnu99; 513 | GCC_NO_COMMON_BLOCKS = YES; 514 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 515 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 516 | GCC_WARN_UNDECLARED_SELECTOR = YES; 517 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 518 | GCC_WARN_UNUSED_FUNCTION = YES; 519 | GCC_WARN_UNUSED_VARIABLE = YES; 520 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 521 | MTL_ENABLE_DEBUG_INFO = NO; 522 | SDKROOT = iphoneos; 523 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 524 | TARGETED_DEVICE_FAMILY = "1,2"; 525 | VALIDATE_PRODUCT = YES; 526 | }; 527 | name = Release; 528 | }; 529 | 6F14DA1D1EF954BF00911D47 /* Debug */ = { 530 | isa = XCBuildConfiguration; 531 | buildSettings = { 532 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 533 | INFOPLIST_FILE = WYPDFConverterSwift/Info.plist; 534 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 535 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 536 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwift; 537 | PRODUCT_NAME = "$(TARGET_NAME)"; 538 | SWIFT_VERSION = 3.0; 539 | }; 540 | name = Debug; 541 | }; 542 | 6F14DA1E1EF954BF00911D47 /* Release */ = { 543 | isa = XCBuildConfiguration; 544 | buildSettings = { 545 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 546 | INFOPLIST_FILE = WYPDFConverterSwift/Info.plist; 547 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 548 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 549 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwift; 550 | PRODUCT_NAME = "$(TARGET_NAME)"; 551 | SWIFT_VERSION = 3.0; 552 | }; 553 | name = Release; 554 | }; 555 | 6F14DA201EF954BF00911D47 /* Debug */ = { 556 | isa = XCBuildConfiguration; 557 | buildSettings = { 558 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 559 | BUNDLE_LOADER = "$(TEST_HOST)"; 560 | INFOPLIST_FILE = WYPDFConverterSwiftTests/Info.plist; 561 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 562 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwiftTests; 563 | PRODUCT_NAME = "$(TARGET_NAME)"; 564 | SWIFT_VERSION = 3.0; 565 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WYPDFConverterSwift.app/WYPDFConverterSwift"; 566 | }; 567 | name = Debug; 568 | }; 569 | 6F14DA211EF954BF00911D47 /* Release */ = { 570 | isa = XCBuildConfiguration; 571 | buildSettings = { 572 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 573 | BUNDLE_LOADER = "$(TEST_HOST)"; 574 | INFOPLIST_FILE = WYPDFConverterSwiftTests/Info.plist; 575 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 576 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwiftTests; 577 | PRODUCT_NAME = "$(TARGET_NAME)"; 578 | SWIFT_VERSION = 3.0; 579 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WYPDFConverterSwift.app/WYPDFConverterSwift"; 580 | }; 581 | name = Release; 582 | }; 583 | 6F14DA231EF954BF00911D47 /* Debug */ = { 584 | isa = XCBuildConfiguration; 585 | buildSettings = { 586 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 587 | INFOPLIST_FILE = WYPDFConverterSwiftUITests/Info.plist; 588 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 589 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwiftUITests; 590 | PRODUCT_NAME = "$(TARGET_NAME)"; 591 | SWIFT_VERSION = 3.0; 592 | TEST_TARGET_NAME = WYPDFConverterSwift; 593 | }; 594 | name = Debug; 595 | }; 596 | 6F14DA241EF954BF00911D47 /* Release */ = { 597 | isa = XCBuildConfiguration; 598 | buildSettings = { 599 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 600 | INFOPLIST_FILE = WYPDFConverterSwiftUITests/Info.plist; 601 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 602 | PRODUCT_BUNDLE_IDENTIFIER = whiteyoung.WYPDFConverterSwiftUITests; 603 | PRODUCT_NAME = "$(TARGET_NAME)"; 604 | SWIFT_VERSION = 3.0; 605 | TEST_TARGET_NAME = WYPDFConverterSwift; 606 | }; 607 | name = Release; 608 | }; 609 | /* End XCBuildConfiguration section */ 610 | 611 | /* Begin XCConfigurationList section */ 612 | 6F14D9EF1EF954BF00911D47 /* Build configuration list for PBXProject "WYPDFConverterSwift" */ = { 613 | isa = XCConfigurationList; 614 | buildConfigurations = ( 615 | 6F14DA1A1EF954BF00911D47 /* Debug */, 616 | 6F14DA1B1EF954BF00911D47 /* Release */, 617 | ); 618 | defaultConfigurationIsVisible = 0; 619 | defaultConfigurationName = Release; 620 | }; 621 | 6F14DA1C1EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwift" */ = { 622 | isa = XCConfigurationList; 623 | buildConfigurations = ( 624 | 6F14DA1D1EF954BF00911D47 /* Debug */, 625 | 6F14DA1E1EF954BF00911D47 /* Release */, 626 | ); 627 | defaultConfigurationIsVisible = 0; 628 | defaultConfigurationName = Release; 629 | }; 630 | 6F14DA1F1EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwiftTests" */ = { 631 | isa = XCConfigurationList; 632 | buildConfigurations = ( 633 | 6F14DA201EF954BF00911D47 /* Debug */, 634 | 6F14DA211EF954BF00911D47 /* Release */, 635 | ); 636 | defaultConfigurationIsVisible = 0; 637 | defaultConfigurationName = Release; 638 | }; 639 | 6F14DA221EF954BF00911D47 /* Build configuration list for PBXNativeTarget "WYPDFConverterSwiftUITests" */ = { 640 | isa = XCConfigurationList; 641 | buildConfigurations = ( 642 | 6F14DA231EF954BF00911D47 /* Debug */, 643 | 6F14DA241EF954BF00911D47 /* Release */, 644 | ); 645 | defaultConfigurationIsVisible = 0; 646 | defaultConfigurationName = Release; 647 | }; 648 | /* End XCConfigurationList section */ 649 | }; 650 | rootObject = 6F14D9EC1EF954BF00911D47 /* Project object */; 651 | } 652 | -------------------------------------------------------------------------------- /WYPDFConverterOC/WYPDFConverterOC.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1823B7661F04A98B0077487A /* WYFilesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1823B7651F04A98B0077487A /* WYFilesViewController.m */; }; 11 | 1834C87A1EF9043F0092518D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C8791EF9043F0092518D /* main.m */; }; 12 | 1834C87D1EF9043F0092518D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C87C1EF9043F0092518D /* AppDelegate.m */; }; 13 | 1834C8801EF9043F0092518D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C87F1EF9043F0092518D /* ViewController.m */; }; 14 | 1834C8831EF9043F0092518D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8811EF9043F0092518D /* Main.storyboard */; }; 15 | 1834C8851EF9043F0092518D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8841EF9043F0092518D /* Assets.xcassets */; }; 16 | 1834C8881EF9043F0092518D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8861EF9043F0092518D /* LaunchScreen.storyboard */; }; 17 | 1834C8931EF904400092518D /* WYPDFConverterOCTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C8921EF904400092518D /* WYPDFConverterOCTests.m */; }; 18 | 1834C89E1EF904400092518D /* WYPDFConverterOCUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C89D1EF904400092518D /* WYPDFConverterOCUITests.m */; }; 19 | 1834C8FF1EF917050092518D /* excel操作大全.doc in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8EC1EF917050092518D /* excel操作大全.doc */; }; 20 | 1834C9001EF917050092518D /* H5,JS资源.txt in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8ED1EF917050092518D /* H5,JS资源.txt */; }; 21 | 1834C9011EF917050092518D /* iOS.ppt in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8EE1EF917050092518D /* iOS.ppt */; }; 22 | 1834C9021EF917050092518D /* Page.pages in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8EF1EF917050092518D /* Page.pages */; }; 23 | 1834C9031EF917050092518D /* Xcode快捷键.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8F01EF917050092518D /* Xcode快捷键.rtf */; }; 24 | 1834C9041EF917050092518D /* 华为推荐书目.xls in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8F11EF917050092518D /* 华为推荐书目.xls */; }; 25 | 1834C9051EF917050092518D /* 大话Swift 3.0(上).key in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8F21EF917050092518D /* 大话Swift 3.0(上).key */; }; 26 | 1834C9061EF917050092518D /* 抵押贷款.numbers in Resources */ = {isa = PBXBuildFile; fileRef = 1834C8F31EF917050092518D /* 抵押贷款.numbers */; }; 27 | 1834C91A1EF918020092518D /* image0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9111EF918020092518D /* image0.jpg */; }; 28 | 1834C91B1EF918020092518D /* image1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9121EF918020092518D /* image1.jpg */; }; 29 | 1834C91C1EF918020092518D /* image2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9131EF918020092518D /* image2.jpg */; }; 30 | 1834C91D1EF918020092518D /* image3.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9141EF918020092518D /* image3.jpg */; }; 31 | 1834C91F1EF918020092518D /* image5.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9161EF918020092518D /* image5.jpg */; }; 32 | 1834C9201EF918020092518D /* image6.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9171EF918020092518D /* image6.jpg */; }; 33 | 1834C9211EF918020092518D /* image7.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9181EF918020092518D /* image7.jpg */; }; 34 | 1834C9221EF918020092518D /* image8.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9191EF918020092518D /* image8.jpg */; }; 35 | 1834C9261EF919470092518D /* WYPDFConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C9251EF919470092518D /* WYPDFConverter.m */; }; 36 | 1834C9291EF919E60092518D /* UIWebView+WYFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C9281EF919E60092518D /* UIWebView+WYFile.m */; }; 37 | 1834C93E1EF936DB0092518D /* UIViewController+ImagePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C9351EF936DB0092518D /* UIViewController+ImagePicker.m */; }; 38 | 1834C93F1EF936DB0092518D /* WYImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C9381EF936DB0092518D /* WYImageViewController.m */; }; 39 | 1834C9401EF936DB0092518D /* WYWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C93A1EF936DB0092518D /* WYWebViewController.m */; }; 40 | 1834C9411EF936DB0092518D /* WYImageCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1834C93D1EF936DB0092518D /* WYImageCollectionViewCell.m */; }; 41 | 1834C9431EF938DF0092518D /* image4.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 1834C9421EF938DF0092518D /* image4.jpg */; }; 42 | 18DAFE4C1EFCFAC100C889A0 /* 虎扑篮球.webarchive in Resources */ = {isa = PBXBuildFile; fileRef = 18DAFE4B1EFCFAC100C889A0 /* 虎扑篮球.webarchive */; }; 43 | /* End PBXBuildFile section */ 44 | 45 | /* Begin PBXContainerItemProxy section */ 46 | 1834C88F1EF904400092518D /* PBXContainerItemProxy */ = { 47 | isa = PBXContainerItemProxy; 48 | containerPortal = 1834C86D1EF9043F0092518D /* Project object */; 49 | proxyType = 1; 50 | remoteGlobalIDString = 1834C8741EF9043F0092518D; 51 | remoteInfo = WYPDFConverterOC; 52 | }; 53 | 1834C89A1EF904400092518D /* PBXContainerItemProxy */ = { 54 | isa = PBXContainerItemProxy; 55 | containerPortal = 1834C86D1EF9043F0092518D /* Project object */; 56 | proxyType = 1; 57 | remoteGlobalIDString = 1834C8741EF9043F0092518D; 58 | remoteInfo = WYPDFConverterOC; 59 | }; 60 | /* End PBXContainerItemProxy section */ 61 | 62 | /* Begin PBXFileReference section */ 63 | 1823B7641F04A98B0077487A /* WYFilesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYFilesViewController.h; sourceTree = ""; }; 64 | 1823B7651F04A98B0077487A /* WYFilesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYFilesViewController.m; sourceTree = ""; }; 65 | 1834C8751EF9043F0092518D /* WYPDFConverterOC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WYPDFConverterOC.app; sourceTree = BUILT_PRODUCTS_DIR; }; 66 | 1834C8791EF9043F0092518D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 67 | 1834C87B1EF9043F0092518D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 68 | 1834C87C1EF9043F0092518D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 69 | 1834C87E1EF9043F0092518D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 70 | 1834C87F1EF9043F0092518D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 71 | 1834C8821EF9043F0092518D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 72 | 1834C8841EF9043F0092518D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 73 | 1834C8871EF9043F0092518D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 74 | 1834C8891EF9043F0092518D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | 1834C88E1EF904400092518D /* WYPDFConverterOCTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WYPDFConverterOCTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 76 | 1834C8921EF904400092518D /* WYPDFConverterOCTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WYPDFConverterOCTests.m; sourceTree = ""; }; 77 | 1834C8941EF904400092518D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 78 | 1834C8991EF904400092518D /* WYPDFConverterOCUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WYPDFConverterOCUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 79 | 1834C89D1EF904400092518D /* WYPDFConverterOCUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WYPDFConverterOCUITests.m; sourceTree = ""; }; 80 | 1834C89F1EF904400092518D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 81 | 1834C8EC1EF917050092518D /* excel操作大全.doc */ = {isa = PBXFileReference; lastKnownFileType = file; path = "excel操作大全.doc"; sourceTree = ""; }; 82 | 1834C8ED1EF917050092518D /* H5,JS资源.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "H5,JS资源.txt"; sourceTree = ""; }; 83 | 1834C8EE1EF917050092518D /* iOS.ppt */ = {isa = PBXFileReference; lastKnownFileType = file; path = iOS.ppt; sourceTree = ""; }; 84 | 1834C8EF1EF917050092518D /* Page.pages */ = {isa = PBXFileReference; lastKnownFileType = file; path = Page.pages; sourceTree = ""; }; 85 | 1834C8F01EF917050092518D /* Xcode快捷键.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = "Xcode快捷键.rtf"; sourceTree = ""; }; 86 | 1834C8F11EF917050092518D /* 华为推荐书目.xls */ = {isa = PBXFileReference; lastKnownFileType = file; path = "华为推荐书目.xls"; sourceTree = ""; }; 87 | 1834C8F21EF917050092518D /* 大话Swift 3.0(上).key */ = {isa = PBXFileReference; lastKnownFileType = file; path = "大话Swift 3.0(上).key"; sourceTree = ""; }; 88 | 1834C8F31EF917050092518D /* 抵押贷款.numbers */ = {isa = PBXFileReference; lastKnownFileType = file; path = "抵押贷款.numbers"; sourceTree = ""; }; 89 | 1834C9111EF918020092518D /* image0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image0.jpg; sourceTree = ""; }; 90 | 1834C9121EF918020092518D /* image1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image1.jpg; sourceTree = ""; }; 91 | 1834C9131EF918020092518D /* image2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image2.jpg; sourceTree = ""; }; 92 | 1834C9141EF918020092518D /* image3.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image3.jpg; sourceTree = ""; }; 93 | 1834C9161EF918020092518D /* image5.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image5.jpg; sourceTree = ""; }; 94 | 1834C9171EF918020092518D /* image6.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image6.jpg; sourceTree = ""; }; 95 | 1834C9181EF918020092518D /* image7.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image7.jpg; sourceTree = ""; }; 96 | 1834C9191EF918020092518D /* image8.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image8.jpg; sourceTree = ""; }; 97 | 1834C9241EF919470092518D /* WYPDFConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYPDFConverter.h; sourceTree = ""; }; 98 | 1834C9251EF919470092518D /* WYPDFConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYPDFConverter.m; sourceTree = ""; }; 99 | 1834C9271EF919E60092518D /* UIWebView+WYFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+WYFile.h"; sourceTree = ""; }; 100 | 1834C9281EF919E60092518D /* UIWebView+WYFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+WYFile.m"; sourceTree = ""; }; 101 | 1834C9341EF936DB0092518D /* UIViewController+ImagePicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+ImagePicker.h"; sourceTree = ""; }; 102 | 1834C9351EF936DB0092518D /* UIViewController+ImagePicker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+ImagePicker.m"; sourceTree = ""; }; 103 | 1834C9371EF936DB0092518D /* WYImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYImageViewController.h; sourceTree = ""; }; 104 | 1834C9381EF936DB0092518D /* WYImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYImageViewController.m; sourceTree = ""; }; 105 | 1834C9391EF936DB0092518D /* WYWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYWebViewController.h; sourceTree = ""; }; 106 | 1834C93A1EF936DB0092518D /* WYWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYWebViewController.m; sourceTree = ""; }; 107 | 1834C93C1EF936DB0092518D /* WYImageCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYImageCollectionViewCell.h; sourceTree = ""; }; 108 | 1834C93D1EF936DB0092518D /* WYImageCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYImageCollectionViewCell.m; sourceTree = ""; }; 109 | 1834C9421EF938DF0092518D /* image4.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image4.jpg; sourceTree = ""; }; 110 | 18DAFE4B1EFCFAC100C889A0 /* 虎扑篮球.webarchive */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = "虎扑篮球.webarchive"; sourceTree = ""; }; 111 | /* End PBXFileReference section */ 112 | 113 | /* Begin PBXFrameworksBuildPhase section */ 114 | 1834C8721EF9043F0092518D /* Frameworks */ = { 115 | isa = PBXFrameworksBuildPhase; 116 | buildActionMask = 2147483647; 117 | files = ( 118 | ); 119 | runOnlyForDeploymentPostprocessing = 0; 120 | }; 121 | 1834C88B1EF904400092518D /* Frameworks */ = { 122 | isa = PBXFrameworksBuildPhase; 123 | buildActionMask = 2147483647; 124 | files = ( 125 | ); 126 | runOnlyForDeploymentPostprocessing = 0; 127 | }; 128 | 1834C8961EF904400092518D /* Frameworks */ = { 129 | isa = PBXFrameworksBuildPhase; 130 | buildActionMask = 2147483647; 131 | files = ( 132 | ); 133 | runOnlyForDeploymentPostprocessing = 0; 134 | }; 135 | /* End PBXFrameworksBuildPhase section */ 136 | 137 | /* Begin PBXGroup section */ 138 | 1834C86C1EF9043F0092518D = { 139 | isa = PBXGroup; 140 | children = ( 141 | 1834C9231EF919300092518D /* WYPDFConverter */, 142 | 1834C8E91EF917050092518D /* Resource */, 143 | 1834C8771EF9043F0092518D /* WYPDFConverterOC */, 144 | 1834C8911EF904400092518D /* WYPDFConverterOCTests */, 145 | 1834C89C1EF904400092518D /* WYPDFConverterOCUITests */, 146 | 1834C8761EF9043F0092518D /* Products */, 147 | ); 148 | sourceTree = ""; 149 | }; 150 | 1834C8761EF9043F0092518D /* Products */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 1834C8751EF9043F0092518D /* WYPDFConverterOC.app */, 154 | 1834C88E1EF904400092518D /* WYPDFConverterOCTests.xctest */, 155 | 1834C8991EF904400092518D /* WYPDFConverterOCUITests.xctest */, 156 | ); 157 | name = Products; 158 | sourceTree = ""; 159 | }; 160 | 1834C8771EF9043F0092518D /* WYPDFConverterOC */ = { 161 | isa = PBXGroup; 162 | children = ( 163 | 1834C87B1EF9043F0092518D /* AppDelegate.h */, 164 | 1834C87C1EF9043F0092518D /* AppDelegate.m */, 165 | 1834C87E1EF9043F0092518D /* ViewController.h */, 166 | 1834C87F1EF9043F0092518D /* ViewController.m */, 167 | 1834C9361EF936DB0092518D /* Controller */, 168 | 1834C93B1EF936DB0092518D /* Cell */, 169 | 1834C9331EF936DB0092518D /* Catagory */, 170 | 1834C8811EF9043F0092518D /* Main.storyboard */, 171 | 1834C8841EF9043F0092518D /* Assets.xcassets */, 172 | 1834C8861EF9043F0092518D /* LaunchScreen.storyboard */, 173 | 1834C8891EF9043F0092518D /* Info.plist */, 174 | 1834C8781EF9043F0092518D /* Supporting Files */, 175 | ); 176 | path = WYPDFConverterOC; 177 | sourceTree = ""; 178 | }; 179 | 1834C8781EF9043F0092518D /* Supporting Files */ = { 180 | isa = PBXGroup; 181 | children = ( 182 | 1834C8791EF9043F0092518D /* main.m */, 183 | ); 184 | name = "Supporting Files"; 185 | sourceTree = ""; 186 | }; 187 | 1834C8911EF904400092518D /* WYPDFConverterOCTests */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | 1834C8921EF904400092518D /* WYPDFConverterOCTests.m */, 191 | 1834C8941EF904400092518D /* Info.plist */, 192 | ); 193 | path = WYPDFConverterOCTests; 194 | sourceTree = ""; 195 | }; 196 | 1834C89C1EF904400092518D /* WYPDFConverterOCUITests */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | 1834C89D1EF904400092518D /* WYPDFConverterOCUITests.m */, 200 | 1834C89F1EF904400092518D /* Info.plist */, 201 | ); 202 | path = WYPDFConverterOCUITests; 203 | sourceTree = ""; 204 | }; 205 | 1834C8E91EF917050092518D /* Resource */ = { 206 | isa = PBXGroup; 207 | children = ( 208 | 1834C9101EF918020092518D /* image */, 209 | 1834C8EA1EF917050092518D /* Document */, 210 | ); 211 | path = Resource; 212 | sourceTree = ""; 213 | }; 214 | 1834C8EA1EF917050092518D /* Document */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 18DAFE4B1EFCFAC100C889A0 /* 虎扑篮球.webarchive */, 218 | 1834C8EC1EF917050092518D /* excel操作大全.doc */, 219 | 1834C8ED1EF917050092518D /* H5,JS资源.txt */, 220 | 1834C8EE1EF917050092518D /* iOS.ppt */, 221 | 1834C8EF1EF917050092518D /* Page.pages */, 222 | 1834C8F01EF917050092518D /* Xcode快捷键.rtf */, 223 | 1834C8F11EF917050092518D /* 华为推荐书目.xls */, 224 | 1834C8F21EF917050092518D /* 大话Swift 3.0(上).key */, 225 | 1834C8F31EF917050092518D /* 抵押贷款.numbers */, 226 | ); 227 | path = Document; 228 | sourceTree = ""; 229 | }; 230 | 1834C9101EF918020092518D /* image */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | 1834C9111EF918020092518D /* image0.jpg */, 234 | 1834C9121EF918020092518D /* image1.jpg */, 235 | 1834C9131EF918020092518D /* image2.jpg */, 236 | 1834C9141EF918020092518D /* image3.jpg */, 237 | 1834C9421EF938DF0092518D /* image4.jpg */, 238 | 1834C9161EF918020092518D /* image5.jpg */, 239 | 1834C9171EF918020092518D /* image6.jpg */, 240 | 1834C9181EF918020092518D /* image7.jpg */, 241 | 1834C9191EF918020092518D /* image8.jpg */, 242 | ); 243 | path = image; 244 | sourceTree = ""; 245 | }; 246 | 1834C9231EF919300092518D /* WYPDFConverter */ = { 247 | isa = PBXGroup; 248 | children = ( 249 | 1834C9241EF919470092518D /* WYPDFConverter.h */, 250 | 1834C9251EF919470092518D /* WYPDFConverter.m */, 251 | 1834C9271EF919E60092518D /* UIWebView+WYFile.h */, 252 | 1834C9281EF919E60092518D /* UIWebView+WYFile.m */, 253 | ); 254 | path = WYPDFConverter; 255 | sourceTree = ""; 256 | }; 257 | 1834C9331EF936DB0092518D /* Catagory */ = { 258 | isa = PBXGroup; 259 | children = ( 260 | 1834C9341EF936DB0092518D /* UIViewController+ImagePicker.h */, 261 | 1834C9351EF936DB0092518D /* UIViewController+ImagePicker.m */, 262 | ); 263 | path = Catagory; 264 | sourceTree = ""; 265 | }; 266 | 1834C9361EF936DB0092518D /* Controller */ = { 267 | isa = PBXGroup; 268 | children = ( 269 | 1834C9371EF936DB0092518D /* WYImageViewController.h */, 270 | 1834C9381EF936DB0092518D /* WYImageViewController.m */, 271 | 1834C9391EF936DB0092518D /* WYWebViewController.h */, 272 | 1834C93A1EF936DB0092518D /* WYWebViewController.m */, 273 | 1823B7641F04A98B0077487A /* WYFilesViewController.h */, 274 | 1823B7651F04A98B0077487A /* WYFilesViewController.m */, 275 | ); 276 | path = Controller; 277 | sourceTree = ""; 278 | }; 279 | 1834C93B1EF936DB0092518D /* Cell */ = { 280 | isa = PBXGroup; 281 | children = ( 282 | 1834C93C1EF936DB0092518D /* WYImageCollectionViewCell.h */, 283 | 1834C93D1EF936DB0092518D /* WYImageCollectionViewCell.m */, 284 | ); 285 | path = Cell; 286 | sourceTree = ""; 287 | }; 288 | /* End PBXGroup section */ 289 | 290 | /* Begin PBXNativeTarget section */ 291 | 1834C8741EF9043F0092518D /* WYPDFConverterOC */ = { 292 | isa = PBXNativeTarget; 293 | buildConfigurationList = 1834C8A21EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOC" */; 294 | buildPhases = ( 295 | 1834C8711EF9043F0092518D /* Sources */, 296 | 1834C8721EF9043F0092518D /* Frameworks */, 297 | 1834C8731EF9043F0092518D /* Resources */, 298 | ); 299 | buildRules = ( 300 | ); 301 | dependencies = ( 302 | ); 303 | name = WYPDFConverterOC; 304 | productName = WYPDFConverterOC; 305 | productReference = 1834C8751EF9043F0092518D /* WYPDFConverterOC.app */; 306 | productType = "com.apple.product-type.application"; 307 | }; 308 | 1834C88D1EF904400092518D /* WYPDFConverterOCTests */ = { 309 | isa = PBXNativeTarget; 310 | buildConfigurationList = 1834C8A51EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOCTests" */; 311 | buildPhases = ( 312 | 1834C88A1EF904400092518D /* Sources */, 313 | 1834C88B1EF904400092518D /* Frameworks */, 314 | 1834C88C1EF904400092518D /* Resources */, 315 | ); 316 | buildRules = ( 317 | ); 318 | dependencies = ( 319 | 1834C8901EF904400092518D /* PBXTargetDependency */, 320 | ); 321 | name = WYPDFConverterOCTests; 322 | productName = WYPDFConverterOCTests; 323 | productReference = 1834C88E1EF904400092518D /* WYPDFConverterOCTests.xctest */; 324 | productType = "com.apple.product-type.bundle.unit-test"; 325 | }; 326 | 1834C8981EF904400092518D /* WYPDFConverterOCUITests */ = { 327 | isa = PBXNativeTarget; 328 | buildConfigurationList = 1834C8A81EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOCUITests" */; 329 | buildPhases = ( 330 | 1834C8951EF904400092518D /* Sources */, 331 | 1834C8961EF904400092518D /* Frameworks */, 332 | 1834C8971EF904400092518D /* Resources */, 333 | ); 334 | buildRules = ( 335 | ); 336 | dependencies = ( 337 | 1834C89B1EF904400092518D /* PBXTargetDependency */, 338 | ); 339 | name = WYPDFConverterOCUITests; 340 | productName = WYPDFConverterOCUITests; 341 | productReference = 1834C8991EF904400092518D /* WYPDFConverterOCUITests.xctest */; 342 | productType = "com.apple.product-type.bundle.ui-testing"; 343 | }; 344 | /* End PBXNativeTarget section */ 345 | 346 | /* Begin PBXProject section */ 347 | 1834C86D1EF9043F0092518D /* Project object */ = { 348 | isa = PBXProject; 349 | attributes = { 350 | LastUpgradeCheck = 0820; 351 | ORGANIZATIONNAME = "White-Young"; 352 | TargetAttributes = { 353 | 1834C8741EF9043F0092518D = { 354 | CreatedOnToolsVersion = 8.2.1; 355 | DevelopmentTeam = W4WU7Z59L3; 356 | ProvisioningStyle = Automatic; 357 | }; 358 | 1834C88D1EF904400092518D = { 359 | CreatedOnToolsVersion = 8.2.1; 360 | ProvisioningStyle = Automatic; 361 | TestTargetID = 1834C8741EF9043F0092518D; 362 | }; 363 | 1834C8981EF904400092518D = { 364 | CreatedOnToolsVersion = 8.2.1; 365 | ProvisioningStyle = Automatic; 366 | TestTargetID = 1834C8741EF9043F0092518D; 367 | }; 368 | }; 369 | }; 370 | buildConfigurationList = 1834C8701EF9043F0092518D /* Build configuration list for PBXProject "WYPDFConverterOC" */; 371 | compatibilityVersion = "Xcode 3.2"; 372 | developmentRegion = English; 373 | hasScannedForEncodings = 0; 374 | knownRegions = ( 375 | en, 376 | Base, 377 | ); 378 | mainGroup = 1834C86C1EF9043F0092518D; 379 | productRefGroup = 1834C8761EF9043F0092518D /* Products */; 380 | projectDirPath = ""; 381 | projectRoot = ""; 382 | targets = ( 383 | 1834C8741EF9043F0092518D /* WYPDFConverterOC */, 384 | 1834C88D1EF904400092518D /* WYPDFConverterOCTests */, 385 | 1834C8981EF904400092518D /* WYPDFConverterOCUITests */, 386 | ); 387 | }; 388 | /* End PBXProject section */ 389 | 390 | /* Begin PBXResourcesBuildPhase section */ 391 | 1834C8731EF9043F0092518D /* Resources */ = { 392 | isa = PBXResourcesBuildPhase; 393 | buildActionMask = 2147483647; 394 | files = ( 395 | 1834C8881EF9043F0092518D /* LaunchScreen.storyboard in Resources */, 396 | 1834C91F1EF918020092518D /* image5.jpg in Resources */, 397 | 1834C91C1EF918020092518D /* image2.jpg in Resources */, 398 | 1834C8851EF9043F0092518D /* Assets.xcassets in Resources */, 399 | 1834C9031EF917050092518D /* Xcode快捷键.rtf in Resources */, 400 | 1834C9221EF918020092518D /* image8.jpg in Resources */, 401 | 1834C9061EF917050092518D /* 抵押贷款.numbers in Resources */, 402 | 1834C91A1EF918020092518D /* image0.jpg in Resources */, 403 | 1834C9001EF917050092518D /* H5,JS资源.txt in Resources */, 404 | 1834C91B1EF918020092518D /* image1.jpg in Resources */, 405 | 1834C9211EF918020092518D /* image7.jpg in Resources */, 406 | 1834C8FF1EF917050092518D /* excel操作大全.doc in Resources */, 407 | 1834C9201EF918020092518D /* image6.jpg in Resources */, 408 | 1834C9021EF917050092518D /* Page.pages in Resources */, 409 | 18DAFE4C1EFCFAC100C889A0 /* 虎扑篮球.webarchive in Resources */, 410 | 1834C9011EF917050092518D /* iOS.ppt in Resources */, 411 | 1834C9051EF917050092518D /* 大话Swift 3.0(上).key in Resources */, 412 | 1834C9431EF938DF0092518D /* image4.jpg in Resources */, 413 | 1834C8831EF9043F0092518D /* Main.storyboard in Resources */, 414 | 1834C9041EF917050092518D /* 华为推荐书目.xls in Resources */, 415 | 1834C91D1EF918020092518D /* image3.jpg in Resources */, 416 | ); 417 | runOnlyForDeploymentPostprocessing = 0; 418 | }; 419 | 1834C88C1EF904400092518D /* Resources */ = { 420 | isa = PBXResourcesBuildPhase; 421 | buildActionMask = 2147483647; 422 | files = ( 423 | ); 424 | runOnlyForDeploymentPostprocessing = 0; 425 | }; 426 | 1834C8971EF904400092518D /* Resources */ = { 427 | isa = PBXResourcesBuildPhase; 428 | buildActionMask = 2147483647; 429 | files = ( 430 | ); 431 | runOnlyForDeploymentPostprocessing = 0; 432 | }; 433 | /* End PBXResourcesBuildPhase section */ 434 | 435 | /* Begin PBXSourcesBuildPhase section */ 436 | 1834C8711EF9043F0092518D /* Sources */ = { 437 | isa = PBXSourcesBuildPhase; 438 | buildActionMask = 2147483647; 439 | files = ( 440 | 1834C93E1EF936DB0092518D /* UIViewController+ImagePicker.m in Sources */, 441 | 1834C8801EF9043F0092518D /* ViewController.m in Sources */, 442 | 1823B7661F04A98B0077487A /* WYFilesViewController.m in Sources */, 443 | 1834C87D1EF9043F0092518D /* AppDelegate.m in Sources */, 444 | 1834C9291EF919E60092518D /* UIWebView+WYFile.m in Sources */, 445 | 1834C93F1EF936DB0092518D /* WYImageViewController.m in Sources */, 446 | 1834C9401EF936DB0092518D /* WYWebViewController.m in Sources */, 447 | 1834C9411EF936DB0092518D /* WYImageCollectionViewCell.m in Sources */, 448 | 1834C9261EF919470092518D /* WYPDFConverter.m in Sources */, 449 | 1834C87A1EF9043F0092518D /* main.m in Sources */, 450 | ); 451 | runOnlyForDeploymentPostprocessing = 0; 452 | }; 453 | 1834C88A1EF904400092518D /* Sources */ = { 454 | isa = PBXSourcesBuildPhase; 455 | buildActionMask = 2147483647; 456 | files = ( 457 | 1834C8931EF904400092518D /* WYPDFConverterOCTests.m in Sources */, 458 | ); 459 | runOnlyForDeploymentPostprocessing = 0; 460 | }; 461 | 1834C8951EF904400092518D /* Sources */ = { 462 | isa = PBXSourcesBuildPhase; 463 | buildActionMask = 2147483647; 464 | files = ( 465 | 1834C89E1EF904400092518D /* WYPDFConverterOCUITests.m in Sources */, 466 | ); 467 | runOnlyForDeploymentPostprocessing = 0; 468 | }; 469 | /* End PBXSourcesBuildPhase section */ 470 | 471 | /* Begin PBXTargetDependency section */ 472 | 1834C8901EF904400092518D /* PBXTargetDependency */ = { 473 | isa = PBXTargetDependency; 474 | target = 1834C8741EF9043F0092518D /* WYPDFConverterOC */; 475 | targetProxy = 1834C88F1EF904400092518D /* PBXContainerItemProxy */; 476 | }; 477 | 1834C89B1EF904400092518D /* PBXTargetDependency */ = { 478 | isa = PBXTargetDependency; 479 | target = 1834C8741EF9043F0092518D /* WYPDFConverterOC */; 480 | targetProxy = 1834C89A1EF904400092518D /* PBXContainerItemProxy */; 481 | }; 482 | /* End PBXTargetDependency section */ 483 | 484 | /* Begin PBXVariantGroup section */ 485 | 1834C8811EF9043F0092518D /* Main.storyboard */ = { 486 | isa = PBXVariantGroup; 487 | children = ( 488 | 1834C8821EF9043F0092518D /* Base */, 489 | ); 490 | name = Main.storyboard; 491 | sourceTree = ""; 492 | }; 493 | 1834C8861EF9043F0092518D /* LaunchScreen.storyboard */ = { 494 | isa = PBXVariantGroup; 495 | children = ( 496 | 1834C8871EF9043F0092518D /* Base */, 497 | ); 498 | name = LaunchScreen.storyboard; 499 | sourceTree = ""; 500 | }; 501 | /* End PBXVariantGroup section */ 502 | 503 | /* Begin XCBuildConfiguration section */ 504 | 1834C8A01EF904400092518D /* Debug */ = { 505 | isa = XCBuildConfiguration; 506 | buildSettings = { 507 | ALWAYS_SEARCH_USER_PATHS = NO; 508 | CLANG_ANALYZER_NONNULL = YES; 509 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 510 | CLANG_CXX_LIBRARY = "libc++"; 511 | CLANG_ENABLE_MODULES = YES; 512 | CLANG_ENABLE_OBJC_ARC = YES; 513 | CLANG_WARN_BOOL_CONVERSION = YES; 514 | CLANG_WARN_CONSTANT_CONVERSION = YES; 515 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 516 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 517 | CLANG_WARN_EMPTY_BODY = YES; 518 | CLANG_WARN_ENUM_CONVERSION = YES; 519 | CLANG_WARN_INFINITE_RECURSION = YES; 520 | CLANG_WARN_INT_CONVERSION = YES; 521 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 522 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 523 | CLANG_WARN_UNREACHABLE_CODE = YES; 524 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 525 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 526 | COPY_PHASE_STRIP = NO; 527 | DEBUG_INFORMATION_FORMAT = dwarf; 528 | ENABLE_STRICT_OBJC_MSGSEND = YES; 529 | ENABLE_TESTABILITY = YES; 530 | GCC_C_LANGUAGE_STANDARD = gnu99; 531 | GCC_DYNAMIC_NO_PIC = NO; 532 | GCC_NO_COMMON_BLOCKS = YES; 533 | GCC_OPTIMIZATION_LEVEL = 0; 534 | GCC_PREPROCESSOR_DEFINITIONS = ( 535 | "DEBUG=1", 536 | "$(inherited)", 537 | ); 538 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 539 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 540 | GCC_WARN_UNDECLARED_SELECTOR = YES; 541 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 542 | GCC_WARN_UNUSED_FUNCTION = YES; 543 | GCC_WARN_UNUSED_VARIABLE = YES; 544 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 545 | MTL_ENABLE_DEBUG_INFO = YES; 546 | ONLY_ACTIVE_ARCH = YES; 547 | SDKROOT = iphoneos; 548 | }; 549 | name = Debug; 550 | }; 551 | 1834C8A11EF904400092518D /* Release */ = { 552 | isa = XCBuildConfiguration; 553 | buildSettings = { 554 | ALWAYS_SEARCH_USER_PATHS = NO; 555 | CLANG_ANALYZER_NONNULL = YES; 556 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 557 | CLANG_CXX_LIBRARY = "libc++"; 558 | CLANG_ENABLE_MODULES = YES; 559 | CLANG_ENABLE_OBJC_ARC = YES; 560 | CLANG_WARN_BOOL_CONVERSION = YES; 561 | CLANG_WARN_CONSTANT_CONVERSION = YES; 562 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 563 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 564 | CLANG_WARN_EMPTY_BODY = YES; 565 | CLANG_WARN_ENUM_CONVERSION = YES; 566 | CLANG_WARN_INFINITE_RECURSION = YES; 567 | CLANG_WARN_INT_CONVERSION = YES; 568 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 569 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 570 | CLANG_WARN_UNREACHABLE_CODE = YES; 571 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 572 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 573 | COPY_PHASE_STRIP = NO; 574 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 575 | ENABLE_NS_ASSERTIONS = NO; 576 | ENABLE_STRICT_OBJC_MSGSEND = YES; 577 | GCC_C_LANGUAGE_STANDARD = gnu99; 578 | GCC_NO_COMMON_BLOCKS = YES; 579 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 580 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 581 | GCC_WARN_UNDECLARED_SELECTOR = YES; 582 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 583 | GCC_WARN_UNUSED_FUNCTION = YES; 584 | GCC_WARN_UNUSED_VARIABLE = YES; 585 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 586 | MTL_ENABLE_DEBUG_INFO = NO; 587 | SDKROOT = iphoneos; 588 | VALIDATE_PRODUCT = YES; 589 | }; 590 | name = Release; 591 | }; 592 | 1834C8A31EF904400092518D /* Debug */ = { 593 | isa = XCBuildConfiguration; 594 | buildSettings = { 595 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 596 | DEVELOPMENT_TEAM = W4WU7Z59L3; 597 | INFOPLIST_FILE = WYPDFConverterOC/Info.plist; 598 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 599 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOC; 600 | PRODUCT_NAME = "$(TARGET_NAME)"; 601 | }; 602 | name = Debug; 603 | }; 604 | 1834C8A41EF904400092518D /* Release */ = { 605 | isa = XCBuildConfiguration; 606 | buildSettings = { 607 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 608 | DEVELOPMENT_TEAM = W4WU7Z59L3; 609 | INFOPLIST_FILE = WYPDFConverterOC/Info.plist; 610 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 611 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOC; 612 | PRODUCT_NAME = "$(TARGET_NAME)"; 613 | }; 614 | name = Release; 615 | }; 616 | 1834C8A61EF904400092518D /* Debug */ = { 617 | isa = XCBuildConfiguration; 618 | buildSettings = { 619 | BUNDLE_LOADER = "$(TEST_HOST)"; 620 | INFOPLIST_FILE = WYPDFConverterOCTests/Info.plist; 621 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 622 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOCTests; 623 | PRODUCT_NAME = "$(TARGET_NAME)"; 624 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WYPDFConverterOC.app/WYPDFConverterOC"; 625 | }; 626 | name = Debug; 627 | }; 628 | 1834C8A71EF904400092518D /* Release */ = { 629 | isa = XCBuildConfiguration; 630 | buildSettings = { 631 | BUNDLE_LOADER = "$(TEST_HOST)"; 632 | INFOPLIST_FILE = WYPDFConverterOCTests/Info.plist; 633 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 634 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOCTests; 635 | PRODUCT_NAME = "$(TARGET_NAME)"; 636 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WYPDFConverterOC.app/WYPDFConverterOC"; 637 | }; 638 | name = Release; 639 | }; 640 | 1834C8A91EF904400092518D /* Debug */ = { 641 | isa = XCBuildConfiguration; 642 | buildSettings = { 643 | INFOPLIST_FILE = WYPDFConverterOCUITests/Info.plist; 644 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 645 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOCUITests; 646 | PRODUCT_NAME = "$(TARGET_NAME)"; 647 | TEST_TARGET_NAME = WYPDFConverterOC; 648 | }; 649 | name = Debug; 650 | }; 651 | 1834C8AA1EF904400092518D /* Release */ = { 652 | isa = XCBuildConfiguration; 653 | buildSettings = { 654 | INFOPLIST_FILE = WYPDFConverterOCUITests/Info.plist; 655 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 656 | PRODUCT_BUNDLE_IDENTIFIER = WhiteYoung.WYPDFConverterOCUITests; 657 | PRODUCT_NAME = "$(TARGET_NAME)"; 658 | TEST_TARGET_NAME = WYPDFConverterOC; 659 | }; 660 | name = Release; 661 | }; 662 | /* End XCBuildConfiguration section */ 663 | 664 | /* Begin XCConfigurationList section */ 665 | 1834C8701EF9043F0092518D /* Build configuration list for PBXProject "WYPDFConverterOC" */ = { 666 | isa = XCConfigurationList; 667 | buildConfigurations = ( 668 | 1834C8A01EF904400092518D /* Debug */, 669 | 1834C8A11EF904400092518D /* Release */, 670 | ); 671 | defaultConfigurationIsVisible = 0; 672 | defaultConfigurationName = Release; 673 | }; 674 | 1834C8A21EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOC" */ = { 675 | isa = XCConfigurationList; 676 | buildConfigurations = ( 677 | 1834C8A31EF904400092518D /* Debug */, 678 | 1834C8A41EF904400092518D /* Release */, 679 | ); 680 | defaultConfigurationIsVisible = 0; 681 | defaultConfigurationName = Release; 682 | }; 683 | 1834C8A51EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOCTests" */ = { 684 | isa = XCConfigurationList; 685 | buildConfigurations = ( 686 | 1834C8A61EF904400092518D /* Debug */, 687 | 1834C8A71EF904400092518D /* Release */, 688 | ); 689 | defaultConfigurationIsVisible = 0; 690 | defaultConfigurationName = Release; 691 | }; 692 | 1834C8A81EF904400092518D /* Build configuration list for PBXNativeTarget "WYPDFConverterOCUITests" */ = { 693 | isa = XCConfigurationList; 694 | buildConfigurations = ( 695 | 1834C8A91EF904400092518D /* Debug */, 696 | 1834C8AA1EF904400092518D /* Release */, 697 | ); 698 | defaultConfigurationIsVisible = 0; 699 | defaultConfigurationName = Release; 700 | }; 701 | /* End XCConfigurationList section */ 702 | }; 703 | rootObject = 1834C86D1EF9043F0092518D /* Project object */; 704 | } 705 | --------------------------------------------------------------------------------