'android PrintManager pdf print Incomplete display
class MyPrintPdfAdapter(private val mFilePath: String) : PrintDocumentAdapter() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
override fun onLayout(
oldAttributes: PrintAttributes, newAttributes: PrintAttributes,
cancellationSignal: CancellationSignal,
callback: LayoutResultCallback, extras: Bundle
) {
if (cancellationSignal.isCanceled) {
callback.onLayoutCancelled()
return
}
val info = PrintDocumentInfo.Builder("name")
.setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
.build()
callback.onLayoutFinished(info, true)
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
override fun onWrite(
pages: Array<PageRange>, destination: ParcelFileDescriptor,
cancellationSignal: CancellationSignal,
callback: WriteResultCallback
) {
var input: InputStream? = null
var output: OutputStream? = null
try {
input = FileInputStream(mFilePath)
output = FileOutputStream(destination.fileDescriptor)
val buf = ByteArray(1024)
var bytesRead: Int
while (input.read(buf).also { bytesRead = it } > 0) {
output.write(buf, 0, bytesRead)
}
callback.onWriteFinished(arrayOf(PageRange.ALL_PAGES))
} catch (e: FileNotFoundException) {
e.printStackTrace()
} catch (e: Exception) {
e.printStackTrace()
} finally {
if(output != null) {
try {
output.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
if(input != null) {
try {
input.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
}
fun printPDFFile(context: Context, pdfPath: String) {
val printManager = context.getSystemService(Context.PRINT_SERVICE) as PrintManager
val myPrintAdapter = MyPrintPdfAdapter(pdfPath)
val att = PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.ISO_A4)
.setMinMargins(PrintAttributes.Margins(0, 0, 0, 0))
.setResolution(PrintAttributes.Resolution("id", Context.PRINT_SERVICE, 300, 300))
.setColorMode(PrintAttributes.COLOR_MODE_COLOR)
.build()
printManager.print("jobName", myPrintAdapter,att)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
