ios端末にpdfを表示させる
解決したいこと
Swiftuiで、pdfファイルを選択し、表示させるアプリをつくっています。
xcodeのシミュレータで実行する際には、問題なくpdfが表示されるのですが、実機(ipad)で実行すると、pdfが表示できなくなります。
解決方法を教えてください。
開発環境
xcode15.0.1
swiftui
ios17.1.1
発生している問題
ファイルが存在しません:
//ここにファイルが保存されてるURLが表示
エラー: PDFドキュメントの読み込みに失敗しました,
上記のように、実機での実行になると、「ファイルが存在しない」と表示されます。シミュレータで実行した際は、「ファイルが存在します」と表示されます。
また、実機で実行した際も、ファイルを選択する画面までは出てきているので、ファイルは存在していると思います。
該当するソースコード
import SwiftUI
import PDFKit
import UniformTypeIdentifiers
struct ContentView: View {
@State private var pdfDocument: PDFDocument?
@State private var isDocumentPickerPresented = false
var body: some View {
VStack {
// PDFViewを追加
PDFViewContainer(pdfDocument: $pdfDocument)
.padding()
Button("PDFファイルを選択") {
isDocumentPickerPresented = true
}
.padding()
}
.fileImporter(
isPresented: $isDocumentPickerPresented,
allowedContentTypes: [UTType.pdf],
onCompletion: { result in
switch result {
case .success(let url):
// FileManagerを使用してファイルが存在するか確認
let fileManager = FileManager.default
if fileManager.fileExists(atPath: url.path) {
print("ファイルが存在します: \(url.path)")
} else {
print("ファイルが存在しません: \(url.path)")
}
// PDFDocumentの作成
if let document = PDFDocument(url: url) {
print("PDFドキュメントが正常に読み込まれました")
self.pdfDocument = document
} else {
let error = NSError(domain: "com.example.PDFApp", code: 1, userInfo: [NSLocalizedDescriptionKey: "PDFドキュメントの読み込みに失敗しました"])
print("エラー: \(error.localizedDescription), \(error.localizedFailureReason ?? "")")
}
case .failure(let error):
print("ファイル選択時にエラーが発生しました:\(error.localizedDescription)")
}
}
)
}
}
struct PDFViewContainer: UIViewRepresentable {
@Binding var pdfDocument: PDFDocument?
func makeUIView(context: Context) -> PDFView {
let pdfView = PDFView()
//pdfの拡大率を調整
pdfView.autoScales = true
//表示モード
pdfView.displayMode = .singlePage
return pdfView
}
func updateUIView(_ uiView: PDFView, context: Context) {
uiView.document = pdfDocument
}
}
自分で試したこと
複数のpdfファイルで試しましたが、すべて表示できませんでした。また、appleIDの設定やファイルのアクセス権限は確認しました。
0 likes