Путь к pdf в каталоге с pdfKit - PullRequest
0 голосов
/ 19 мая 2018

Я начинаю использовать PDFKit с файлом PDF, расположенным в корне, он работает со следующим кодом:

if let path = Bundle.main.path(forResource: "mypdf1", ofType: "pdf") {
    let url = URL(fileURLWithPath: path)
    if let pdfDocument = PDFDocument(url: url) {
        pdfView.autoScales = true
        pdfView.displayMode = .singlePageContinuous
        pdfView.displayDirection = .vertical
        pdfView.document = pdfDocument
        print(path)
    }
}

Но если я изменю файл PDF в каталоге, например, "mydirectory", это не работает, мой код выглядит следующим образом:

if let path = Bundle.main.path(forResource: "mypdf1", ofType: "pdf", inDirectory: "mydirectory") {
    let url = URL(fileURLWithPath: path)
    if let pdfDocument = PDFDocument(url: url) {
        pdfView.autoScales = true
        pdfView.displayMode = .singlePageContinuous
        pdfView.displayDirection = .vertical
        pdfView.document = pdfDocument

    }
}

Любые предложения по решению проблемы пути.


ОБНОВЛЕНИЕ

Согласно предложению, попробуйте следующий код, но я также не могу визуализировать PDF.

if let documentURL = Bundle.main.url(forResource: "mypdf1", withExtension: "pdf", subdirectory: "mydirectory") {
    if let document = PDFDocument(url: documentURL) {
        pdfView.autoScales = true
        pdfView.backgroundColor = UIColor.lightGray
        pdfView.document = document
    }
}

1 Ответ

0 голосов
/ 20 мая 2018

Ваш код для чтения pdf из подкаталога является правильным, и, как я прочитал, они получают нулевое значение в пути, это точно, потому что ваша папка контейнера не была создана правильно.Вы можете видеть желтую и синюю папку, папка вашего контейнера должна быть синей.

Чтобы создать синюю папку, вы должны выполнить следующие шаги:

  • Подготовить структуру папок с файлами в ней.
  • Перетащите эту папку в xcode, т. Е. Панель навигации проекта.
  • Выберите параметр «Создать ссылки на папки для любых добавленных папок».
  • Наконец нажмите, чтобы добавить.

Вы получите эту папку с синим цветом, и ваш код сможет прочитать pdf.

image

В Xcode есть два типа папок: группы и ссылки на папки.Вы можете использовать группы для организации файлов в вашем проекте, не влияя на их структуру в реальной файловой системе.Это отлично подходит для кода, потому что вы собираетесь работать только с вашим кодом в Xcode.С другой стороны, группы не очень хороши для файлов ресурсов.

В любом достаточно сложном проекте вам обычно приходится иметь дело с десятками, если не сотнями, файлов ресурсов, и эти активы должны будутбыть модифицированным и управляемым извне XCode, либо вами, либо дизайнером.Помещение всех файлов ресурсов в одну плоскую папку - это путь к катастрофе.Это где ссылки на папки приходят. Они позволяют вам организовать ваши файлы в папки в вашей файловой системе и сохранить ту же структуру папок в XCode.

Синий используется для обозначения «Ссылка на папку».

...