كيفية فتح ملف pdf من مجلد المستندات في حاوية الجهاز في swift 4

0

لقد قمت بتنزيل ملف pdf من خدمة الويب. لقد عثرت عليه في حاوية الجهاز. موقع ملفي أدناه

file:///var/mobile/Containers/Data/Application/1E4AFEDC-E3A6-4E33-9021-217A61567597/Documents/myfile.pdf

ولكن عندما أريد فتح الملف من الموقع أعلاه ، فلن يحدث شيء. ها هو الكود الخاص بي ..

   let pdfView = PDFView()

    pdfView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(pdfView)

    pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
    pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
    pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

    guard let path = Bundle.main.url(forResource: "file:///var/mobile/Containers/Data/Application/8180A938-D770-48AE-9FC7-ADE939B1D9FA/Documents/myfile", withExtension: "pdf") else { return }

    if let document = PDFDocument(url: path) {
        pdfView.document = document
    }

ارجو المساعدة واقترحني ..

2 الاجابة

3
افضل جواب

تكمن المشكلة في أنك تحاول الوصول إلى ملف من الواضح أنه ليس جزءًا من حزمة التطبيق ، لأن الحزمة للقراءة فقط ، لذلك لا يتم تخزين الملف الذي تم تنزيله من الإنترنت في الحزمة. علاوة على ذلك ، تقوم بتزويد مسار كامل Bundle.main.url(forResource:) ، بينما تتوقع هذه الوظيفة فقط مسارًا محليًا للملفات المجمعة.

تحتاج إلى استخدام URL(fileURLWithPath:) بدلا من Bundle.url(forResource:) .

let pdfUrl = URL(fileURLWithPath: "file:///var/mobile/Containers/Data/Application/8180A938-D770-48AE-9FC7-ADE939B1D9FA/Documents/myfile.pdf")

if let document = PDFDocument(url: path) {
    pdfView.document = document
}
:مؤلف
0

تحتاج إلى الحصول على مسار المستند بهذا:

let fileManager = NSFileManager.defaultManager()

let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)

if let documentDirectory: NSURL = urls.first as? NSURL {
    // This is where the database should be in the documents directory
    let finalFileURL = documentDirectory.URLByAppendingPathComponent("myfile.pdf")

    if finalFileURL.checkResourceIsReachableAndReturnError(nil) {
        // The file already exists, so just return the URL
        return finalFileURL
    }
} else {
    println("Couldn't get documents directory!")
}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام