diff options
author | Marino Faggiana <m.faggiana@twsweb.it> | 2018-11-12 13:25:57 +0300 |
---|---|---|
committer | Marino Faggiana <marinofaggiana@MacBook-Pro-di-Marino.local> | 2018-11-12 13:25:57 +0300 |
commit | 5905b007c42cf594c644b643ad7df9cf40c78286 (patch) | |
tree | 115f2921516c8576c4db0c742b110d0994fe42f5 /Libraries external | |
parent | afa295eea14a3e527f473a50ac9e01744beb1225 (diff) |
update project
Diffstat (limited to 'Libraries external')
-rwxr-xr-x | Libraries external/PDFGenerator/DPIType.swift | 34 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/FilePathConvertible.swift | 36 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFGenerateError.swift | 39 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFGenerator.h | 19 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFGenerator.swift | 290 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFPage.swift | 77 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFPageRenderable.swift | 149 | ||||
-rwxr-xr-x | Libraries external/PDFGenerator/PDFPassword.swift | 67 |
8 files changed, 0 insertions, 711 deletions
diff --git a/Libraries external/PDFGenerator/DPIType.swift b/Libraries external/PDFGenerator/DPIType.swift deleted file mode 100755 index f41deadcd..000000000 --- a/Libraries external/PDFGenerator/DPIType.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// DPIType.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/06/21. -// -// - -import Foundation -import UIKit - -public enum DPIType { - fileprivate static let defaultDpi: CGFloat = 72.0 - case `default` - case dpi_300 - case custom(CGFloat) - - public var value: CGFloat { - switch self { - case .default: - return type(of: self).defaultDpi - case .dpi_300: - return 300.0 - case .custom(let value) where value > 1.0: - return value - default: - return DPIType.default.value - } - } - - public var scaleFactor: CGFloat { - return self.value / DPIType.default.value - } -} diff --git a/Libraries external/PDFGenerator/FilePathConvertible.swift b/Libraries external/PDFGenerator/FilePathConvertible.swift deleted file mode 100755 index 396c0794b..000000000 --- a/Libraries external/PDFGenerator/FilePathConvertible.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// FilePathConvertible.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 7/23/16. -// -// - -import Foundation - -public protocol FilePathConvertible { - var url: URL { get } - var path: String { get } -} - -extension FilePathConvertible { - var isEmptyPath: Bool { - return path.isEmpty - } -} - -extension String: FilePathConvertible { - public var url: URL { - return URL(fileURLWithPath: self) - } - - public var path: String { - return self - } -} - -extension URL: FilePathConvertible { - public var url: URL { - return self - } -} diff --git a/Libraries external/PDFGenerator/PDFGenerateError.swift b/Libraries external/PDFGenerator/PDFGenerateError.swift deleted file mode 100755 index e6c23258c..000000000 --- a/Libraries external/PDFGenerator/PDFGenerateError.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// PDFGenerateError.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/06/21. -// -// - -import Foundation - -/** - PDFGenerateError - - - ZeroSizeView: View's size is (0, 0) - - ImageLoadFailed: Image has not been loaded from image path. - - EmptyOutputPath: Output path is empty. - - EmptyPage: Create PDF from no pages. - - InvalidContext: If UIGraphicsGetCurrentContext returns nil. - - InvalidPassword: If password cannot covert ASCII text. - - TooLongPassword: If password too long - */ -public enum PDFGenerateError: Error { - /// View's size is (0, 0) - case zeroSizeView(UIView) - /// Image has not been loaded from image path. - case imageLoadFailed(Any) - /// Output path is empty - case emptyOutputPath - /// Attempt to create empty PDF. (no pages.) - case emptyPage - /// If UIGraphicsGetCurrentContext returns nil. - case invalidContext - /// If rendering scale factor is zero. - case invalidScaleFactor - /// If password cannot covert ASCII text. - case invalidPassword(String) - /// If password too long - case tooLongPassword(Int) -} diff --git a/Libraries external/PDFGenerator/PDFGenerator.h b/Libraries external/PDFGenerator/PDFGenerator.h deleted file mode 100755 index 9264b13c3..000000000 --- a/Libraries external/PDFGenerator/PDFGenerator.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// PDFGenerator.h -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/02/04. -// -// - -#import <UIKit/UIKit.h> - -//! Project version number for PDFGenerator. -FOUNDATION_EXPORT double PDFGeneratorVersionNumber; - -//! Project version string for PDFGenerator. -FOUNDATION_EXPORT const unsigned char PDFGeneratorVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import <PDFGenerator/PublicHeader.h> - - diff --git a/Libraries external/PDFGenerator/PDFGenerator.swift b/Libraries external/PDFGenerator/PDFGenerator.swift deleted file mode 100755 index 8d51b8144..000000000 --- a/Libraries external/PDFGenerator/PDFGenerator.swift +++ /dev/null @@ -1,290 +0,0 @@ -// -// PDFGenerator.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/02/04. -// -// - -import Foundation -import UIKit - -/// PDFGenerator -public final class PDFGenerator { - fileprivate typealias Process = () throws -> Void - - /// Avoid creating instance. - fileprivate init() {} - - /** - Generate from page object. - - - parameter page: A `PDFPage`'s object. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ page: PDFPage, to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate([page], to: path, dpi: dpi, password: password) - } - - /** - Generate from page objects. - - - parameter pages: Array of `PDFPage`'s objects. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ pages: [PDFPage], to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - guard !pages.isEmpty else { - throw PDFGenerateError.emptyPage - } - guard !path.isEmptyPath else { - throw PDFGenerateError.emptyOutputPath - } - do { - try render(to: path, password: password) { - try render(pages, dpi: dpi) - } - } catch let error { - _ = try? FileManager.default.removeItem(at: path.url) - throw error - } - } - - /** - Generate from view. - - - parameter view: A view - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ view: UIView, to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate([view], to: path, dpi: dpi, password: password) - } - - /** - Generate from views. - - - parameter views: Array of views. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ views: [UIView], to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate(PDFPage.pages(views), to: path, dpi: dpi, password: password) - } - - /** - Generate from image. - - - parameter image: An image. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ image: UIImage, to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate([image], to: path, dpi: dpi, password: password) - } - - /** - Generate from images. - - - parameter images: Array of images. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ images: [UIImage], to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate(PDFPage.pages(images), to: path, dpi: dpi, password: password) - } - - /** - Generate from image path. - - - parameter imagePath: An image path. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ imagePath: String, to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate([imagePath], to: path, dpi: dpi, password: password) - } - - /** - Generate from image paths. - - - parameter imagePaths: Arrat of image paths. - - parameter outputPath: An outputPath to save PDF. - - - throws: A `PDFGenerateError` thrown if some error occurred. - */ - public class func generate(_ imagePaths: [String], to path: FilePathConvertible, dpi: DPIType = .default, password: PDFPassword = "") throws { - try generate(PDFPage.pages(imagePaths), to: path, dpi: dpi, password: password) - } - - /** - Generate from page object. - - - parameter page: A `PDFPage`'s object. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by page: PDFPage, dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: [page], dpi: dpi, password: password) - } - - /** - Generate from page objects. - - - parameter pages: Array of `PDFPage`'s objects. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by pages: [PDFPage], dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - guard !pages.isEmpty else { - throw PDFGenerateError.emptyPage - } - return try rendered(with: password) { try render(pages, dpi: dpi) } - } - - /** - Generate from view. - - - parameter view: A view - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by view: UIView, dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: [view], dpi: dpi, password: password) - } - - /** - Generate from views. - - - parameter views: Array of views. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by views: [UIView], dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: PDFPage.pages(views), dpi: dpi, password: password) - } - - /** - Generate from image. - - - parameter image: An image. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by image: UIImage, dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: [image], dpi: dpi, password: password) - } - - /** - Generate from images. - - - parameter images: Array of images. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by images: [UIImage], dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: PDFPage.pages(images), dpi: dpi, password: password) - } - - /** - Generate from image path. - - - parameter imagePath: An image path. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by imagePath: String, dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: [imagePath], dpi: dpi, password: password) - } - - /** - Generate from image paths. - - - parameter imagePaths: Arrat of image paths. - - - throws: A `PDFGenerateError` thrown if some error occurred. - - - returns: PDF's binary data (NSData) - */ - - public class func generated(by imagePaths: [String], dpi: DPIType = .default, password: PDFPassword = "") throws -> Data { - return try generated(by: PDFPage.pages(imagePaths), dpi: dpi, password: password) - } -} - -// MARK: Private Extension - -/// PDFGenerator private extensions (render processes) -private extension PDFGenerator { - class func render(_ page: PDFPage, dpi: DPIType) throws { - let scaleFactor = dpi.scaleFactor - - try autoreleasepool { - switch page { - case .whitePage(let size): - let view = UIView(frame: CGRect(origin: .zero, size: size)) - view.backgroundColor = .white - try view.renderPDFPage(scaleFactor: scaleFactor) - case .view(let view): - try view.renderPDFPage(scaleFactor: scaleFactor) - case .image(let image): - try image.asUIImage().renderPDFPage(scaleFactor: scaleFactor) - case .imagePath(let ip): - try ip.asUIImage().renderPDFPage(scaleFactor: scaleFactor) - case .binary(let data): - try data.asUIImage().renderPDFPage(scaleFactor: scaleFactor) - case .imageRef(let cgImage): - try cgImage.asUIImage().renderPDFPage(scaleFactor: scaleFactor) - } - } - } - - class func render(_ pages: [PDFPage], dpi: DPIType) throws { - try pages.forEach { try render($0, dpi: dpi) } - } - - class func render(to path: FilePathConvertible, password: PDFPassword, process: Process) rethrows { - try { try password.verify() }() - UIGraphicsBeginPDFContextToFile(path.path, .zero, password.toDocumentInfo()) - try process() - UIGraphicsEndPDFContext() - } - - class func rendered(with password: PDFPassword, process: Process) rethrows -> Data { - try { try password.verify() }() - let data = NSMutableData() - UIGraphicsBeginPDFContextToData(data, .zero, password.toDocumentInfo()) - try process() - UIGraphicsEndPDFContext() - return data as Data - } -} diff --git a/Libraries external/PDFGenerator/PDFPage.swift b/Libraries external/PDFGenerator/PDFPage.swift deleted file mode 100755 index db8547bbb..000000000 --- a/Libraries external/PDFGenerator/PDFPage.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// PDFPage.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/06/21. -// -// - -import Foundation -import UIKit - -/** - PDF page model. - - - WhitePage: A white view (CGSize) - - View: A view. (UIView) - - Image: An image (UIImage) - - ImagePath: ImagePath: An image path (String) - - Binary: Binary data (NSData) - - ImageRef: Image ref (CGImage) - */ -public enum PDFPage { - /// A white view (CGSize) - case whitePage(CGSize) - /// A view. (UIView) - case view(UIView) - /// An image (UIImage) - case image(UIImage) - /// ImagePath: An image path (String) - case imagePath(String) - /// Binary data (NSData) - case binary(Data) - /// Image ref (CGImage) - case imageRef(CGImage) - - /** - Convert views to PDFPage models. - - - parameter views: Array of `UIVIew` - - - returns: Array of `PDFPage` - */ - static func pages(_ views: [UIView]) -> [PDFPage] { - return views.map { .view($0) } - } - - /** - Convert images to PDFPage models. - - - parameter views: Array of `UIImage` - - - returns: Array of `PDFPage` - */ - static func pages(_ images: [UIImage]) -> [PDFPage] { - return images.map { .image($0) } - } - - /** - Convert image path to PDFPage models. - - - parameter views: Array of `String`(image path) - - - returns: Array of `PDFPage` - */ - static func pages(_ imagePaths: [String]) -> [PDFPage] { - return imagePaths.map { .imagePath($0) } - } -} - -/// PDF page size (pixel, 72dpi) -public struct PDFPageSize { - fileprivate init() {} - /// A4 - public static let A4 = CGSize(width: 595.0, height: 842.0) - /// B5 - public static let B5 = CGSize(width: 516.0, height: 729.0) -} diff --git a/Libraries external/PDFGenerator/PDFPageRenderable.swift b/Libraries external/PDFGenerator/PDFPageRenderable.swift deleted file mode 100755 index 5d87c200b..000000000 --- a/Libraries external/PDFGenerator/PDFPageRenderable.swift +++ /dev/null @@ -1,149 +0,0 @@ -// -// PDFPageRenderable.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/02/10. -// -// - -import Foundation -import UIKit -import WebKit - -protocol PDFPageRenderable { - func renderPDFPage(scaleFactor: CGFloat) throws -} - -private extension UIScrollView { - typealias TempInfo = (frame: CGRect, offset: CGPoint, inset: UIEdgeInsets) - - var tempInfo: TempInfo { - return (frame, contentOffset, contentInset) - } - - func transformForRender() { - contentOffset = .zero - contentInset = UIEdgeInsets.zero - frame = CGRect(origin: .zero, size: contentSize) - } - - func restore(_ info: TempInfo) { - frame = info.frame - contentOffset = info.offset - contentInset = info.inset - } - -} - -extension UIView: PDFPageRenderable { - fileprivate func _render<T: UIView>(_ view: T, scaleFactor: CGFloat, completion: (T) -> Void = { _ in }) throws { - guard scaleFactor > 0.0 else { - throw PDFGenerateError.invalidScaleFactor - } - - let size = getPageSize() - guard size.width > 0 && size.height > 0 else { - throw PDFGenerateError.zeroSizeView(self) - } - guard let context = UIGraphicsGetCurrentContext() else { - throw PDFGenerateError.invalidContext - } - - let renderFrame = CGRect(origin: .zero, size: CGSize(width: size.width * scaleFactor, height: size.height * scaleFactor)) - autoreleasepool { - let superView = view.superview - view.removeFromSuperview() - UIGraphicsBeginPDFPageWithInfo(renderFrame, nil) - view.layer.render(in: context) - superView?.addSubview(view) - superView?.layoutIfNeeded() - completion(view) - } - } - - func renderPDFPage(scaleFactor: CGFloat) throws { - func renderScrollView(_ scrollView: UIScrollView) throws { - let tmp = scrollView.tempInfo - scrollView.transformForRender() - try _render(scrollView, scaleFactor: scaleFactor) { scrollView in - scrollView.restore(tmp) - } - } - - if let webView = self as? UIWebView { - try renderScrollView(webView.scrollView) - } else if let webView = self as? WKWebView { - try renderScrollView(webView.scrollView) - } else if let scrollView = self as? UIScrollView { - try renderScrollView(scrollView) - } else { - try _render(self, scaleFactor: scaleFactor) - } - } - - fileprivate func getPageSize() -> CGSize { - switch self { - case (let webView as UIWebView): - return webView.scrollView.contentSize - case (let webView as WKWebView): - return webView.scrollView.contentSize - case (let scrollView as UIScrollView): - return scrollView.contentSize - default: - return self.frame.size - } - } -} - -extension UIImage: PDFPageRenderable { - func renderPDFPage(scaleFactor: CGFloat) throws { - guard scaleFactor > 0.0 else { - throw PDFGenerateError.invalidScaleFactor - } - autoreleasepool { - let bounds = CGRect( - origin: .zero, - size: CGSize( - width: size.width * scaleFactor, - height: size.height * scaleFactor - ) - ) - UIGraphicsBeginPDFPageWithInfo(bounds, nil) - draw(in: bounds) - } - } -} - -protocol UIImageConvertible { - func asUIImage() throws -> UIImage -} - -extension UIImage: UIImageConvertible { - func asUIImage() throws -> UIImage { - return self - } -} - -extension String: UIImageConvertible { - func asUIImage() throws -> UIImage { - guard let image = UIImage(contentsOfFile: self) else{ - throw PDFGenerateError.imageLoadFailed(self) - } - return image - } -} - -extension Data: UIImageConvertible { - func asUIImage() throws -> UIImage { - guard let image = UIImage(data: self) else { - throw PDFGenerateError.imageLoadFailed(self) - } - return image - } -} - -extension CGImage: UIImageConvertible { - func asUIImage() throws -> UIImage { - return UIImage(cgImage: self) - } -} diff --git a/Libraries external/PDFGenerator/PDFPassword.swift b/Libraries external/PDFGenerator/PDFPassword.swift deleted file mode 100755 index a863d8dfa..000000000 --- a/Libraries external/PDFGenerator/PDFPassword.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// PDFPassword.swift -// PDFGenerator -// -// Created by Suguru Kishimoto on 2016/07/08. -// -// - -import Foundation -import UIKit - -public struct PDFPassword { - static let NoPassword = "" - fileprivate static let PasswordLengthMax = 32 - let userPassword: String - let ownerPassword: String - - public init(user userPassword: String, owner ownerPassword: String) { - self.userPassword = userPassword - self.ownerPassword = ownerPassword - } - - public init(_ password: String) { - self.init(user: password, owner: password) - } - - func toDocumentInfo() -> [AnyHashable : Any] { - var info: [AnyHashable : Any] = [:] - if userPassword != type(of: self).NoPassword { - info[String(kCGPDFContextUserPassword)] = userPassword - } - if ownerPassword != type(of: self).NoPassword { - info[String(kCGPDFContextOwnerPassword)] = ownerPassword - } - return info - } - - func verify() throws { - guard userPassword.canBeConverted(to: String.Encoding.ascii) else { - throw PDFGenerateError.invalidPassword(userPassword) - } - guard userPassword.count <= type(of: self).PasswordLengthMax else { - throw PDFGenerateError.tooLongPassword(userPassword.count) - } - - guard ownerPassword.canBeConverted(to: String.Encoding.ascii) else { - throw PDFGenerateError.invalidPassword(ownerPassword) - } - guard ownerPassword.count <= type(of: self).PasswordLengthMax else { - throw PDFGenerateError.tooLongPassword(ownerPassword.count) - } - } -} - -extension PDFPassword: ExpressibleByStringLiteral { - public init(unicodeScalarLiteral value: String) { - self.init(value) - } - - public init(extendedGraphemeClusterLiteral value: String) { - self.init(value) - } - - public init(stringLiteral value: String) { - self.init(value) - } -} |