Чтение PDF-файла в PdfDocument (печать нескольких PDF-файлов одновременно) - PullRequest
0 голосов
/ 21 сентября 2018

Я ищу лучший способ объединить несколько PDF-файлов в один, который я могу напечатать.

Использование PdfDocument / PrintedPdfDocument, кажется, лучший способ (для печати), но я не могу найти хороший способчтобы прочитать файл PDF в документ PDF, единственные примеры, которые я могу найти, касаются рисования на страницах.

Для печати я использую PrintDocumentAdapter:

class PrintPdfAdapter(private val context: Context, private val paths: List<String>) : PrintDocumentAdapter() {
override fun onLayout(oldAttributes: PrintAttributes, newAttributes: PrintAttributes, cancellationSignal: CancellationSignal?, callback: PrintDocumentAdapter.LayoutResultCallback, bundle: Bundle?) {
    pdfDocument = PrintedPdfDocument(context, newAttributes)

    if (cancellationSignal?.isCanceled == true) {
        callback.onLayoutCancelled()
    } else {
        val builder = PrintDocumentInfo.Builder("print_pdfs")
        builder.setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
                .setPageCount(PrintDocumentInfo.PAGE_COUNT_UNKNOWN)
                .build()
        callback.onLayoutFinished(builder.build(), newAttributes != oldAttributes)
    }
}

override fun onWrite(pageRanges: Array<PageRange>, destination: ParcelFileDescriptor, cancellationSignal: CancellationSignal?, callback: PrintDocumentAdapter.WriteResultCallback) {
    mergePdfFiles()
    val out = FileOutputStream(destination.fileDescriptor)
    FileInputStream(File(paths[0])).copyTo(out)
    out.close()
    callback.onWriteFinished(arrayOf(PageRange.ALL_PAGES))
}
}

Это нормально работает дляодин PDF.

...