我在使用ITextPdf的android应用中制作pdf文件时遇到问题。我正在尝试将MPAndroidChart折线图转换为位图,然后将其保存为pdf文件。
这是saveToPdf()方法的代码:
private void saveToPdf() {
Bitmap bitmap = saveChartToBitmap();
Document doc = new Document();
File pdfCreated = new File(getBaseContext().getFilesDir() , "PDFCreated.pdf");
try {
PdfWriter.getInstance(doc, new FileOutputStream(pdfCreated));
doc.open();
Image image = Image.getInstance(bitmap);
doc.newPage();
doc.add(image);
Toast.makeText(getBaseContext(), "Pdf created", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException | DocumentException e) {
e.printStackTrace();
} finally {
doc.close();
}
还有我的saveChartToBitmap()方法:
private Bitmap saveChartToBitmap() {
if (lineChart.getMeasuredHeight() <= 0) {
lineChart.measure(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
Bitmap b = Bitmap.createBitmap(lineChart.getMeasuredWidth(), lineChart.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
lineChart.layout(0, 0, lineChart.getMeasuredWidth(), lineChart.getMeasuredHeight());
lineChart.draw(c);
return b;
} else {
return null;
}
}
不知道我转换为Bitmat或创建Image对象是否有误,但无法解决。我得到:该文档没有页面错误。所以我需要建议。
谢谢。
答案 0 :(得分:0)
检查您的saveChartToBitmap()
方法是否返回null
。您还看到了吐司消息吗?
答案 1 :(得分:0)
我解决了我的问题。我没有将位图作为参数传递给Image.getInstance()方法,而是将其转换为字节数组,现在可以正常工作了。谢谢
答案 2 :(得分:0)
打开文档后,请立即在文档中添加一个空块,以免发生此异常。
doc.open;
doc.add(new Chunk(''));