質問編集履歴
5
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
createPdfFromView(aView: canvasView, saveToDocumentsWithFileName: "test
|
87
|
+
createPdfFromView(aView: canvasView, saveToDocumentsWithFileName: "test")
|
88
88
|
|
89
89
|
|
90
90
|
|
@@ -136,9 +136,9 @@
|
|
136
136
|
|
137
137
|
// 読み込み
|
138
138
|
|
139
|
-
let
|
139
|
+
let Path = UserDefaults.standard.string(forKey:"filePath")
|
140
140
|
|
141
|
-
let pdfURL = URL(fileURLWithPath:
|
141
|
+
let pdfURL = URL(fileURLWithPath: Path)
|
142
142
|
|
143
143
|
|
144
144
|
|
4
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,9 +64,11 @@
|
|
64
64
|
|
65
65
|
print("プレビュー作成おわり")
|
66
66
|
|
67
|
-
//
|
67
|
+
// 保存
|
68
68
|
|
69
|
-
|
69
|
+
UserDefaults.standard.set(documentsFileName, forKey:"filePath")
|
70
|
+
|
71
|
+
|
70
72
|
|
71
73
|
}
|
72
74
|
|
@@ -82,7 +84,7 @@
|
|
82
84
|
|
83
85
|
|
84
86
|
|
85
|
-
createPdfFromView(aView: canvasView, saveToDocumentsWithFileName: "
|
87
|
+
createPdfFromView(aView: canvasView, saveToDocumentsWithFileName: "test.pdf")
|
86
88
|
|
87
89
|
|
88
90
|
|
@@ -108,15 +110,11 @@
|
|
108
110
|
|
109
111
|
|
110
112
|
|
111
|
-
|
113
|
+
@IBOutlet weak var pdfView: PDFView!
|
112
114
|
|
113
115
|
|
114
116
|
|
115
|
-
|
116
117
|
|
117
|
-
// UserDefaults のインスタンス
|
118
|
-
|
119
|
-
let userDefaults = UserDefaults.standard
|
120
118
|
|
121
119
|
|
122
120
|
|
@@ -128,27 +126,21 @@
|
|
128
126
|
|
129
127
|
|
130
128
|
|
131
|
-
|
129
|
+
|
132
130
|
|
133
|
-
let
|
131
|
+
let pdfView = PDFView(frame: view.frame)
|
134
132
|
|
135
|
-
|
133
|
+
|
136
134
|
|
137
135
|
|
138
136
|
|
139
|
-
//
|
137
|
+
// 読み込み
|
140
138
|
|
141
|
-
|
139
|
+
let filePath0 = UserDefaults.standard.string(forKey:"filePath")
|
142
140
|
|
143
|
-
let th
|
141
|
+
let pdfURL = URL(fileURLWithPath: filePath0!)
|
144
142
|
|
145
|
-
|
143
|
+
|
146
|
-
|
147
|
-
let pdfURL = URL(fileURLWithPath : thePath)
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
144
|
|
153
145
|
|
154
146
|
|
@@ -170,7 +162,7 @@
|
|
170
162
|
|
171
163
|
|
172
164
|
|
173
|
-
|
165
|
+
view.addSubview(pdfView)
|
174
166
|
|
175
167
|
|
176
168
|
|
3
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,56 +24,72 @@
|
|
24
24
|
|
25
25
|
```swift
|
26
26
|
|
27
|
-
// UserDefaults のインスタンス
|
27
|
+
// UserDefaults のインスタンス
|
28
28
|
|
29
29
|
let userDefaults = UserDefaults.standard
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
+
func createPdfFromView(aView: UIView, saveToDocumentsWithFileName fileName: String)
|
34
|
+
|
35
|
+
{
|
36
|
+
|
37
|
+
print("プレビュー画面作成開始")
|
38
|
+
|
39
|
+
let pdfData = NSMutableData()
|
40
|
+
|
41
|
+
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil)
|
42
|
+
|
43
|
+
UIGraphicsBeginPDFPage()
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
guard let pdfContext = UIGraphicsGetCurrentContext() else { return }
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
aView.layer.render(in: pdfContext)
|
52
|
+
|
53
|
+
UIGraphicsEndPDFContext()
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
|
58
|
+
|
59
|
+
let documentsFileName = documentDirectories + "/" + fileName
|
60
|
+
|
61
|
+
debugPrint(documentsFileName)
|
62
|
+
|
63
|
+
pdfData.write(toFile: documentsFileName, atomically: true)
|
64
|
+
|
65
|
+
print("プレビュー作成おわり")
|
66
|
+
|
67
|
+
// UserDefaultsに保存する
|
68
|
+
|
69
|
+
userDefaults.set(documentsFileName, forKey: "pdfname")
|
70
|
+
|
71
|
+
}
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
33
79
|
|
34
80
|
|
35
81
|
@IBAction func preView(_ sender: UIButton) {
|
36
82
|
|
37
|
-
|
83
|
+
|
38
|
-
|
39
|
-
|
84
|
+
|
40
|
-
|
41
|
-
UIGraphicsBeginPDFContextToData(pdfData, canvasView.bounds, nil)
|
42
|
-
|
43
|
-
UIGraphicsBeginPDFPage()
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
guard let pdfContext = UIGraphicsGetCurrentContext() else { return }
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
canvasView.layer.render(in: pdfContext)
|
52
|
-
|
53
|
-
UIGraphicsEndPDFContext()
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
|
58
|
-
|
59
|
-
|
85
|
+
createPdfFromView(aView: canvasView, saveToDocumentsWithFileName: "createpdf")
|
60
|
-
|
61
|
-
debugPrint(documentsFileName)
|
62
|
-
|
63
|
-
pdfData.write(toFile: documentsFileName, atomically: true)
|
64
|
-
|
65
|
-
// UserDefaultsに保存する
|
66
|
-
|
67
|
-
userDefaults.set(documentsFileName, forKey: "setpdf")
|
68
|
-
|
69
|
-
print("プレビュー作成おわり")
|
70
|
-
|
71
|
-
}
|
72
86
|
|
73
87
|
|
74
88
|
|
75
89
|
}
|
76
90
|
|
91
|
+
|
92
|
+
|
77
93
|
```
|
78
94
|
|
79
95
|
|
@@ -82,12 +98,30 @@
|
|
82
98
|
|
83
99
|
```swift
|
84
100
|
|
101
|
+
import UIKit
|
102
|
+
|
103
|
+
import PDFKit
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
class ViewController3: UIViewController {
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
@IBOutlet weak var pdfView: PDFView!
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
85
|
-
// UserDefaults のインスタンス
|
117
|
+
// UserDefaults のインスタンス
|
86
118
|
|
87
119
|
let userDefaults = UserDefaults.standard
|
88
120
|
|
89
121
|
|
90
122
|
|
123
|
+
|
124
|
+
|
91
125
|
override func viewDidLoad() {
|
92
126
|
|
93
127
|
super.viewDidLoad()
|
@@ -96,17 +130,25 @@
|
|
96
130
|
|
97
131
|
// UserDefaultsから値を読み込む
|
98
132
|
|
99
|
-
let str2:String = userDefaults.string(forKey: "
|
133
|
+
let str2:String = userDefaults.string(forKey: "pdfname")!
|
134
|
+
|
100
|
-
|
135
|
+
print(str2)
|
101
|
-
|
102
|
-
|
136
|
+
|
137
|
+
|
138
|
+
|
103
|
-
let pdfView = PDFView(frame: view.frame)
|
139
|
+
//let pdfView = PDFView(frame: view.frame)
|
140
|
+
|
104
|
-
|
141
|
+
//保存場所
|
142
|
+
|
105
|
-
|
143
|
+
let thePath = NSHomeDirectory()+str2+".pdf"
|
106
144
|
|
107
145
|
// ローカルのPDFの場合
|
108
146
|
|
109
|
-
let pdfURL = URL(fileURLWithPath:
|
147
|
+
let pdfURL = URL(fileURLWithPath : thePath)
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
110
152
|
|
111
153
|
|
112
154
|
|
@@ -128,7 +170,9 @@
|
|
128
170
|
|
129
171
|
|
130
172
|
|
131
|
-
view.addSubview(pdfView)
|
173
|
+
//view.addSubview(pdfView)
|
174
|
+
|
175
|
+
|
132
176
|
|
133
177
|
}
|
134
178
|
|
@@ -144,15 +188,13 @@
|
|
144
188
|
|
145
189
|
```
|
146
190
|
|
147
|
-
// ローカルのPDFの場合
|
148
|
-
|
149
|
-
|
191
|
+
class AppDelegate: UIResponder, UIApplicationDelegate{
|
150
|
-
|
151
|
-
|
152
|
-
|
192
|
+
|
193
|
+
|
194
|
+
|
153
|
-
```
|
195
|
+
```
|
154
|
-
|
196
|
+
|
155
|
-
Thread 1:
|
197
|
+
Thread 1: signal SIGABRT
|
156
198
|
|
157
199
|
|
158
200
|
|
2
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,45 +24,55 @@
|
|
24
24
|
|
25
25
|
```swift
|
26
26
|
|
27
|
-
|
27
|
+
// UserDefaults のインスタンス
|
28
28
|
|
29
|
+
let userDefaults = UserDefaults.standard
|
29
30
|
|
31
|
+
|
30
32
|
|
31
|
-
|
33
|
+
|
32
34
|
|
35
|
+
@IBAction func preView(_ sender: UIButton) {
|
33
36
|
|
37
|
+
print("プレビュー画面作成開始")
|
34
38
|
|
35
|
-
let pdfData = NSMutableData()
|
39
|
+
let pdfData = NSMutableData()
|
36
40
|
|
37
|
-
UIGraphicsBeginPDFContextToData(pdfData,
|
41
|
+
UIGraphicsBeginPDFContextToData(pdfData, canvasView.bounds, nil)
|
38
42
|
|
39
|
-
UIGraphicsBeginPDFPage()
|
43
|
+
UIGraphicsBeginPDFPage()
|
40
44
|
|
45
|
+
|
41
46
|
|
47
|
+
guard let pdfContext = UIGraphicsGetCurrentContext() else { return }
|
42
48
|
|
43
|
-
|
49
|
+
|
44
50
|
|
51
|
+
canvasView.layer.render(in: pdfContext)
|
45
52
|
|
53
|
+
UIGraphicsEndPDFContext()
|
46
54
|
|
47
|
-
|
55
|
+
|
48
56
|
|
49
|
-
|
57
|
+
if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
|
50
58
|
|
59
|
+
let documentsFileName = documentDirectories + "/" + "createPdf"
|
51
60
|
|
61
|
+
debugPrint(documentsFileName)
|
52
62
|
|
53
|
-
|
63
|
+
pdfData.write(toFile: documentsFileName, atomically: true)
|
54
64
|
|
55
|
-
|
65
|
+
// UserDefaultsに保存する
|
56
66
|
|
57
|
-
|
67
|
+
userDefaults.set(documentsFileName, forKey: "setpdf")
|
58
68
|
|
59
|
-
p
|
69
|
+
print("プレビュー作成おわり")
|
60
70
|
|
61
|
-
}
|
71
|
+
}
|
62
72
|
|
63
|
-
|
73
|
+
|
64
74
|
|
65
|
-
}
|
75
|
+
}
|
66
76
|
|
67
77
|
```
|
68
78
|
|
@@ -72,61 +82,31 @@
|
|
72
82
|
|
73
83
|
```swift
|
74
84
|
|
85
|
+
// UserDefaults のインスタンス
|
86
|
+
|
87
|
+
let userDefaults = UserDefaults.standard
|
88
|
+
|
89
|
+
|
90
|
+
|
75
91
|
override func viewDidLoad() {
|
76
92
|
|
77
93
|
super.viewDidLoad()
|
78
94
|
|
79
95
|
|
80
96
|
|
97
|
+
// UserDefaultsから値を読み込む
|
98
|
+
|
81
|
-
let
|
99
|
+
let str2:String = userDefaults.string(forKey: "setpdf")!
|
82
100
|
|
83
101
|
|
84
102
|
|
85
|
-
|
103
|
+
let pdfView = PDFView(frame: view.frame)
|
86
|
-
|
87
|
-
do {
|
88
|
-
|
89
|
-
return try FileManager.default.contentsOfDirectory(atPath: documentPath)
|
90
|
-
|
91
|
-
} catch {
|
92
|
-
|
93
|
-
return []
|
94
|
-
|
95
|
-
}
|
96
|
-
|
97
|
-
}
|
98
104
|
|
99
105
|
|
100
106
|
|
101
|
-
return fileNames.flatMap { fileName in
|
102
|
-
|
103
|
-
do {
|
104
|
-
|
105
|
-
var texts: [String] = try String(contentsOfFile: documentPath + "/" + fileName, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)).lines
|
106
|
-
|
107
|
-
texts = texts.deleteSpaceOnly(texts: texts)
|
108
|
-
|
109
|
-
return texts
|
110
|
-
|
111
|
-
} catch {
|
112
|
-
|
113
|
-
return nil
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
}
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
//PDFの表示
|
124
|
-
|
125
|
-
let pdfView = PDFView(frame: view.frame)
|
126
|
-
|
127
107
|
// ローカルのPDFの場合
|
128
108
|
|
129
|
-
let pdfURL = URL(fileURLWithPath: Bundle.main.path(forResource: "
|
109
|
+
let pdfURL = URL(fileURLWithPath: Bundle.main.path(forResource: "str2", ofType: "pdf")!)
|
130
110
|
|
131
111
|
|
132
112
|
|
@@ -150,11 +130,9 @@
|
|
150
130
|
|
151
131
|
view.addSubview(pdfView)
|
152
132
|
|
153
|
-
|
154
|
-
|
155
133
|
}
|
156
134
|
|
157
|
-
|
135
|
+
}
|
158
136
|
|
159
137
|
```
|
160
138
|
|
@@ -162,17 +140,19 @@
|
|
162
140
|
|
163
141
|
|
164
142
|
|
165
|
-
###エラー
|
143
|
+
###エラー該当箇所
|
166
144
|
|
167
145
|
```
|
168
146
|
|
169
|
-
|
147
|
+
// ローカルのPDFの場合
|
170
148
|
|
171
|
-
|
149
|
+
let pdfURL = URL(fileURLWithPath: Bundle.main.path(forResource: "str2", ofType: "pdf")!)
|
172
150
|
|
173
|
-
|
151
|
+
|
174
152
|
|
175
153
|
```
|
154
|
+
|
155
|
+
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
|
176
156
|
|
177
157
|
|
178
158
|
|
1
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,6 +20,162 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
pdfを作成するVC↓
|
24
|
+
|
25
|
+
```swift
|
26
|
+
|
27
|
+
@IBAction func preView(_ sender: UIButton) {
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
print("プレビュー画面作成開始")
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
let pdfData = NSMutableData()
|
36
|
+
|
37
|
+
UIGraphicsBeginPDFContextToData(pdfData, getphoto.bounds, nil)
|
38
|
+
|
39
|
+
UIGraphicsBeginPDFPage()
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
guard let pdfContext = UIGraphicsGetCurrentContext() else { return }
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
getphoto.layer.render(in: pdfContext)
|
48
|
+
|
49
|
+
UIGraphicsEndPDFContext()
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
|
54
|
+
|
55
|
+
let documentsFileName = documentDirectories + "/" + "/preview.pdf"
|
56
|
+
|
57
|
+
debugPrint(documentsFileName)
|
58
|
+
|
59
|
+
pdfData.write(toFile: documentsFileName, atomically: true)
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
print("プレビュー作成おわり")
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
pdfを表示するVC
|
72
|
+
|
73
|
+
```swift
|
74
|
+
|
75
|
+
override func viewDidLoad() {
|
76
|
+
|
77
|
+
super.viewDidLoad()
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
var fileNames: [String] {
|
86
|
+
|
87
|
+
do {
|
88
|
+
|
89
|
+
return try FileManager.default.contentsOfDirectory(atPath: documentPath)
|
90
|
+
|
91
|
+
} catch {
|
92
|
+
|
93
|
+
return []
|
94
|
+
|
95
|
+
}
|
96
|
+
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
return fileNames.flatMap { fileName in
|
102
|
+
|
103
|
+
do {
|
104
|
+
|
105
|
+
var texts: [String] = try String(contentsOfFile: documentPath + "/" + fileName, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)).lines
|
106
|
+
|
107
|
+
texts = texts.deleteSpaceOnly(texts: texts)
|
108
|
+
|
109
|
+
return texts
|
110
|
+
|
111
|
+
} catch {
|
112
|
+
|
113
|
+
return nil
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
//PDFの表示
|
124
|
+
|
125
|
+
let pdfView = PDFView(frame: view.frame)
|
126
|
+
|
127
|
+
// ローカルのPDFの場合
|
128
|
+
|
129
|
+
let pdfURL = URL(fileURLWithPath: Bundle.main.path(forResource: "metronetwork", ofType: "pdf")!)
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
let document = PDFDocument(url: pdfURL)
|
134
|
+
|
135
|
+
pdfView.document = document
|
136
|
+
|
137
|
+
pdfView.backgroundColor = .lightGray
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
// PDFの拡大率を調整する
|
142
|
+
|
143
|
+
pdfView.autoScales = true
|
144
|
+
|
145
|
+
// 表示モード
|
146
|
+
|
147
|
+
pdfView.displayMode = .singlePageContinuous
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
view.addSubview(pdfView)
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
}
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
```
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
###エラー、警告(3つ)
|
166
|
+
|
167
|
+
```
|
168
|
+
|
169
|
+
1、Unexpected non-void return value in void function
|
170
|
+
|
171
|
+
2、No calls to throwing functions occur within 'try' expression
|
172
|
+
|
173
|
+
3、'catch' block is unreachable because no errors are thrown in 'do' block
|
174
|
+
|
175
|
+
```
|
176
|
+
|
177
|
+
|
178
|
+
|
23
179
|
### 補足情報(FW/ツールのバージョンなど)
|
24
180
|
|
25
181
|
|