问题描述
我正在尝试使用android API PdfDocument创建PDF文件。
如果内容较少(在屏幕可见范围内)-我的代码可以正常工作。
如果recyclerView包含更多项目(超过屏幕高度)-所有内容都不会以PDF打印。
这是我的代码:
public void exportDataPDF(View view) {
PrintAttributes printAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_COLOR).
setMediaSize(PrintAttributes.MediaSize.ISO_A2).
setResolution(new PrintAttributes.Resolution("MyPrinterId",PRINT_SERVICE,50,50)).
setMinMargins(new PrintAttributes.Margins(5,5,5)). //PrintAttributes.Margins.NO_MARGINS
build();
PdfDocument pdfDocument = new PrintedPdfDocument(this,printAttrs);
int pageNumber = 1;
//Get Content View.
View contentView = findViewById(R.id.recyclerView);
// crate a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(contentView.getWidth(),contentView.getHeight(),pageNumber).create();
// create a new page from the PageInfo
PdfDocument.Page page = pdfDocument.startPage(pageInfo);
// draw view on the page
Canvas pageCanvas = page.getCanvas();
pageCanvas.scale(1f,1f);
int pageWidth = pageCanvas.getWidth();
int pageHeight = pageCanvas.getHeight();
int measureWidth = View.MeasureSpec.makeMeasureSpec(pageWidth,View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(pageHeight,View.MeasureSpec.EXACTLY);
contentView.measure(measureWidth,measuredHeight);
contentView.layout(0,pageWidth,pageHeight);
contentView.draw(pageCanvas);
// do final processing of the page
pdfDocument.finishPage(page);
try {
FileOutputStream fileOutputStream = openFileOutput(exportFileName,MODE_PRIVATE);
pdfDocument.writeTo(fileOutputStream);
fileOutputStream.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
有人可以帮助我以PDF格式打印recyclerView项目的所有内容。我不想使用iText等外部库。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)