Привет, я хотел бы скачать и отобразить PDF с помощью Kotlin. Я хочу загрузить и отобразить индикатор выполнения с первой страницей отображения PDF во время загрузки. Затем отобразите PDF. Я сделал это быстро с PDFKit, это было очень просто, но я не могу найти эквивалент в Kotlin.
Я провел много исследований, чтобы отобразить PDF в Kotlin, но я не получил большого результата, кажется, чтоэта тема на самом деле не такая первая, я посмотрел на PdfRenderer, который является родным, но большинство примеров в java, а не в Kotlin, и я не понимаю, что именно: documentmented.getSeekableFileDescriptor ().
Затем я посмотрел на pdfView libдействительно приятно отображать pdf, но только из ресурсов, pdfView.fromStream, похоже, не работает, и я не могу получить пример того, как это работает. Более того, я хотел бы избежать загрузки pdf, который я хочу отобразитьэто напрямую, чтобы избежать длительной загрузки.
Наконец, я использовал okhttp и retrofit, чтобы загрузить PDF, но я не могу использовать pdfView для его отображения, потому что в активе from PDF должен быть уже в проекте.
Я обнаружил, что загрузка pdf с и URL и отображение его с помощью Kotlin очень сложна и не очень задокументирована.
Так что, если у кого-то естьome предложение я возьму.
вот мой пример кода с использованием pdfView.fromStream, это только загрузка пустой страницы
private fun loadpdf(){
println("pdfview")
//PDF View
Thread(Runnable {
val input = URL(pdf_url).openStream()
val pdfView = this.findViewById<PDFView>(com.example.mylibrary.R.id.pdfView)
//pdfView.fromFile(file)
pdfView.fromStream(input)
.enableSwipe(true) // allows to block changing pages using swipe
.swipeHorizontal(true)
.enableDoubletap(true)
.defaultPage(0)
.enableAnnotationRendering(false) // render annotations (such as comments, colors or forms)
.password(null)
.scrollHandle(null)
.enableAntialiasing(true) // improve rendering a little bit on low-res screens
// spacing between pages in dp. To define spacing color, set view background
.spacing(0)
.pageFitPolicy(FitPolicy.WIDTH)
.load()
println("testpdf")
})
}
А вот мой пример кода с использованием pdfView.fromAssetэто работает, но только если файл уже находится в проекте, однако я хочу получить свой pdf и url
private fun loadpdf(){
//PDF View
Thread(Runnable {
val pdfView = this.findViewById<PDFView>(com.example.mylibrary.R.id.pdfView)
pdfView.fromAsset("url")
.enableSwipe(true) // allows to block changing pages using swipe
.swipeHorizontal(true)
.enableDoubletap(true)
.defaultPage(0)
.enableAnnotationRendering(false) // render annotations (such as comments, colors or forms)
.password(null)
.scrollHandle(null)
.enableAntialiasing(true) // improve rendering a little bit on low-res screens
// spacing between pages in dp. To define spacing color, set view background
.spacing(0)
.pageFitPolicy(FitPolicy.WIDTH)
.load()
})
}