我尝试从这个PDF file生成一个位图。我的代码如下:
mFileDescriptor = ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY);
// This is the PdfRenderer we use to render the PDF.
if (mFileDescriptor != null) {
mPdfRenderer = new PdfRenderer(mFileDescriptor);
}
if (mPdfRenderer != null) {
for (int i = 0; i < mPdfRenderer.getPageCount(); i++) {
printPage(i);
}
}
....
private void printPage(int index) {
byte[] img;
if (mPdfRenderer.getPageCount() <= index) {
return;
}
// Make sure to close the current page before opening another one.
if (null != mCurrentPage) {
mCurrentPage.close();
}
// Use `openPage` to open a specific page in PDF.
mCurrentPage = mPdfRenderer.openPage(index);
int width = (int)(203.0 / 72.0 * mCurrentPage.getWidth() + 0.5);
int height = (int)(203.0 / 72.0 * mCurrentPage.getHeight() + 0.5);
// Important: the destination bitmap must be ARGB (not RGB).
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
try {
sendImageToPrinter(PrinterEventsProto.Image.parseFrom(bitmap), getApplicationContext());
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}相应的位图是这个,我不知道这个黑色边框是从哪里来的。有什么想法吗?

发布于 2018-09-06 23:41:51
这很可能是因为位图的宽度和高度与屏幕(活动窗口)的宽度和高度不匹配。
然后,如果您设置要显示的ImageView的缩放类型以使其适合,则它应显示为整个页面的宽度和高度。
或者,如果你要将它发送到打印机,它应该打印整个页面,并且不会剪掉任何东西。不过,您可能需要更改位图的高度和宽度,以适应要打印的纸张类型。
在300dpi和72dpi时,
8.27“x 11.69”等效A4纸张尺寸分别为: 2480像素x 3508像素(打印分辨率) 595像素x 842像素(屏幕分辨率) http://www.graphic-design-employment.com/a4-paper-dimensions.html
https://stackoverflow.com/questions/48265887
复制相似问题