Чтение PDF-файла в PdfDocument (печать нескольких PDF-файлов одновременно)
Я ищу лучший способ объединить несколько файлов PDF в один, который я могу распечатать.
Использование PdfDocument/PrintedPdfDocument кажется наилучшим способом (для печати), но я не могу найти хороший способ для чтения PDF-файла в PdfDocument, единственные примеры, которые я могу найти, - это рисование на страницах.
Для печати я использую 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.