├── CartFile ├── Demo-Carthage ├── .gitignore ├── CartFile ├── Cartfile.resolved ├── IRLPDFScanDemo │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.swift │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── SceneDelegate.swift ├── IRLPDFScanDemo.xcodeproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Configuration │ └── SampleCode.xcconfig ├── docs ├── CNAME ├── favicon.ico ├── images │ ├── Icon.png │ └── scan.jpg ├── index │ ├── data.mdb │ ├── lock.mdb │ ├── navigator.index │ └── availability.index ├── metadata.json ├── img │ ├── deprecated-icon.3eb10b87.svg │ ├── added-icon.96de1ebf.svg │ └── modified-icon.5d49bcfe.svg ├── index.html ├── js │ ├── highlight-js-json.471128d2.js │ ├── highlight-js-diff.672514df.js │ ├── highlight-js-http.ec39e120.js │ ├── highlight-js-markdown.451c845b.js │ ├── highlight-js-bash.85a55401.js │ ├── highlight-js-xml.784eb41b.js │ ├── highlight-js-java.a814d7f9.js │ ├── highlight-js-llvm.ddaa176e.js │ ├── highlight-js-objectivec.bcdf5156.js │ ├── highlight-js-custom-markdown.fb3d4662.js │ ├── highlight-js-ruby.fb547e8d.js │ ├── highlight-js-c.99b899e6.js │ ├── highlight-js-php.cc8d6c27.js │ ├── highlight-js-python.b6226703.js │ └── highlight-js-perl.b3c5d3f2.js ├── favicon.svg ├── theme-settings.json ├── data │ └── documentation │ │ └── irlpdfscancontent │ │ ├── irlpdfscancontent │ │ ├── observableobject-implementations.json │ │ ├── defaultpdfname.json │ │ └── documentcameraviewcontrollerdidcancel(_:).json │ │ └── irlpdfview │ │ ├── url.json │ │ ├── document.json │ │ ├── init(url:).json │ │ ├── pdfview.json │ │ ├── labelshidden().json │ │ ├── body.json │ │ ├── hidden().json │ │ ├── fixedsize().json │ │ ├── init(document:pdfview:).json │ │ ├── unredacted().json │ │ ├── colorinvert().json │ │ ├── scaledtofit().json │ │ └── scaledtofill().json ├── tutorial │ └── index.html └── documentation │ └── index.html ├── Icon.png ├── documentationicon.png ├── Demo ├── IRLScanDemo │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── Info.plist │ ├── IRLScanDemoApp.swift │ └── ContentView.swift ├── Configuration │ └── SampleCode.xcconfig └── .gitignore ├── Demo-Cocoapods ├── IRLPDFScanDemo │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── ViewController.swift │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── SceneDelegate.swift ├── Podfile ├── IRLPDFScanDemo.xcodeproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Podfile.lock └── Configuration │ └── SampleCode.xcconfig ├── Sources └── IRLPDFScanContent │ ├── IRLPDFScanContent.docc │ ├── Resources │ │ ├── scan.jpg │ │ └── code-files │ │ │ ├── Icon.png │ │ │ ├── 00-Info.plist │ │ │ ├── 2-ViewController.swift │ │ │ ├── 3-ViewController.swift │ │ │ ├── 01-Info.plist │ │ │ ├── 1-ContentView.swift │ │ │ ├── 4-ViewController.swift │ │ │ ├── 5-ViewController.swift │ │ │ ├── 2-ContentView.swift │ │ │ ├── 6-ViewController.swift │ │ │ ├── 3-ContentView.swift │ │ │ ├── Migration-4.swift │ │ │ ├── 4-ContentView.swift │ │ │ ├── Migration-3.swift │ │ │ ├── 7-ViewController.swift │ │ │ ├── 5-ContentView.swift │ │ │ ├── 8-ViewController.swift │ │ │ ├── Migration-5.swift │ │ │ ├── FINAL-ContentView.swift │ │ │ ├── Migration-6.swift │ │ │ ├── Migration-7.swift │ │ │ ├── Migration-FINAL.swift │ │ │ ├── 9-ViewController.swift │ │ │ ├── FINAL-ViewController.swift │ │ │ ├── Migration-1.swift │ │ │ └── Migration-2.swift │ ├── Extension.md │ ├── SwiftUI.md │ ├── Tutuorials │ │ ├── Tutorial Table of Contents.tutorial │ │ └── SwiftUI IRLPDFScanContent.tutorial │ ├── About.md │ ├── Documentation.md │ ├── ClassicalDelegate.md │ └── GettingStarted.md │ ├── Internal │ ├── IRLPDFScanContent+Internal.swift │ └── IRLScannerViewControllerDelegation.swift │ ├── Exports.swift │ ├── IRLPDFScanContent+VNDocumentCameraViewControllerDelegate.swift │ ├── IRLPDFView.swift │ └── IRLPDFScanContentProtocol.swift ├── IRLPDFScanContent.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ └── IRLPDFScanContent.xcscheme ├── Package.swift ├── SECURITY.md ├── IRLPDFScanContent └── IRLPDFScanContent.h ├── CHANGELOG.md ├── LICENSE ├── LICENSE.txt ├── IRLPDFScanContent.podspec ├── updatedocs.command └── .gitignore /CartFile: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Demo-Carthage/.gitignore: -------------------------------------------------------------------------------- 1 | Carthage -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | irlpdfscancontent.irlmobile.com 2 | -------------------------------------------------------------------------------- /Demo-Carthage/CartFile: -------------------------------------------------------------------------------- 1 | github "charlymr/IRLPDFScanContent" ~> 1.1.0 2 | -------------------------------------------------------------------------------- /Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/Icon.png -------------------------------------------------------------------------------- /Demo-Carthage/Cartfile.resolved: -------------------------------------------------------------------------------- 1 | github "charlymr/IRLPDFScanContent" "1.1.0" 2 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /docs/images/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/images/Icon.png -------------------------------------------------------------------------------- /docs/images/scan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/images/scan.jpg -------------------------------------------------------------------------------- /docs/index/data.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/index/data.mdb -------------------------------------------------------------------------------- /docs/index/lock.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/index/lock.mdb -------------------------------------------------------------------------------- /documentationicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/documentationicon.png -------------------------------------------------------------------------------- /docs/index/navigator.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/index/navigator.index -------------------------------------------------------------------------------- /docs/index/availability.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/docs/index/availability.index -------------------------------------------------------------------------------- /Demo/IRLScanDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Demo-Cocoapods/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '13.0' 2 | 3 | target "IRLPDFScanDemo" do 4 | pod 'IRLPDFScanContent', '~> 1.1.0' 5 | use_frameworks! 6 | end -------------------------------------------------------------------------------- /Demo/IRLScanDemo/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /docs/metadata.json: -------------------------------------------------------------------------------- 1 | {"bundleDisplayName":"IRLPDFScanContent","bundleIdentifier":"com.irlmobile.IRLPDFScanContent","schemaVersion":{"major":0,"minor":1,"patch":0}} -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/scan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/scan.jpg -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/charlymr/IRLPDFScanContent/HEAD/Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Icon.png -------------------------------------------------------------------------------- /docs/img/deprecated-icon.3eb10b87.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /IRLPDFScanContent.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/IRLScanDemo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/00-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/IRLScanDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSCameraUsageDescription 6 | Use to scan 7 | 8 | 9 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/2-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | class ViewController: UIViewController { 4 | 5 | override func viewDidLoad() { 6 | super.viewDidLoad() 7 | // Do any additional setup after loading the view. 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /docs/img/added-icon.96de1ebf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IRLPDFScanContent.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo/IRLScanDemo/IRLScanDemoApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRLScanDemoApp.swift 3 | // IRLScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct IRLScanDemoApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/3-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | override func viewDidLoad() { 7 | super.viewDidLoad() 8 | // Do any additional setup after loading the view. 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/01-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSCameraUsageDescription 6 | Use to scan 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demo-Cocoapods/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - IRLPDFScanContent (1.1.0) 3 | 4 | DEPENDENCIES: 5 | - IRLPDFScanContent (~> 1.1.0) 6 | 7 | SPEC REPOS: 8 | trunk: 9 | - IRLPDFScanContent 10 | 11 | SPEC CHECKSUMS: 12 | IRLPDFScanContent: 32fc502c89e783e593e1fc95fe8692e33038691c 13 | 14 | PODFILE CHECKSUM: 8bb927d36b2a3f155fa7d40bb083d7a69a75eed1 15 | 16 | COCOAPODS: 1.11.2 17 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/1-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | struct ContentView: View { 4 | 5 | var body: some View { 6 | Text("Hello World") 7 | .padding() 8 | } 9 | } 10 | 11 | struct ContentView_Previews: PreviewProvider { 12 | static var previews: some View { 13 | ContentView() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/4-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | @IBOutlet weak var pdfView: PDFView! 7 | 8 | override func viewDidLoad() { 9 | super.viewDidLoad() 10 | // Do any additional setup after loading the view. 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /docs/js/highlight-js-json.471128d2.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-json"],{"5ad2":function(n,e){function a(n){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[e,a,n.QUOTE_STRING_MODE,s,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}n.exports=a}}]); -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.5 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "IRLPDFScanContent", 8 | platforms: [ 9 | .iOS(.v13) 10 | ], 11 | products: [ 12 | .library( name: "IRLPDFScanContent", targets: ["IRLPDFScanContent"]) 13 | ], 14 | targets: [ 15 | .target(name: "IRLPDFScanContent") 16 | ] 17 | ) 18 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/5-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | @IBOutlet weak var text: UILabel! 7 | 8 | @IBOutlet weak var pdfView: PDFView! 9 | 10 | override func viewDidLoad() { 11 | super.viewDidLoad() 12 | // Do any additional setup after loading the view. 13 | view.bringSubviewToFront(text) 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/2-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import IRLPDFScanContent 3 | 4 | struct ContentView: View { 5 | 6 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 7 | 8 | var body: some View { 9 | Text("Hello World") 10 | .padding() 11 | } 12 | } 13 | 14 | struct ContentView_Previews: PreviewProvider { 15 | static var previews: some View { 16 | ContentView() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/Internal/IRLPDFScanContent+Internal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRLPDFScanContent+Internal.swift 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 09/09/2021. 6 | // Copyright © 2021 Denis Martin-Bruillot. All rights reserved. 7 | // 8 | 9 | extension IRLPDFScanContent { 10 | 11 | func getDocumentCameraViewController() -> VNDocumentCameraViewController { 12 | let vc = VNDocumentCameraViewController() 13 | vc.delegate = self 14 | return vc 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 1.x.x | :white_check_mark: | 11 | | 1.0.x | :x: | 12 | 13 | ## Reporting a Vulnerability 14 | 15 | Use this section to tell people how to report a vulnerability. 16 | 17 | In case of a security vulnerability, please contact me in private first. Do not Raise an issue as we will want to have a fix before making it public. 18 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/6-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var text: UILabel! 9 | 10 | @IBOutlet weak var pdfView: PDFView! 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | view.bringSubviewToFront(text) 16 | } 17 | 18 | @IBAction func startScan(_ sender: Any) { 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /IRLPDFScanContent/IRLPDFScanContent.h: -------------------------------------------------------------------------------- 1 | // 2 | // IRLPDFScanContent.h 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | #import 9 | 10 | //! Project version number for IRLPDFScanContent. 11 | FOUNDATION_EXPORT double IRLPDFScanContentVersionNumber; 12 | 13 | //! Project version string for IRLPDFScanContent. 14 | FOUNDATION_EXPORT const unsigned char IRLPDFScanContentVersionString[]; 15 | 16 | // In this header, you should import all the public headers of your framework using statements like #import 17 | 18 | 19 | -------------------------------------------------------------------------------- /Demo/Configuration/SampleCode.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // See LICENSE folder for this sample’s licensing information. 3 | // 4 | // SampleCode.xcconfig 5 | // 6 | 7 | // The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build 8 | // and run a sample code project. Once you set your project's development team, 9 | // you'll have a unique bundle identifier. This is because the bundle identifier 10 | // is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this 11 | // approach in your own projects—it's only useful for sample code projects because 12 | // they are frequently downloaded and don't have a development team set. 13 | SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM} 14 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/3-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import IRLPDFScanContent 3 | 4 | struct ContentView: View { 5 | 6 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 7 | 8 | var body: some View { 9 | NavigationView { 10 | Text("Press the Scan button") 11 | .padding() 12 | .navigationBarItems(trailing: Button("Scan", action: { 13 | 14 | })) 15 | } 16 | } 17 | } 18 | 19 | struct ContentView_Previews: PreviewProvider { 20 | static var previews: some View { 21 | ContentView() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-4.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | @IBOutlet weak var scanButton: UIButton! 7 | @IBOutlet weak var imageView: UIImageView! 8 | 9 | // MARK: User Actions 10 | 11 | @IBAction func scan(_ sender: AnyObject) { 12 | 13 | 14 | } 15 | 16 | // MARK: IRLPDFScanContentProtocol 17 | 18 | func scanContent(caller: IRLPDFScanContent, 19 | didScan scan: VNDocumentCameraScan) { 20 | 21 | self.imageView.image = page_image 22 | 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Demo-Carthage/Configuration/SampleCode.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // See LICENSE folder for this sample’s licensing information. 3 | // 4 | // SampleCode.xcconfig 5 | // 6 | 7 | // The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build 8 | // and run a sample code project. Once you set your project's development team, 9 | // you'll have a unique bundle identifier. This is because the bundle identifier 10 | // is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this 11 | // approach in your own projects—it's only useful for sample code projects because 12 | // they are frequently downloaded and don't have a development team set. 13 | SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM} 14 | -------------------------------------------------------------------------------- /Demo-Cocoapods/Configuration/SampleCode.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // See LICENSE folder for this sample’s licensing information. 3 | // 4 | // SampleCode.xcconfig 5 | // 6 | 7 | // The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build 8 | // and run a sample code project. Once you set your project's development team, 9 | // you'll have a unique bundle identifier. This is because the bundle identifier 10 | // is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this 11 | // approach in your own projects—it's only useful for sample code projects because 12 | // they are frequently downloaded and don't have a development team set. 13 | SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM} 14 | -------------------------------------------------------------------------------- /Demo/.gitignore: -------------------------------------------------------------------------------- 1 | # See LICENSE folder for this sample’s licensing information. 2 | # 3 | # Apple sample code gitignore configuration. 4 | 5 | # Finder 6 | .DS_Store 7 | 8 | # Xcode - User files 9 | xcuserdata/ 10 | 11 | **/*.xcodeproj/project.xcworkspace/* 12 | !**/*.xcodeproj/project.xcworkspace/xcshareddata 13 | 14 | **/*.xcodeproj/project.xcworkspace/xcshareddata/* 15 | !**/*.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 16 | 17 | **/*.playground/playground.xcworkspace/* 18 | !**/*.playground/playground.xcworkspace/xcshareddata 19 | 20 | **/*.playground/playground.xcworkspace/xcshareddata/* 21 | !**/*.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 22 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/Exports.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Exports.swift 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 09/09/2021. 6 | // Copyright © 2021 Denis Martin-Bruillot. All rights reserved. 7 | // 8 | 9 | @_exported import UIKit 10 | @_exported import PDFKit 11 | @_exported import VisionKit 12 | 13 | /// IRLPDFScanContent Versionioning 14 | public enum IRLPDFScanContentVersion: String { 15 | 16 | /// Major Versions 17 | case v1 = "1" 18 | 19 | /// Minor Versions 20 | case v1_0 = "1.0" 21 | case v1_1 = "1.1" 22 | 23 | /// Patch Versions 24 | case v1_0_0 = "1.0.0" 25 | case v1_0_1 = "1.0.1" 26 | case v1_0_2 = "1.0.2" 27 | case v1_1_0 = "1.1.0" 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/4-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import IRLPDFScanContent 3 | 4 | struct ContentView: View { 5 | 6 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 7 | 8 | var body: some View { 9 | NavigationView { 10 | Text("Press the Scan button") 11 | .padding() 12 | .navigationBarItems(trailing: Button("Scan", action: { 13 | scanner.present(animated: true, completion: nil) 14 | })) 15 | } 16 | } 17 | } 18 | 19 | struct ContentView_Previews: PreviewProvider { 20 | static var previews: some View { 21 | ContentView() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-3.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | @IBOutlet weak var scanButton: UIButton! 7 | @IBOutlet weak var imageView: UIImageView! 8 | 9 | // MARK: User Actions 10 | 11 | @IBAction func scan(_ sender: AnyObject) { 12 | 13 | 14 | } 15 | 16 | // MARK: IRLPDFScanContentProtocol 17 | 18 | func pageSnapped(_ page_image: UIImage, from controller: IRLScannerViewController) { 19 | controller.dismiss(animated: true) { () -> Void in 20 | self.imageView.image = page_image 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/7-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var text: UILabel! 9 | 10 | @IBOutlet weak var pdfView: PDFView! 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | view.bringSubviewToFront(text) 16 | } 17 | 18 | @IBAction func startScan(_ sender: Any) { 19 | pdfView.document = nil 20 | text.text = "Use the Scan Button" 21 | scanner.present(animated: true, completion: nil) 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/5-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import IRLPDFScanContent 3 | 4 | struct ContentView: View { 5 | 6 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 7 | 8 | var body: some View { 9 | NavigationView { 10 | VStack() { 11 | Text("Press the Scan button") 12 | } 13 | .padding() 14 | .navigationBarItems(trailing: Button("Scan", action: { 15 | scanner.present(animated: true, completion: nil) 16 | })) 17 | } 18 | } 19 | } 20 | 21 | struct ContentView_Previews: PreviewProvider { 22 | static var previews: some View { 23 | ContentView() 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /docs/img/modified-icon.5d49bcfe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/js/highlight-js-diff.672514df.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-diff"],{"48b8":function(n,e){function t(n){return n?"string"===typeof n?n:n.source:null}function i(n){const e=n[n.length-1];return"object"===typeof e&&e.constructor===Object?(n.splice(n.length-1,1),e):{}}function a(...n){const e=i(n),a="("+(e.capture?"":"?:")+n.map(n=>t(n)).join("|")+")";return a}function c(n){return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:a(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:a(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}n.exports=c}}]); -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/8-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var text: UILabel! 9 | 10 | @IBOutlet weak var pdfView: PDFView! 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | view.bringSubviewToFront(text) 16 | } 17 | 18 | @IBAction func startScan(_ sender: Any) { 19 | pdfView.document = nil 20 | text.text = "Use the Scan Button" 21 | scanner.delegate = self 22 | scanner.present(animated: true, completion: nil) 23 | } 24 | 25 | } 26 | 27 | extension ViewController: IRLPDFScanContentProtocol { 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Extension.md: -------------------------------------------------------------------------------- 1 | # ``IRLPDFScanContent/IRLPDFScanContent`` 2 | 3 | ## Topics 4 | 5 | ### Initializers 6 | 7 | - ``IRLPDFScanContent/IRLPDFScanContent/init(with:)`` 8 | 9 | ### Type Properties 10 | 11 | - ``IRLPDFScanContent/IRLPDFScanContent/defaultPDFName`` 12 | 13 | ### Instance Properties 14 | 15 | - ``IRLPDFScanContent/IRLPDFScanContent/latestScan`` 16 | - ``IRLPDFScanContent/IRLPDFScanContent/delegate`` 17 | - ``IRLPDFScanContent/IRLPDFScanContent/errorMessage`` 18 | 19 | ### Instance Methods 20 | 21 | - ``IRLPDFScanContent/IRLPDFScanContent/present(animated:completion:)`` 22 | - ``IRLPDFScanContent/IRLPDFScanContent/present(animated:)`` 23 | - ``IRLPDFScanContent/IRLPDFScanContent/reset()`` 24 | 25 | ### Deprecated 26 | 27 | - ``IRLPDFScanContent/IRLPDFScanContent/scanImages`` 28 | - ``IRLPDFScanContent/IRLPDFScanContent/generatePDF(with:)`` 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIApplicationSceneManifest 6 | 7 | UIApplicationSupportsMultipleScenes 8 | 9 | UISceneConfigurations 10 | 11 | UIWindowSceneSessionRoleApplication 12 | 13 | 14 | UISceneConfigurationName 15 | Default Configuration 16 | UISceneDelegateClassName 17 | $(PRODUCT_MODULE_NAME).SceneDelegate 18 | UISceneStoryboardFile 19 | Main 20 | 21 | 22 | 23 | 24 | NSCameraUsageDescription 25 | We need the camera to scan 26 | 27 | 28 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIApplicationSceneManifest 6 | 7 | UIApplicationSupportsMultipleScenes 8 | 9 | UISceneConfigurations 10 | 11 | UIWindowSceneSessionRoleApplication 12 | 13 | 14 | UISceneConfigurationName 15 | Default Configuration 16 | UISceneDelegateClassName 17 | $(PRODUCT_MODULE_NAME).SceneDelegate 18 | UISceneStoryboardFile 19 | Main 20 | 21 | 22 | 23 | 24 | NSCameraUsageDescription 25 | We need the camera to scan 26 | 27 | 28 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-5.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | @IBOutlet weak var scanButton: UIButton! 7 | @IBOutlet weak var imageView: UIImageView! 8 | 9 | // MARK: User Actions 10 | 11 | @IBAction func scan(_ sender: AnyObject) { 12 | 13 | 14 | } 15 | 16 | // MARK: IRLPDFScanContentProtocol 17 | 18 | func scanContent(caller: IRLPDFScanContent, 19 | didScan scan: VNDocumentCameraScan) { 20 | guard let page_image = scan.scanImages(completion: nil).first else { 21 | return 22 | } 23 | self.imageView.image = page_image 24 | } 25 | 26 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 27 | print(error) 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/FINAL-ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import IRLPDFScanContent 3 | 4 | struct ContentView: View { 5 | 6 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 7 | 8 | var body: some View { 9 | NavigationView { 10 | VStack() { 11 | if let latestScan = scanner.latestScan { 12 | latestScan.swiftUIPDFView 13 | 14 | } else { 15 | Text("Press the Scan button") 16 | } 17 | } 18 | .padding() 19 | .navigationBarItems(trailing: Button("Scan", action: { 20 | scanner.present(animated: true, completion: nil) 21 | })) 22 | } 23 | } 24 | } 25 | 26 | struct ContentView_Previews: PreviewProvider { 27 | static var previews: some View { 28 | ContentView() 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-6.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var scanButton: UIButton! 9 | @IBOutlet weak var imageView: UIImageView! 10 | 11 | // MARK: User Actions 12 | 13 | @IBAction func scan(_ sender: AnyObject) { 14 | 15 | 16 | } 17 | 18 | // MARK: IRLPDFScanContentProtocol 19 | 20 | func scanContent(caller: IRLPDFScanContent, 21 | didScan scan: VNDocumentCameraScan) { 22 | guard let page_image = scan.scanImages(completion: nil).first else { 23 | return 24 | } 25 | self.imageView.image = page_image 26 | } 27 | 28 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 29 | print(error) 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /docs/js/highlight-js-http.ec39e120.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-http"],{c01d:function(n,e){function a(n){return n?"string"===typeof n?n:n.source:null}function s(...n){const e=n.map(n=>a(n)).join("");return e}function t(n){const e="HTTP/(2|1\\.[01])",a=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:s("^",a,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+e+" \\d{3})",end:/$/,contains:[{className:"meta",begin:e},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+e+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:e},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},n.inherit(t,{relevance:0})]}}n.exports=t}}]); -------------------------------------------------------------------------------- /Demo/IRLScanDemo/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // IRLScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import SwiftUI 9 | import IRLPDFScanContent 10 | 11 | struct ContentView: View { 12 | 13 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 14 | 15 | var body: some View { 16 | NavigationView { 17 | VStack() { 18 | if let latestScan = scanner.latestScan { 19 | latestScan.swiftUIPDFView 20 | 21 | } else { 22 | Text("Press the Scan button") 23 | } 24 | } 25 | .padding() 26 | .navigationBarItems(trailing: Button("Scan", action: { 27 | scanner.present(animated: true, completion: nil) 28 | })) 29 | } 30 | } 31 | } 32 | 33 | struct ContentView_Previews: PreviewProvider { 34 | static var previews: some View { 35 | ContentView() 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-7.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var scanButton: UIButton! 9 | @IBOutlet weak var imageView: UIImageView! 10 | 11 | // MARK: User Actions 12 | 13 | @IBAction func scan(_ sender: AnyObject) { 14 | scanner.delegate = self 15 | scanner.present(animated: true, completion: nil) 16 | } 17 | 18 | // MARK: IRLPDFScanContentProtocol 19 | 20 | func scanContent(caller: IRLPDFScanContent, 21 | didScan scan: VNDocumentCameraScan) { 22 | guard let page_image = scan.scanImages(completion: nil).first else { 23 | return 24 | } 25 | self.imageView.image = page_image 26 | } 27 | 28 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 29 | print(error) 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-FINAL.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLPDFScanContentProtocol { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var scanButton: UIButton! 9 | @IBOutlet weak var imageView: UIImageView! 10 | 11 | // MARK: User Actions 12 | 13 | @IBAction func scan(_ sender: AnyObject) { 14 | scanner.delegate = self 15 | scanner.present(animated: true, completion: nil) 16 | } 17 | 18 | // MARK: IRLPDFScanContentProtocol 19 | 20 | func scanContent(caller: IRLPDFScanContent, 21 | didScan scan: VNDocumentCameraScan) { 22 | guard let page_image = scan.scanImages(completion: nil).first else { 23 | return 24 | } 25 | self.imageView.image = page_image 26 | } 27 | 28 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 29 | print(error) 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) 5 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 6 | 7 | ## Unreleased 8 | 9 | ### Fixed 10 | ## 1.1.1 - 2022-12-27 11 | - Fixed a crash happening when presentign the scanner from a backgroudn threat 12 | 13 | ## 1.1.0 - 2021-11-08 14 | - Added the ability to migrate from IRLDocumentScanner 15 | - Updated the doc and tutorials 16 | 17 | ## 1.0.2 - 2021-11-07 18 | - Better handling of PDF / UIImage generation for large PDF. (We now generate the 1st page and generate all other pages on a background thread) 19 | - Updated Documentation/Tutorials 20 | - Overall, fastest performance 21 | 22 | ## 1.0.1 - 2021-11-06 23 | - Added Cocoapods support 24 | - Added Carthage Support 25 | - Added some Demo project 26 | - Update the Documentation 27 | 28 | ## 1.0.0 - 2021-11-06 29 | - First release 30 | - Added Documentation 31 | - SonarCloud 32 | - A Demo app 33 | 34 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/9-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var text: UILabel! 9 | 10 | @IBOutlet weak var pdfView: PDFView! 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | view.bringSubviewToFront(text) 16 | } 17 | 18 | @IBAction func startScan(_ sender: Any) { 19 | pdfView.document = nil 20 | text.text = "Use the Scan Button" 21 | scanner.delegate = self 22 | scanner.present(animated: true, completion: nil) 23 | } 24 | 25 | } 26 | 27 | extension ViewController: IRLPDFScanContentProtocol { 28 | 29 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) { 30 | 31 | } 32 | 33 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 34 | 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 MARTIN-BRUILLOT Denis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 MARTIN-BRUILLOT Denis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/FINAL-ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController: UIViewController { 5 | 6 | let scanner = IRLPDFScanContent() 7 | 8 | @IBOutlet weak var text: UILabel! 9 | 10 | @IBOutlet weak var pdfView: PDFView! 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | // Do any additional setup after loading the view. 15 | view.bringSubviewToFront(text) 16 | } 17 | 18 | @IBAction func startScan(_ sender: Any) { 19 | pdfView.document = nil 20 | text.text = "Use the Scan Button" 21 | scanner.delegate = self 22 | scanner.present(animated: true, completion: nil) 23 | } 24 | 25 | } 26 | 27 | extension ViewController: IRLPDFScanContentProtocol { 28 | 29 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) { 30 | guard let document = scan.generatePDFDocument(pdfView: self.pdfView) else { 31 | return 32 | } 33 | view.sendSubviewToBack(text) 34 | pdfView.document = document 35 | } 36 | 37 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 38 | view.bringSubviewToFront(text) 39 | text.text = error.localizedDescription 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /IRLPDFScanContent.podspec: -------------------------------------------------------------------------------- 1 | ## 2 | ## Before you commit to the Podscpec repro, it is good practice to verify your settings via lint 3 | ## > pod spec lint IRLPDFScanContent.podspec --sources='https://github.com/CocoaPods/Specs' 4 | ## 5 | ## When done modifying that file simply run: 6 | ## > pod trunk push IRLPDFScanContent.podspec 7 | ## 8 | Pod::Spec.new do |s| 9 | s.name = 'IRLPDFScanContent' 10 | s.version = '1.1.1' 11 | 12 | s.license = { :type => 'MIT', :file => 'LICENSE' } 13 | 14 | s.summary = 'SwiftUI & UKKit - Images or PDF scanner. Big brother and replacement of IRLDocumentScanner' 15 | s.description = 'A convenient class usable from `UIKit` view controller or `SwiftUI` to scan document & get `UIImage` or `PDFDocument` as result' 16 | s.homepage = 'https://github.com/charlymr/IRLPDFScanContent' 17 | s.documentation_url = 'https://irlpdfscancontent.irlmobile.com/documentation/' 18 | 19 | s.authors = 'charlymr' 20 | 21 | s.source = { :git => 'https://github.com/charlymr/IRLPDFScanContent.git', :tag => s.version } 22 | 23 | s.module_name = 'IRLPDFScanContent' 24 | s.ios.deployment_target = '13.0' 25 | s.swift_versions = ['5.5'] 26 | s.source_files = 'Sources/IRLPDFScanContent/*.{swift}', 'Sources/IRLPDFScanContent/Internal/*.{swift}', 'Sources/IRLPDFScanContent/Legacy/*.{swift}', 27 | s.ios.frameworks = 'UIKit', 'PDFKit', 'VisionKit', 'SwiftUI' 28 | 29 | end 30 | -------------------------------------------------------------------------------- /docs/theme-settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": {}, 3 | "theme": { 4 | "colors": { 5 | "text": "", 6 | "text-background": "", 7 | "grid": "", 8 | "article-background": "", 9 | "generic-modal-background": "", 10 | "secondary-label": "", 11 | "header-text": "", 12 | "welcome-experience": { 13 | "links-item-border": "" 14 | }, 15 | "not-found": { 16 | "input-border": "" 17 | }, 18 | "runtime-preview": { 19 | "text": "" 20 | }, 21 | "tabnav-item": { 22 | "border-color": "" 23 | }, 24 | "svg-icon": { 25 | "fill-light": "", 26 | "fill-dark": "" 27 | }, 28 | "loading-placeholder": { 29 | "background": "" 30 | }, 31 | "button": { 32 | "text": "", 33 | "light": { 34 | "background": "", 35 | "backgroundHover": "", 36 | "backgroundActive": "" 37 | }, 38 | "dark": { 39 | "background": "", 40 | "backgroundHover": "", 41 | "backgroundActive": "" 42 | } 43 | }, 44 | "link": null 45 | }, 46 | "style": { 47 | "button": { 48 | "borderRadius": null 49 | } 50 | }, 51 | "typography": { 52 | "html-font": "" 53 | } 54 | }, 55 | "features": { 56 | "docs": { 57 | "summary": { 58 | "hide": false 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | import IRLPDFScanContent 10 | 11 | class ViewController: UIViewController { 12 | 13 | let scanner = IRLPDFScanContent() 14 | 15 | @IBOutlet weak var text: UILabel! 16 | 17 | @IBOutlet weak var pdfView: PDFView! 18 | 19 | override func viewDidLoad() { 20 | super.viewDidLoad() 21 | // Do any additional setup after loading the view. 22 | view.bringSubviewToFront(text) 23 | } 24 | 25 | @IBAction func startScan(_ sender: Any) { 26 | pdfView.document = nil 27 | text.text = "Use the Scan Button" 28 | scanner.delegate = self 29 | scanner.present(animated: true, completion: nil) 30 | } 31 | 32 | } 33 | 34 | extension ViewController: IRLPDFScanContentProtocol { 35 | 36 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) { 37 | guard let document = scan.generatePDFDocument(pdfView: self.pdfView) else { 38 | return 39 | } 40 | view.sendSubviewToBack(text) 41 | pdfView.document = document 42 | } 43 | 44 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 45 | view.bringSubviewToFront(text) 46 | text.text = error.localizedDescription 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | import IRLPDFScanContent 10 | 11 | class ViewController: UIViewController { 12 | 13 | let scanner = IRLPDFScanContent() 14 | 15 | @IBOutlet weak var text: UILabel! 16 | 17 | @IBOutlet weak var pdfView: PDFView! 18 | 19 | override func viewDidLoad() { 20 | super.viewDidLoad() 21 | // Do any additional setup after loading the view. 22 | view.bringSubviewToFront(text) 23 | } 24 | 25 | @IBAction func startScan(_ sender: Any) { 26 | pdfView.document = nil 27 | text.text = "Use the Scan Button" 28 | scanner.delegate = self 29 | scanner.present(animated: true, completion: nil) 30 | } 31 | 32 | } 33 | 34 | extension ViewController: IRLPDFScanContentProtocol { 35 | 36 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) { 37 | guard let document = scan.generatePDFDocument(pdfView: self.pdfView) else { 38 | return 39 | } 40 | view.sendSubviewToBack(text) 41 | pdfView.document = document 42 | } 43 | 44 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 45 | view.bringSubviewToFront(text) 46 | text.text = error.localizedDescription 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /updatedocs.command: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ### 3 | ### WARNING WORK ONLY with cutom domain. 4 | ### See https://docs.github.com/articles/using-a-custom-domain-with-github-pages/ for more details 5 | ### 6 | ### Comit your files, then in the repo, go to Settings / Pages 7 | ### - Source should be branch/docs 8 | ### - Custom domain should be 9 | ### 10 | ### Don't forget to add the CNAME to your DNS zone 11 | ### 12 | 13 | export GITHUBNAME=charlymr 14 | export SCHEME=IRLPDFScanContent 15 | export CUSTOMDOMAIN=irlpdfscancontent.irlmobile.com 16 | 17 | xcodebuild docbuild \ 18 | -scheme "${SCHEME}" \ 19 | -destination generic/platform=iOS \ 20 | -derivedDataPath DerivedData 21 | 22 | rm -rf ${SCHEME}.doccarchive 23 | 24 | find DerivedData \ 25 | -name "${SCHEME}.doccarchive" \ 26 | -exec cp -R {} ./ \; 27 | 28 | rm -rf DerivedData 29 | rm -rf docs 30 | 31 | mv "${SCHEME}.doccarchive" docs 32 | echo "${CUSTOMDOMAIN}" > docs/CNAME 33 | 34 | mkdir -p docs/documentation 35 | cp -pr docs/index.html docs/documentation/ 36 | 37 | mkdir -p docs/tutorial 38 | cp -pr docs/index.html docs/tutorial/ 39 | 40 | cp -pr docs/data/documentation/*.json docs/data/documentation.json 41 | 42 | echo '' > docs/index.html 43 | echo '' >> docs/index.html 44 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | return true 18 | } 19 | 20 | // MARK: UISceneSession Lifecycle 21 | 22 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 23 | // Called when a new scene session is being created. 24 | // Use this method to select a configuration to create the new scene with. 25 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 26 | } 27 | 28 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 29 | // Called when the user discards a scene session. 30 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 31 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | return true 18 | } 19 | 20 | // MARK: UISceneSession Lifecycle 21 | 22 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 23 | // Called when a new scene session is being created. 24 | // Use this method to select a configuration to create the new scene with. 25 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 26 | } 27 | 28 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 29 | // Called when the user discards a scene session. 30 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 31 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 32 | } 33 | 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/Internal/IRLScannerViewControllerDelegation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRLScannerViewControllerDelegation.swift 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 07/11/2021. 6 | // 7 | 8 | import VisionKit 9 | 10 | @available(*, deprecated, message: "Should be replaced by `IRLPDFScanContent`") 11 | internal let sharedDelegationScannerViewController = IRLScannerViewControllerDelegation() 12 | 13 | @available(*, deprecated, message: "Should be replaced by `IRLPDFScanContent`") 14 | internal class IRLScannerViewControllerDelegation: NSObject, VNDocumentCameraViewControllerDelegate { 15 | 16 | internal var cameraDelegate: IRLScannerViewControllerDelegate? = nil 17 | 18 | public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) { 19 | guard let image = scan.scanImages(completion: nil).first else { 20 | return 21 | } 22 | cameraDelegate?.pageSnapped(image, from: controller) 23 | cameraDelegate?.scanContent(caller: IRLPDFScanContent(), didScan: scan) 24 | } 25 | 26 | 27 | public func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) { 28 | cameraDelegate?.didCancel(controller) 29 | cameraDelegate?.cameraViewCancelRequested(controller) 30 | cameraDelegate?.scanContentDissmissed(caller: IRLPDFScanContent()) 31 | } 32 | 33 | 34 | public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) { 35 | cameraDelegate?.didCancel(controller) 36 | cameraDelegate?.cameraViewCancelRequested(controller) 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/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 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/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 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent+VNDocumentCameraViewControllerDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRLPDFScanContent+VNDocumentCameraViewControllerDelegate.swift 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 09/09/2021. 6 | // Copyright © 2021 Denis Martin-Bruillot. All rights reserved. 7 | // 8 | 9 | /// Comformance to the delegate protocol through which the document camera returns its scanned results. 10 | extension IRLPDFScanContent: VNDocumentCameraViewControllerDelegate { 11 | 12 | /// Inherited from VNDocumentCameraViewControllerDelegate.documentCameraViewControllerDidCancel(_:). 13 | public func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) { 14 | reset() 15 | controller.dismiss(animated: true) { 16 | self.delegate?.scanContentDissmissed(caller: self) 17 | } 18 | } 19 | 20 | /// Inherited from VNDocumentCameraViewControllerDelegate.documentCameraViewController(_:didFailWithError:). 21 | public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) { 22 | reset() 23 | self.errorMessage = error.localizedDescription 24 | delegate?.scanContent(caller: self, didFail: error) 25 | } 26 | 27 | /// Inherited from VNDocumentCameraViewControllerDelegate.documentCameraViewController(_:didFinishWith:). 28 | public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) { 29 | latestScan = scan 30 | delegate?.scanContent(caller: self, didScan: scan) 31 | controller.dismiss(animated: true) { 32 | self.delegate?.scanContentDissmissed(caller: self) 33 | } 34 | } 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-1.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLDocumentScanner 3 | 4 | class ViewController : UIViewController, IRLScannerViewControllerDelegate { 5 | 6 | @IBOutlet weak var scanButton: UIButton! 7 | @IBOutlet weak var imageView: UIImageView! 8 | 9 | // MARK: User Actions 10 | 11 | @IBAction func scan(_ sender: AnyObject) { 12 | let scanner = IRLScannerViewController.standardCameraView(with: self) 13 | scanner.showControls = true 14 | scanner.showAutoFocusWhiteRectangle = true 15 | present(scanner, animated: true, completion: nil) 16 | } 17 | 18 | // MARK: IRLScannerViewControllerDelegate 19 | 20 | func pageSnapped(_ page_image: UIImage, from controller: IRLScannerViewController) { 21 | controller.dismiss(animated: true) { () -> Void in 22 | self.imageView.image = page_image 23 | } 24 | } 25 | 26 | func cameraViewWillUpdateTitleLabel(_ cameraView: IRLScannerViewController) -> String? { 27 | 28 | var text = "" 29 | switch cameraView.cameraViewType { 30 | case .normal: text = text + "NORMAL" 31 | case .blackAndWhite: text = text + "B/W-FILTER" 32 | case .ultraContrast: text = text + "CONTRAST" 33 | } 34 | 35 | switch cameraView.detectorType { 36 | case .accuracy: text = text + " | Accuracy" 37 | case .performance: text = text + " | Performance" 38 | } 39 | 40 | return text 41 | } 42 | 43 | func didCancel(_ cameraView: IRLScannerViewController) { 44 | cameraView.dismiss(animated: true){ ()-> Void in 45 | NSLog("Cancel pressed"); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Resources/code-files/Migration-2.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import IRLPDFScanContent 3 | 4 | class ViewController : UIViewController, IRLScannerViewControllerDelegate { 5 | 6 | @IBOutlet weak var scanButton: UIButton! 7 | @IBOutlet weak var imageView: UIImageView! 8 | 9 | // MARK: User Actions 10 | 11 | @IBAction func scan(_ sender: AnyObject) { 12 | let scanner = IRLScannerViewController.standardCameraView(with: self) 13 | scanner.showControls = true 14 | scanner.showAutoFocusWhiteRectangle = true 15 | present(scanner, animated: true, completion: nil) 16 | } 17 | 18 | // MARK: IRLScannerViewControllerDelegate 19 | 20 | func pageSnapped(_ page_image: UIImage, from controller: IRLScannerViewController) { 21 | controller.dismiss(animated: true) { () -> Void in 22 | self.imageView.image = page_image 23 | } 24 | } 25 | 26 | func cameraViewWillUpdateTitleLabel(_ cameraView: IRLScannerViewController) -> String? { 27 | 28 | var text = "" 29 | switch cameraView.cameraViewType { 30 | case .normal: text = text + "NORMAL" 31 | case .blackAndWhite: text = text + "B/W-FILTER" 32 | case .ultraContrast: text = text + "CONTRAST" 33 | } 34 | 35 | switch cameraView.detectorType { 36 | case .accuracy: text = text + " | Accuracy" 37 | case .performance: text = text + " | Performance" 38 | } 39 | 40 | return text 41 | } 42 | 43 | func didCancel(_ cameraView: IRLScannerViewController) { 44 | cameraView.dismiss(animated: true){ ()-> Void in 45 | NSLog("Cancel pressed"); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/SwiftUI.md: -------------------------------------------------------------------------------- 1 | # SwiftUI 2 | 3 | ``IRLPDFScanContent`` has a convenient way to use `PDFKit` in SwiftUI allowing the user to scan multiple pages and creating a PDF for you. 4 | 5 | ## Overview 6 | 7 | In a nutshell, the ``IRLPDFScanContent/IRLPDFScanContent`` is independant and will publish changes to ``IRLPDFScanContent/IRLPDFScanContent/latestScan`` or ``IRLPDFScanContent/IRLPDFScanContent/errorMessage`` 8 | 9 | Check the tutorial for a Step-by-Step integration 10 | 11 | ## Perfrom a Scan 12 | 13 | - Initiate the object with ``IRLPDFScanContent/IRLPDFScanContent/init(with:)`` 14 | - present you view `await` ``IRLPDFScanContent/IRLPDFScanContent/present(animated:)`` (iOS 15.0+) 15 | - Observe the result of ``IRLPDFScanContent/IRLPDFScanContent/latestScan`` 16 | - Use the convenient method ``IRLPDFScanContent/IRLVNDocumentCameraScanAdditions/swiftUIPDFView`` to update your view 17 | 18 | ``` swift 19 | import SwiftUI 20 | import IRLPDFScanContent 21 | 22 | struct ContentView: View { 23 | 24 | @ObservedObject var scanner: IRLPDFScanContent = IRLPDFScanContent() 25 | 26 | var body: some View { 27 | NavigationView { 28 | VStack() { 29 | if let latestScan = scanner.latestScan { 30 | latestScan.swiftUIPDFView 31 | 32 | } else { 33 | Text("Press the Scan button") 34 | } 35 | } 36 | .padding() 37 | .navigationBarItems(trailing: Button("Scan", action: { 38 | scanner.present(animated: true, completion: nil) 39 | })) 40 | } 41 | } 42 | } 43 | 44 | struct ContentView_Previews: PreviewProvider { 45 | static var previews: some View { 46 | ContentView() 47 | } 48 | } 49 | 50 | ``` 51 | 52 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Tutuorials/Tutorial Table of Contents.tutorial: -------------------------------------------------------------------------------- 1 | @Tutorials(name: "Introducing IRLPDFScanContent & IRLPDFView for SwiftUI") { 2 | @Intro(title: "Meet IRLPDFScanContent") { 3 | ``IRLPDFScanContent/IRLPDFScanContent`` is a convenient way to use `PDFKit` in SwiftUI allowing the user to scan multiple pages and creating a PDF for you. 4 | 5 | Those tutorial will guides you through migrating/adding this functionality to your app. You will learn to present the scanner and hanlde the user input. 6 | 7 | Check the [Github README](https://github.com/charlymr/IRLPDFScanContent) or `Installation` guide to install the dependency to your project 8 | } 9 | 10 | @Chapter(name: "IRLScannerViewController: Migration") { 11 | If you were using [IRLScannerViewController](https://github.com/charlymr/IRLDocumentScanner), this package support easy migration. 12 | 13 | @Image(source: scan.jpg, alt: "Scan image fromIRLScannerViewController") 14 | 15 | @TutorialReference(tutorial: "doc:Migrate-from-IRLScannerViewController") 16 | 17 | } 18 | 19 | @Chapter(name: "SwiftUI: IRLPDFScanContent & IRLPDFView View") { 20 | Here you will discover how to build the view for the user to be able to scan. 21 | 22 | @Image(source: Icon.png, alt: "Icon of IRLPDFScanContent") 23 | 24 | @TutorialReference(tutorial: "doc:SwiftUI-IRLPDFScanContent") 25 | 26 | } 27 | 28 | @Chapter(name: "UIKit: IRLPDFScanContent") { 29 | Here you will discover how to work the the delegate in a standard `UIViewController` 30 | 31 | See also ``IRLPDFScanContent/IRLPDFScanContentProtocol`` for available call back 32 | 33 | @Image(source: Icon.png, alt: "Icon of IRLPDFScanContent") 34 | 35 | @TutorialReference(tutorial: "doc:Delegate-IRLPDFScanContent") 36 | 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/About.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | This project is Open source. It comes with no warranty or support. 4 | 5 | ## Overview 6 | 7 | Of course, like any open source project, feel free to fork and modify this code. Pull requests are more than welcome! That is the core of Open source projects! You take and give back! 8 | 9 | ## Code of Conduct 10 | 11 | - Warning: Please do not create an issue without first trying to solve it and respect the free time I & fellow contributors put on this. I tend to really dislike when I am ordered to fix an issue while the source code is all available & documented. If you need a solution with support & warranties, please check with a vendor not on Github for open source projects. 12 | 13 | ### MIT License 14 | 15 | Copyright (c) 2021 MARTIN-BRUILLOT Denis 16 | 17 | Permission is hereby granted, free of charge, to any person obtaining a copy 18 | of this software and associated documentation files (the "Software"), to deal 19 | in the Software without restriction, including without limitation the rights 20 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 21 | copies of the Software, and to permit persons to whom the Software is 22 | furnished to do so, subject to the following conditions: 23 | 24 | The above copyright notice and this permission notice shall be included in all 25 | copies or substantial portions of the Software. 26 | 27 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 28 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 29 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 30 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 31 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 32 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 33 | SOFTWARE. 34 | 35 | ## Authors 36 | 37 | - Denis Martin | Web: [www.irlmobile.com](http://www.irlmobile.com) 38 | 39 | -------------------------------------------------------------------------------- /Demo/IRLScanDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /docs/js/highlight-js-markdown.451c845b.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-markdown"],{"04b0":function(n,e){function a(n){return n?"string"===typeof n?n:n.source:null}function i(...n){const e=n.map(n=>a(n)).join("");return e}function s(n){const e={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},a={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},g=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:i(/\[.+?\]\(/,g,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},o={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},d={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};o.contains.push(d),d.contains.push(o);let b=[e,l];o.contains=o.contains.concat(b),d.contains=d.contains.concat(b),b=b.concat(o,d);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},u={className:"quote",begin:"^>\\s+",contains:b,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,e,c,o,d,u,s,a,l,t]}}n.exports=s}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-bash.85a55401.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-bash"],{f0f8:function(e,s){function n(e){return e?"string"===typeof e?e:e.source:null}function t(...e){const s=e.map(e=>n(e)).join("");return s}function a(e){const s={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:t(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,a]};a.contains.push(o);const c={className:"",begin:/\\"/},l={className:"string",begin:/'/,end:/'/},r={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],u=e.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),d={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},h=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],b=["true","false"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:h,literal:b,built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[u,e.SHEBANG(),d,r,e.HASH_COMMENT_MODE,i,o,c,l,s]}}e.exports=a}}]); -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // File.swift 3 | // 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import SwiftUI 9 | import PDFKit 10 | 11 | /// A simple but very efficient `SwiftUI` wrapper of [`PDFView`](https://developer.apple.com/documentation/pdfkit/pdfview) 12 | /// 13 | public struct IRLPDFView: UIViewRepresentable { 14 | 15 | /// The URL of the PDF being display 16 | public let url: URL? 17 | 18 | /// The PDF being display 19 | public let document: PDFDocument? 20 | 21 | /// The [`PDFView`](https://developer.apple.com/documentation/pdfkit/pdfview) is accessible so you can customize it. 22 | public let pdfView: PDFView 23 | 24 | /// Initializer 25 | /// - Parameter url: The URL of the PDF to display 26 | public init(url: URL) { 27 | self.url = url 28 | self.document = nil 29 | self.pdfView = PDFView() 30 | } 31 | 32 | /// Initializer 33 | /// - Parameter document: The PDF to display 34 | /// - Parameter pdfView: An optional [`PDFView`](https://developer.apple.com/documentation/pdfkit/pdfview) that will be use. 35 | public init(document: PDFDocument, pdfView: PDFView = PDFView()) { 36 | self.document = document 37 | self.url = nil 38 | self.pdfView = pdfView 39 | } 40 | 41 | // MARK: UIViewRepresentable implementation 42 | 43 | /// [`UIViewRepresentable`](https://developer.apple.com/documentation/swiftui/uiviewrepresentable) protocol conformance 44 | public func makeUIView(context: UIViewRepresentableContext) -> Self.UIViewType { 45 | if let document = document { 46 | pdfView.document = document 47 | 48 | } else if let url = url { 49 | pdfView.document = PDFDocument(url: url) 50 | } 51 | pdfView.autoScales = true 52 | return pdfView 53 | } 54 | 55 | /// [`UIViewRepresentable`](https://developer.apple.com/documentation/swiftui/uiviewrepresentable) protocol conformance 56 | public func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext) { 57 | // Update the view. 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /docs/js/highlight-js-xml.784eb41b.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-xml"],{"8dcb":function(n,e){function s(n){return n?"string"===typeof n?n:n.source:null}function a(n){return i("(?=",n,")")}function t(n){return i("(?:",n,")?")}function i(...n){const e=n.map(n=>s(n)).join("");return e}function c(n){const e=n[n.length-1];return"object"===typeof e&&e.constructor===Object?(n.splice(n.length-1,1),e):{}}function r(...n){const e=c(n),a="("+(e.capture?"":"?:")+n.map(n=>s(n)).join("|")+")";return a}function l(n){const e=i(/[A-Z_]/,t(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,c={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},l={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=n.inherit(l,{begin:/\(/,end:/\)/}),g=n.inherit(n.APOS_STRING_MODE,{className:"string"}),m=n.inherit(n.QUOTE_STRING_MODE,{className:"string"}),b={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[l,m,g,o,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[l,o,m,g]}]}]},n.COMMENT(//,{relevance:10}),{begin://,relevance:10},c,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[b],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[b],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:i(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:e,relevance:0,starts:b}]},{className:"tag",begin:i(/<\//,a(i(e,/>/))),contains:[{className:"name",begin:e,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}n.exports=l}}]); -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Documentation.md: -------------------------------------------------------------------------------- 1 | # ``IRLPDFScanContent`` Getting Started 2 | `SwiftUI` & `UKKit` - Images or PDF scanner. 3 | 4 | ## Overview 5 | A convenient class usable from `UIKit` view controller or `SwiftUI` to scan document & get `UIImage` or `PDFDocument` as result 6 | 7 | - This package can replace [IRLScannerViewController](https://github.com/charlymr/IRLDocumentScanner) which is now very old 8 | 9 | - Check the code & version on [Github](https://github.com/charlymr/IRLPDFScanContent) 10 | 11 | #### To Make it availble globaly in your project 12 | 13 | - In your `AppDelegate` or your Module, use `@_exported` for convenience 14 | ```swift 15 | @_exported import IRLPDFScanContent 16 | ``` 17 | 18 | ## Available 19 | 20 | - iOS 13+ 21 | 22 | The code is well documented & offer tutorials: (Essentials / Getting Started) here: [Documentation](https://irlpdfscancontent.irlmobile.com/tutorials/tutorial-table-of-contents) for more details 23 | 24 | ## Migration from IRLScannerViewController 25 | Migration from [IRLScannerViewController](https://github.com/charlymr/IRLDocumentScanner) is feasible. Please check the tutorial 26 | 27 | #### First you will need to replace your dependency and **import** 28 | See for the different options such as SPM, Cocoapods, Carthage. 29 | 30 | #### You project should still work with depreciation ⚠️ 31 | To migrate your code, follow the tutorial to see how to beneficiate from the new system & remove the depreciation warnings. 32 | 33 | ℹ️ Quick note: The new system support multiple scans & PDF. In this tutorial we cover how to get 1 scan. It is very straigth forward to get eveything else! 34 | 35 | ## Topics 36 | 37 | ### Essentials 38 | 39 | - 40 | - 41 | - 42 | - 43 | - 44 | 45 | ### Classes 46 | 47 | - ``IRLPDFScanContent/IRLPDFScanContent`` 48 | 49 | ### Protocols 50 | 51 | - ``IRLPDFScanContent/IRLPDFScanContentProtocol`` 52 | - ``IRLPDFScanContent/IRLVNDocumentCameraScanAdditions`` 53 | 54 | ### Structures 55 | 56 | - ``IRLPDFScanContent/IRLPDFView`` 57 | 58 | ### Legacy 59 | 60 | - ``IRLPDFScanContent/IRLScannerViewController`` 61 | - ``IRLPDFScanContent/IRLScannerViewControllerDelegate`` 62 | - ``IRLPDFScanContent/IRLScannerViewControllerVNDocumentCameraViewAdditions`` 63 | 64 | -------------------------------------------------------------------------------- /docs/js/highlight-js-java.a814d7f9.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-java"],{"332f":function(e,a){var n="[0-9](_*[0-9])*",s=`\\.(${n})`,t="[0-9a-fA-F](_*[0-9a-fA-F])*",i={className:"number",variants:[{begin:`(\\b(${n})((${s})|\\.)?|(${s}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${s})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${s})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${t})\\.?|(${t})?\\.(${t}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${t})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function r(e,a,n){return-1===n?"":e.replace(a,s=>r(e,a,n-1))}function l(e){const a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+r("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],t=["super","this"],l=["false","true","null"],c=["char","boolean","long","float","int","byte","short","double"],o={keyword:s,literal:l,type:c,built_in:t},b={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:o,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:o,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i,b]}}e.exports=l}}]); -------------------------------------------------------------------------------- /Demo-Carthage/IRLPDFScanDemo/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | 15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 19 | guard let _ = (scene as? UIWindowScene) else { return } 20 | } 21 | 22 | func sceneDidDisconnect(_ scene: UIScene) { 23 | // Called as the scene is being released by the system. 24 | // This occurs shortly after the scene enters the background, or when its session is discarded. 25 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). 27 | } 28 | 29 | func sceneDidBecomeActive(_ scene: UIScene) { 30 | // Called when the scene has moved from an inactive state to an active state. 31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 | } 33 | 34 | func sceneWillResignActive(_ scene: UIScene) { 35 | // Called when the scene will move from an active state to an inactive state. 36 | // This may occur due to temporary interruptions (ex. an incoming phone call). 37 | } 38 | 39 | func sceneWillEnterForeground(_ scene: UIScene) { 40 | // Called as the scene transitions from the background to the foreground. 41 | // Use this method to undo the changes made on entering the background. 42 | } 43 | 44 | func sceneDidEnterBackground(_ scene: UIScene) { 45 | // Called as the scene transitions from the foreground to the background. 46 | // Use this method to save data, release shared resources, and store enough scene-specific state information 47 | // to restore the scene back to its current state. 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /Demo-Cocoapods/IRLPDFScanDemo/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // IRLPDFScanDemo 4 | // 5 | // Created by Denis Martin-Bruillot on 06/11/2021. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | 15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 19 | guard let _ = (scene as? UIWindowScene) else { return } 20 | } 21 | 22 | func sceneDidDisconnect(_ scene: UIScene) { 23 | // Called as the scene is being released by the system. 24 | // This occurs shortly after the scene enters the background, or when its session is discarded. 25 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). 27 | } 28 | 29 | func sceneDidBecomeActive(_ scene: UIScene) { 30 | // Called when the scene has moved from an inactive state to an active state. 31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 | } 33 | 34 | func sceneWillResignActive(_ scene: UIScene) { 35 | // Called when the scene will move from an active state to an inactive state. 36 | // This may occur due to temporary interruptions (ex. an incoming phone call). 37 | } 38 | 39 | func sceneWillEnterForeground(_ scene: UIScene) { 40 | // Called as the scene transitions from the background to the foreground. 41 | // Use this method to undo the changes made on entering the background. 42 | } 43 | 44 | func sceneDidEnterBackground(_ scene: UIScene) { 45 | // Called as the scene transitions from the foreground to the background. 46 | // Use this method to save data, release shared resources, and store enough scene-specific state information 47 | // to restore the scene back to its current state. 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | fastlane/report.xml 81 | fastlane/Preview.html 82 | fastlane/screenshots/**/*.png 83 | fastlane/test_output 84 | 85 | # Code Injection 86 | # 87 | # After new code Injection tools there's a generated folder /iOSInjectionProject 88 | # https://github.com/johnno1962/injectionforxcode 89 | 90 | iOSInjectionProject/ 91 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContentProtocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRLPDFScanContentProtocol.swift 3 | // IRLPDFScanContent 4 | // 5 | // Created by Denis Martin-Bruillot on 09/09/2021. 6 | // Copyright © 2021 Denis Martin-Bruillot. All rights reserved. 7 | // 8 | 9 | /// Delegate responding to various events from ``IRLPDFScanContent/IRLPDFScanContent`` 10 | public protocol IRLPDFScanContentProtocol { 11 | 12 | /// Call when the Scanner UI successfuly perfromed the scan 13 | /// 14 | /// - You may now use or store the [VNDocumentCameraScan](https://developer.apple.com/documentation/visionkit/vndocumentcamerascan) and use at your convenience ``IRLPDFScanContent/IRLVNDocumentCameraScanAdditions/generatePDF(with:)-7wexb`` or ``IRLPDFScanContent/IRLVNDocumentCameraScanAdditions/scanImages-17r9d`` 15 | /// 16 | /// - You can also get the result directly from the caller using ``IRLPDFScanContent/IRLPDFScanContent/generatePDF(with:)`` or ``IRLPDFScanContent/IRLPDFScanContent/scanImages`` 17 | /// 18 | /// - Parameters: 19 | /// - caller: Your ``IRLPDFScanContent/IRLPDFScanContent`` instance 20 | /// - scan: The [VNDocumentCameraScan](https://developer.apple.com/documentation/visionkit/vndocumentcamerascan) retrurned from the scanner 21 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) 22 | 23 | /// Call if the Scanner UI failed 24 | /// - Parameters: 25 | /// - caller: Your ``IRLPDFScanContent/IRLPDFScanContent`` instance 26 | /// - error: The `Error` retrurned from the scanne 27 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) 28 | 29 | /// Call after the Scanner UI has been presented 30 | /// - Parameters: 31 | /// - caller: Your ``IRLPDFScanContent/IRLPDFScanContent`` instance 32 | /// - viewController: The `UIViewController` it was presented from. (Discovered automatically from the main window or scene 33 | func scanContentDidPresent(caller: IRLPDFScanContent, in viewController: UIViewController) 34 | 35 | /// Call after the Scanner UI was dissmissed 36 | /// - Parameters: 37 | /// - caller: Your ``IRLPDFScanContent/IRLPDFScanContent`` instance 38 | func scanContentDissmissed(caller: IRLPDFScanContent) 39 | 40 | } 41 | 42 | public extension IRLPDFScanContentProtocol { 43 | 44 | func scanContentDidPresent(caller: IRLPDFScanContent, in viewController: UIViewController) { 45 | /// Make it optional 46 | } 47 | 48 | func scanContentDissmissed(caller: IRLPDFScanContent) { 49 | /// Make it optional 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/ClassicalDelegate.md: -------------------------------------------------------------------------------- 1 | # Classical Delegate 2 | 3 | ``IRLPDFScanContent`` provide a ``IRLPDFScanContent/IRLPDFScanContent/delegate`` call for each action taken by the scanner. Check ``IRLPDFScanContentProtocol`` for more details 4 | 5 | ## Overview 6 | 7 | Here we will see how to use itin `UIKit` within a `UIViewController` 8 | 9 | In a nutshell, the ``IRLPDFScanContent/IRLPDFScanContent`` is independant and will report to the ``IRLPDFScanContent/IRLPDFScanContent/delegate`` any action taken by the user. 10 | 11 | ## Perfrom a Scan 12 | 13 | - Initiate the object with ``IRLPDFScanContent/IRLPDFScanContent/init(with:)`` (You may pass a delegate (``IRLPDFScanContent/IRLPDFScanContentProtocol``) or observe changes 14 | - Present the scan view to the user using ``IRLPDFScanContent/IRLPDFScanContent/present(animated:completion:) 15 | - Wait for ``IRLPDFScanContent/IRLPDFScanContent/delegate`` to be call on the method: ``IRLPDFScanContent/IRLPDFScanContentProtocol/scanContent(caller:didScan:)`` 16 | - Generate a PDF using ``IRLPDFScanContent/IRLPDFScanContent/generatePDF(with:)`` and get the URL. (Or get images using ``IRLPDFScanContent/IRLPDFScanContent/scanImages``) 17 | - Pass it to a classical: [`PDFView`](https://developer.apple.com/documentation/pdfkit/pdfview) to display it 18 | 19 | ``` swift 20 | import UIKit 21 | import IRLPDFScanContent 22 | 23 | class ViewController: UIViewController { 24 | 25 | let scanner = IRLPDFScanContent() 26 | 27 | @IBOutlet weak var text: UILabel! 28 | 29 | @IBOutlet weak var pdfView: PDFView! 30 | 31 | override func viewDidLoad() { 32 | super.viewDidLoad() 33 | // Do any additional setup after loading the view. 34 | view.bringSubviewToFront(text) 35 | } 36 | 37 | @IBAction func startScan(_ sender: Any) { 38 | pdfView.document = nil 39 | text.text = "Use the Scan Button" 40 | scanner.delegate = self 41 | scanner.present(animated: true, completion: nil) 42 | } 43 | 44 | } 45 | 46 | extension ViewController: IRLPDFScanContentProtocol { 47 | 48 | func scanContent(caller: IRLPDFScanContent, didScan scan: VNDocumentCameraScan) { 49 | guard let document = scan.generatePDFDocument(pdfView: self.pdfView) else { 50 | return 51 | } 52 | view.sendSubviewToBack(text) 53 | pdfView.document = document 54 | } 55 | 56 | func scanContent(caller: IRLPDFScanContent, didFail error: Error) { 57 | view.bringSubviewToFront(text) 58 | text.text = error.localizedDescription 59 | } 60 | 61 | } 62 | ``` 63 | -------------------------------------------------------------------------------- /docs/js/highlight-js-llvm.ddaa176e.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-llvm"],{"7c30":function(e,n){function a(e){return e?"string"===typeof e?e:e.source:null}function t(...e){const n=e.map(e=>a(e)).join("");return n}function i(e){const n=/([-a-zA-Z$._][\w$.-]*)/,a={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},l={className:"punctuation",relevance:0,begin:/,/},c={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:t(/%/,n)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:t(/@/,n)},{begin:/@\d+/},{begin:t(/!/,n)},{begin:t(/!\d+/,n)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[a,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,l,i,s,r,c]}}e.exports=i}}]); -------------------------------------------------------------------------------- /IRLPDFScanContent.xcodeproj/xcshareddata/xcschemes/IRLPDFScanContent.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /docs/js/highlight-js-objectivec.bcdf5156.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-objectivec"],{"9bf2":function(e,n){function _(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],o={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:o,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=_}}]); -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfscancontent/observableobject-implementations.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfscancontent\/observableobject-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/ObservableObject-Implementations","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"No overview available."}],"kind":"article","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"collectionGroup","title":"ObservableObject Implementations"},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent"]]},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/objectWillChange"],"generated":true}],"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent":{"role":"symbol","title":"IRLPDFScanContent","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFScanContent"}],"abstract":[{"type":"text","text":"Use this class in to perform a scan an get the PDF or images as result"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFScanContent"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent/objectWillChange":{"conformance":{"constraints":[{"type":"codeVoice","code":"ObjectWillChangePublisher"},{"type":"text","text":" is "},{"type":"codeVoice","code":"ObservableObjectPublisher"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"role":"symbol","title":"objectWillChange","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"objectWillChange"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"ObservableObjectPublisher","preciseIdentifier":"s:7Combine25ObservableObjectPublisherC"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/objectWillChange","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent\/objectwillchange"}}} -------------------------------------------------------------------------------- /docs/js/highlight-js-custom-markdown.fb3d4662.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-markdown","highlight-js-markdown"],{"04b0":function(n,e){function a(n){return n?"string"===typeof n?n:n.source:null}function i(...n){const e=n.map(n=>a(n)).join("");return e}function s(n){const e={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},a={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},t={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},c={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:i(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},o={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},g={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};o.contains.push(g),g.contains.push(o);let r=[e,l];o.contains=o.contains.concat(r),g.contains=g.contains.concat(r),r=r.concat(o,g);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:r}]}]},u={className:"quote",begin:"^>\\s+",contains:r,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,e,t,o,g,u,s,a,l,c]}}n.exports=s},"84cb":function(n,e,a){"use strict";a.r(e);var i=a("04b0"),s=a.n(i);const t={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},d={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},l={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};e["default"]=function(n){const e=s()(n),a=e.contains.find(({className:n})=>"code"===n);a.variants=a.variants.filter(({begin:n})=>!n.includes("( {4}|\\t)"));const i=[...e.contains.filter(({className:n})=>"code"!==n),a];return{...e,contains:[c,t,d,l,...i]}}}}]); -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfscancontent/defaultpdfname.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultPDFName"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfscancontent\/defaultpdfname"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/defaultPDFName","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Default name use when generating the PDF. The PDF is saved to your app documentDirectory"}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultPDFName"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"defaultPDFName","roleHeading":"Type Property","role":"symbol","symbolKind":"property","externalID":"s:17IRLPDFScanContentAAC14defaultPDFNameSSvpZ","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent":{"role":"symbol","title":"IRLPDFScanContent","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFScanContent"}],"abstract":[{"type":"text","text":"Use this class in to perform a scan an get the PDF or images as result"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFScanContent"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent/defaultPDFName":{"role":"symbol","title":"defaultPDFName","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultPDFName"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[{"type":"text","text":"Default name use when generating the PDF. The PDF is saved to your app documentDirectory"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/defaultPDFName","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent\/defaultpdfname"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/url.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":"?"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/url"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/url","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The URL of the PDF being display"}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":"?"}],"title":"url","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:17IRLPDFScanContent10IRLPDFViewV3url10Foundation3URLVSgvp","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/url":{"role":"symbol","title":"url","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The URL of the PDF being display"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/url","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/url"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}}} -------------------------------------------------------------------------------- /docs/js/highlight-js-ruby.fb547e8d.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-ruby"],{"82cb":function(e,n){function i(e){return e?"string"===typeof e?e:e.source:null}function a(e){return s("(?=",e,")")}function s(...e){const n=e.map(e=>i(e)).join("");return n}function b(e){const n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",built_in:"proc lambda",literal:"true false nil"},b={className:"doctag",begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},c=[e.COMMENT("#","$",{contains:[b]}),e.COMMENT("^=begin","^=end",{contains:[b],relevance:10}),e.COMMENT("^__END__","\\n$")],t={className:"subst",begin:/#\{/,end:/\}/,keywords:i},d={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:s(/<<[-~]?'?/,a(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,t]})]}]},o="[1-9](_?[0-9])*|0",g="[0-9](_?[0-9])*",l={className:"number",relevance:0,variants:[{begin:`\\b(${o})(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},_={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:i},u=[d,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(c)},{className:"function",begin:s(/def\s+/,a(n+"\\s*(\\(|;|$)")),relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),_].concat(c)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:n}],relevance:0},l,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,t],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r,c),relevance:0}].concat(r,c);t.contains=u,_.contains=u;const w="[>?]>",E="[\\w#]+\\(\\w+\\):\\d+:\\d+>",N="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",m=[{begin:/^\s*=>/,starts:{end:"$",contains:u}},{className:"meta",begin:"^("+w+"|"+E+"|"+N+")(?=[ ])",starts:{end:"$",contains:u}}];return c.unshift(r),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(m).concat(c).concat(u)}}e.exports=b}}]); -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/document.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":"?"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/document"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/document","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The PDF being display"}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":"?"}],"title":"document","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:17IRLPDFScanContent10IRLPDFViewV8documentSo11PDFDocumentCSgvp","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/document":{"role":"symbol","title":"document","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The PDF being display"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/document","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/document"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/init(url:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["iOS"]}]},{"kind":"parameters","parameters":[{"name":"url","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The URL of the PDF to display"}]}]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/init(url:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/init(url:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Initializer"}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":")"}],"title":"init(url:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:17IRLPDFScanContent10IRLPDFViewV3urlAC10Foundation3URLV_tcfc","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/init(url:)":{"role":"symbol","title":"init(url:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"url"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Initializer"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/init(url:)","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/init(url:)"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"}}} -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/Tutuorials/SwiftUI IRLPDFScanContent.tutorial: -------------------------------------------------------------------------------- 1 | @Tutorial(time: 5) { 2 | @Intro(title: "Using IRLPDFScanContent with SwiftUI") { 3 | We will see how we can add pdf scanning functionality to a Standard SwiftUI Content View. 4 | 1. Make sure you add the description for the key `NSCameraUsageDescription` in your `Info.plist` 5 | 2. Add the Scanner & PDF View to your content 6 | 3. Present the scanner & react on value changes 7 | 8 | 📚 See also: ``IRLPDFScanContent/IRLPDFScanContent`` & ``IRLPDFScanContent/IRLPDFView`` 9 | } 10 | 11 | @Section(title: "Update your Info.plist") { 12 | @ContentAndMedia { 13 | To make sure the app can use the camera, we need to allow it to request permission. 14 | 15 | } 16 | @Steps { 17 | @Step { 18 | Open you `Info.plist` or go to `YourProject`/ `YourTarget` / `Info` 19 | @Code(name: "Info.plist", file: 00-Info.plist) 20 | } 21 | @Step { 22 | 23 | ⚠️ As of iOS 10, you must povide a reason for using the camera in you Info.plist: 24 | Please add the following to your plist: 25 | **[NSCameraUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription) : Use to scan** 26 | 27 | @Code(name: "Info.plist", file: 01-Info.plist) 28 | } 29 | } 30 | } 31 | 32 | 33 | @Section(title: "Add the scanner capability") { 34 | @ContentAndMedia { 35 | Once our Package is available in the project, we will now add the ability to scan a PDF 36 | } 37 | @Steps { 38 | @Step { 39 | 📱 Let's start with the "Hello world" project 40 | 41 | ✅ Make sure you added the dependency to your project, see **Essentials / Getting Started** for more details 42 | @Code(name: "ContentView.swift", file: 1-ContentView.swift) 43 | } 44 | @Step { 45 | 📚 First, `import` ``IRLPDFScanContent`` 46 | 47 | 👉 Make it available as an `@ObservedObject` `scanner` variable to your view 48 | @Code(name: "ContentView.swift", file: 2-ContentView.swift) 49 | } 50 | @Step { 51 | 🗺 Let's put evertyhing in a **NavigationView** 52 | 53 | 👉 Add a trailing **Scan** button 54 | @Code(name: "ContentView.swift", file: 3-ContentView.swift) 55 | } 56 | @Step { 57 | 🪟 Now let's use the provided **present(animated:)** from our Scanner 58 | 59 | 📚 ``IRLPDFScanContent/IRLPDFScanContent/present(animated:completion:)`` 60 | @Code(name: "ContentView.swift", file: 4-ContentView.swift) 61 | } 62 | @Step { 63 | 💡 For convenience, we wrap our view in a `VStack` 64 | 65 | 👉 Why? Because we want to show the **PDF** or the **Text** 66 | 67 | @Code(name: "ContentView.swift", file: 5-ContentView.swift) 68 | } 69 | @Step { 70 | 😁 Finaly, let's observe the content of ``IRLPDFScanContent/IRLPDFScanContent/latestScan`` and display the PDF when available 71 | 72 | 🛠 Build & Run! ⚠️ Make sure you run it on a Device! 📲 73 | @Code(name: "ContentView.swift", file: FINAL-ContentView.swift) 74 | } 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/pdfview.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/pdfview"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/pdfView","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},{"type":"text","text":" is accessible so you can customize it."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"}],"title":"pdfView","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:17IRLPDFScanContent10IRLPDFViewV7pdfViewSo7PDFViewCvp","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView"]]},"references":{"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/pdfView":{"role":"symbol","title":"pdfView","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"}],"abstract":[{"type":"text","text":"The "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},{"type":"text","text":" is accessible so you can customize it."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/pdfView","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"}}} -------------------------------------------------------------------------------- /Sources/IRLPDFScanContent/IRLPDFScanContent.docc/GettingStarted.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | A convenient class usable from `UIKit` view controller or `SwiftUI` to scan document & get `UIImage` or `PDFDocument` as result 4 | 5 | ## Overview 6 | 7 | Use this class in to perform a scan and get images or a PDF as result. 8 | 9 | **MINIMUM iOS REQUIREMENT: 13.0** 10 | 11 | Integration of this Library can be done using SPM, Cocoapods, Carthage or you can download the code and drop the "Sources/IRLPDFScaContent" to your project. 12 | 13 | 📚 If you drop the source code from "Sources/IRLPDFScaContent", you may want to remove the ``IRLPDFScanContent``.docc folder as the documentation is intended to be nuidl for a Module. 14 | 15 | ## Info.plist requirement 16 | 17 | As of iOS 10, you must povide a reason for using the camera in you Info.plist: 18 | Please add the following to your plist: 19 | **[NSCameraUsageDescription](https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription) : We need the camera to scan** 20 | 21 | ## Swift Package 22 | Integrate the library via Swift Package (With Documentation) 23 | 24 | #### In Xcode 25 | 26 | Add the Package to your project, min version `5.5`, See [Apple Documentation](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app) for more details. 27 | 28 | #### Manually 29 | 30 | Create a Package.swift in a folder, then Drop the file on Xcode 31 | 32 | ```swift 33 | // swift-tools-version:5.5 34 | // The swift-tools-version declares the minimum version of Swift required to build this package. 35 | import PackageDescription 36 | let package = Package( 37 | name: "SPMDemo", 38 | products: [ 39 | .library( 40 | name: "SPMDemo", 41 | targets: ["SPMDemo"]), 42 | ], 43 | dependencies: [ 44 | .package(url: "git@github.com:charlymr/IRLPDFScanContent.git", from: "1.1.0"), 45 | ], 46 | targets: [ 47 | .target( name: "SPMDemo", 48 | dependencies: [ 49 | .product(name: "IRLPDFScanContent", package: "IRLPDFScanContent"), 50 | ]) 51 | ] 52 | ) 53 | ``` 54 | 55 | ## CocoaPods 56 | Integrate the library via CocoaPods 57 | 58 | #### Install CocoaPods 59 | if not already available: 60 | 61 | ``` bash 62 | $ [sudo] gem install cocoapods 63 | $ pod setup 64 | ``` 65 | 66 | #### Update your Podfile 67 | Change to the directory of your Xcode project, and Create and Edit your Podfile and add ``IRLPDFScanContent``: 68 | 69 | ``` bash 70 | $ cd /path/to/MyProject 71 | $ touch Podfile 72 | ## edit Podfile: 73 | 74 | platform :ios, '13.0' 75 | 76 | target "YOUR APP" do 77 | pod 'IRLPDFScanContent' 78 | use_frameworks! 79 | end 80 | ``` 81 | 82 | #### Prepare project 83 | run `pod update` or `pod install` to generate the Workspace 84 | 85 | ``` bash 86 | $ pod update 87 | ``` 88 | 89 | ## Carthage 90 | Integrate the library via Carthage. 91 | For more details on Cartage and how to use it, check the [Carthage Github](https://github.com/Carthage/Carthage) documentation 92 | 93 | #### Install Carthage 94 | Install [Carthage](https://github.com/Carthage/Carthage#installing-carthage) if not already available 95 | 96 | #### Update your CartFile 97 | Change to the directory of your Xcode project, and Create and Edit your CartFile and add ``IRLPDFScanContent``: 98 | 99 | ``` bash 100 | $ cd /path/to/MyProject 101 | $ touch CartFile 102 | ## edit CartFile: 103 | 104 | github "charlymr/IRLPDFScanContent" ~> 1.1.0 105 | ``` 106 | 107 | #### Prepare 108 | ``` bash 109 | $ carthage update --use-xcframeworks 110 | ``` 111 | Drop the Carthage/Build/iOS `.xcframework` in your project. 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /docs/js/highlight-js-c.99b899e6.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-c"],{"1fe5":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function s(e){return r("(?:",e,")?")}function r(...e){const n=e.map(e=>t(e)).join("");return n}function i(e){const n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),t="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",i="<[^<>]+>",a="("+t+"|"+s(r)+"[a-zA-Z_]\\w*"+s(i)+")",c={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},l="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+l+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:s(r)+e.IDENT_RE,relevance:0},p=s(r)+e.IDENT_RE+"\\s*\\(",m=["asm","auto","break","case","const","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","static","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],_=["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","complex","bool","imaginary"],f={keyword:m,type:_,literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[u,c,n,e.C_BLOCK_COMMENT_MODE,d,o],w={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:f,contains:b.concat([{begin:/\(/,end:/\)/,keywords:f,contains:b.concat(["self"]),relevance:0}]),relevance:0},y={begin:"("+a+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:f,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:t,keywords:f,relevance:0},{begin:p,returnBegin:!0,contains:[e.inherit(g,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,o,d,c,{begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,o,d,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,u]};return{name:"C",aliases:["h"],keywords:f,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:u,strings:o,keywords:f}}}e.exports=i}}]); -------------------------------------------------------------------------------- /docs/tutorial/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/js/highlight-js-php.cc8d6c27.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-php"],{2907:function(e,r){function t(e){const r={className:"variable",begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*(?![A-Za-z0-9])(?![$])"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'"}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={className:"number",variants:[{begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?"}],relevance:0},s={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{case_insensitive:!0,keywords:s,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}e.exports=t}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-python.b6226703.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-python"],{9510:function(e,n){function t(e,...n){const t=Object.create(null);for(const i in e)t[i]=e[i];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function i(e){return e?"string"===typeof e?e:e.source:null}function s(e){return a("(?=",e,")")}function a(...e){const n=e.map(e=>i(e)).join("");return n}function r(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function o(...e){const n=r(e),t="("+(n.capture?"":"?:")+e.map(e=>i(e)).join("|")+")";return t}const c="[a-zA-Z]\\w*",l=function(e,n,i={}){const s=t({scope:"comment",begin:e,end:n,contains:[]},i);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=o("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:a(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s};function b(e){const n=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],t=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],i=["__debug__","Ellipsis","False","None","NotImplemented","True"],a=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],r={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:n,built_in:t,literal:i,type:a},o={className:"meta",begin:/^(>>>|\.\.\.) /},l={className:"subst",begin:/\{/,end:/\}/,keywords:r,illegal:/#/},b={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o,b,l]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o,b,l]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,b,l]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,b,l]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",u=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,g={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${u}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${u})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},f={className:"comment",begin:s(/# type:/),end:/$/,keywords:r,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:["self",o,g,d,e.HASH_COMMENT_MODE]}]};return l.contains=[d,g,o],{name:"Python",aliases:["py","gyp","ipython"],keywords:r,illegal:/(<\/|->|\?)|=>/,contains:[o,g,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,f,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,c],scope:{1:"keyword",3:"title.function"},contains:[m]},{variants:[{match:[/class/,/\s+/,c,/\s*/,/\(\s*/,c,/\s*\)/]},{match:[/class/,/\s+/,c]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,d]}]}}l("//","$"),l("/\\*","\\*/"),l("#","$"),e.exports=b}}]); -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/labelshidden().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"labelsHidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/labelshidden()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/labelsHidden()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.labelsHidden()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"labelsHidden()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"labelsHidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE12labelsHiddenQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/labelsHidden()":{"role":"symbol","title":"labelsHidden()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"labelsHidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/labelsHidden()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/labelshidden()"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/body.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"body"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Never","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/body"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/body","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"UIViewRepresentable.body"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"body","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"body"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Never","preciseIdentifier":"s:s5NeverO"}],"symbolKind":"property","externalID":"s:7SwiftUI19UIViewRepresentablePAAE4bodys5NeverOvp::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/UIViewRepresentable-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/body":{"role":"symbol","title":"body","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"body"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Never","preciseIdentifier":"s:s5NeverO"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/body","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/body"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/UIViewRepresentable-Implementations":{"role":"collectionGroup","title":"UIViewRepresentable Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/UIViewRepresentable-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/uiviewrepresentable-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}}} -------------------------------------------------------------------------------- /docs/js/highlight-js-perl.b3c5d3f2.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-perl"],{"6a51":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function r(...e){const n=e.map(e=>t(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function i(...e){const n=s(e),r="("+(n.capture?"":"?:")+e.map(e=>t(e)).join("|")+")";return r}function a(e){const n=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],t=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/,keyword:n.join(" ")},a={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},o={begin:/->\{/,end:/\}/},c={variants:[{begin:/\$\d/},{begin:r(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},g=[e.BACKSLASH_ESCAPE,a,c],l=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],p=(e,n,s="\\1")=>{const i="\\1"===s?s:r(s,n);return r(r("(?:",e,")"),n,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,t)},d=(e,n,s)=>r(r("(?:",e,")"),n,/(?:\\.|[^\\\/])*?/,s,t),b=[c,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),o,{className:"string",contains:g,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:p("s|tr|y",i(...l,{capture:!0}))},{begin:p("s|tr|y","\\(","\\)")},{begin:p("s|tr|y","\\[","\\]")},{begin:p("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",i(...l,{capture:!0}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return a.contains=b,o.contains=b,{name:"Perl",aliases:["pl","pm"],keywords:s,contains:b}}e.exports=a}}]); -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/hidden().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/hidden()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/hidden()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.hidden()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"hidden()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE6hiddenQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"10.15","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/hidden()":{"role":"symbol","title":"hidden()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hidden"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/hidden()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/hidden()"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/fixedsize().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"fixedSize"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/fixedsize()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/fixedSize()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.fixedSize()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"fixedSize()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"fixedSize"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE9fixedSizeQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"10.15","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/fixedSize()":{"role":"symbol","title":"fixedSize()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"fixedSize"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/fixedSize()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/fixedsize()"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/init(document:pdfview:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":", "},{"kind":"externalParam","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"},{"kind":"text","text":" = PDFView())"}],"languages":["swift"],"platforms":["iOS"]}]},{"kind":"parameters","parameters":[{"name":"document","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The PDF to display"}]}]},{"name":"pdfView","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"An optional "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},{"type":"text","text":" that will be use."}]}]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/init(document:pdfview:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/init(document:pdfView:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Initializer"}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":", "},{"kind":"externalParam","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"},{"kind":"text","text":")"}],"title":"init(document:pdfView:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:17IRLPDFScanContent10IRLPDFViewV8document7pdfViewACSo11PDFDocumentC_So7PDFViewCtcfc","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView"]]},"references":{"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/init(document:pdfView:)":{"role":"symbol","title":"init(document:pdfView:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"document"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFDocument","preciseIdentifier":"c:objc(cs)PDFDocument"},{"kind":"text","text":", "},{"kind":"externalParam","text":"pdfView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PDFView","preciseIdentifier":"c:objc(cs)PDFView"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Initializer"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/init(document:pdfView:)","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/init(document:pdfview:)"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/unredacted().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unredacted"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/unredacted()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/unredacted()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.unredacted()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"unredacted()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unredacted"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE10unredactedQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"14.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"11.0","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"14.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"7.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/unredacted()":{"role":"symbol","title":"unredacted()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unredacted"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/unredacted()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/unredacted()"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/colorinvert().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"colorInvert"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/colorinvert()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/colorInvert()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.colorInvert()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"colorInvert()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"colorInvert"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE11colorInvertQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"10.15","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/colorInvert()":{"role":"symbol","title":"colorInvert()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"colorInvert"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/colorInvert()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/colorinvert()"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/scaledtofit().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFit"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/scaledtofit()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/scaledToFit()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.scaledToFit()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"scaledToFit()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFit"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE11scaledToFitQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"10.15","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/scaledToFit()":{"role":"symbol","title":"scaledToFit()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFit"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/scaledToFit()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/scaledtofit()"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfview/scaledtofill().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFill"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"},{"kind":"text","text":"\n"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfview\/scaledtofill()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/scaledToFill()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"View.scaledToFill()"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"modules":[{"name":"IRLPDFScanContent"}],"role":"symbol","title":"scaledToFill()","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFill"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"symbolKind":"method","externalID":"s:7SwiftUI4ViewPAAE12scaledToFillQryF::SYNTHESIZED::s:17IRLPDFScanContent10IRLPDFViewV","extendedModule":"SwiftUI","platforms":[{"beta":false,"unavailable":false,"name":"iOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"macOS","introducedAt":"10.15","deprecated":false},{"beta":false,"unavailable":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"beta":false,"unavailable":false,"name":"watchOS","introducedAt":"6.0","deprecated":false}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/scaledToFill()":{"role":"symbol","title":"scaledToFill()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scaledToFill"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"some"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:7SwiftUI4ViewP"}],"abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/scaledToFill()","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/scaledtofill()"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView":{"role":"symbol","title":"IRLPDFView","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFView"}],"abstract":[{"type":"text","text":"A simple but very efficient "},{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" wrapper of "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFView"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfview"},"https://developer.apple.com/documentation/pdfkit/pdfview":{"title":"PDFView","titleInlineContent":[{"type":"codeVoice","code":"PDFView"}],"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview","url":"https:\/\/developer.apple.com\/documentation\/pdfkit\/pdfview"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFView/View-Implementations":{"role":"collectionGroup","title":"View Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFView\/View-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfview\/view-implementations"}}} -------------------------------------------------------------------------------- /docs/data/documentation/irlpdfscancontent/irlpdfscancontent/documentcameraviewcontrollerdidcancel(_:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentCameraViewControllerDidCancel"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"controller"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"VNDocumentCameraViewController","preciseIdentifier":"c:objc(cs)VNDocumentCameraViewController"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["iOS"]}]}],"schemaVersion":{"major":0,"minor":1,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/irlpdfscancontent\/irlpdfscancontent\/documentcameraviewcontrollerdidcancel(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/documentCameraViewControllerDidCancel(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from VNDocumentCameraViewControllerDelegate.documentCameraViewControllerDidCancel(_:)."}],"kind":"symbol","metadata":{"role":"symbol","title":"documentCameraViewControllerDidCancel(_:)","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentCameraViewControllerDidCancel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"VNDocumentCameraViewController","preciseIdentifier":"c:objc(cs)VNDocumentCameraViewController"},{"kind":"text","text":")"}],"symbolKind":"method","externalID":"c:@CM@IRLPDFScanContent@objc(cs)IRLPDFScanContent(im)documentCameraViewControllerDidCancel:","extendedModule":"IRLPDFScanContent","modules":[{"name":"IRLPDFScanContent"}]},"hierarchy":{"paths":[["doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent","doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/VNDocumentCameraViewControllerDelegate-Implementations"]]},"references":{"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent/VNDocumentCameraViewControllerDelegate-Implementations":{"role":"collectionGroup","title":"VNDocumentCameraViewControllerDelegate Implementations","abstract":[],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/VNDocumentCameraViewControllerDelegate-Implementations","kind":"article","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent\/vndocumentcameraviewcontrollerdelegate-implementations"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent":{"role":"collection","title":"IRLPDFScanContent","abstract":[{"type":"codeVoice","code":"SwiftUI"},{"type":"text","text":" & "},{"type":"codeVoice","code":"UKKit"},{"type":"text","text":" - Images or PDF scanner."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent/documentCameraViewControllerDidCancel(_:)":{"role":"symbol","title":"documentCameraViewControllerDidCancel(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentCameraViewControllerDidCancel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"VNDocumentCameraViewController","preciseIdentifier":"c:objc(cs)VNDocumentCameraViewController"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Inherited from VNDocumentCameraViewControllerDelegate.documentCameraViewControllerDidCancel(_:)."}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent\/documentCameraViewControllerDidCancel(_:)","kind":"symbol","type":"topic","url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent\/documentcameraviewcontrollerdidcancel(_:)"},"doc://com.irlmobile.IRLPDFScanContent/documentation/IRLPDFScanContent/IRLPDFScanContent":{"role":"symbol","title":"IRLPDFScanContent","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"IRLPDFScanContent"}],"abstract":[{"type":"text","text":"Use this class in to perform a scan an get the PDF or images as result"}],"identifier":"doc:\/\/com.irlmobile.IRLPDFScanContent\/documentation\/IRLPDFScanContent\/IRLPDFScanContent","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"IRLPDFScanContent"}],"url":"\/documentation\/irlpdfscancontent\/irlpdfscancontent"}}} --------------------------------------------------------------------------------