我尝试使用PdfDocument
API制作PDF。这就是我的尝试:
Paint paint = new Paint();
// create a new document
PdfDocument document = new PdfDocument();
FileOutputStream fos = new FileOutputStream(pdfFile, true);
for (int i = 0; i < mImagePathList.size(); i++) {
//current image path
String imagePath = mImagePathList.get(i);
//get a bitmap
Bitmap bitmap = createBitmap(imagePath); // This method returns a bitmap from path
Drawable d = new BitmapDrawable(getResources(), bitmap);
d.setBounds(0, 0, 100, 100);
// crate a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(bitmap.getWidth(), bitmap.getHeight(), i + 1).create();
// start a pagegit
PdfDocument.Page page = document.startPage(pageInfo);
// get the page canvas
Canvas pdfCanvas = page.getCanvas();
if (pdfCanvas != null) {
// draw bitmap on the page
//pdfCanvas.draw(d, 0, 0, paint);
d.draw(pdfCanvas);
} else {
Log.e(TAG " Canvas null!");
}
paint.reset();
// finish the page
document.finishPage(page);
}
// write the document content
document.writeTo(fos);
document.close();
//publishProgress(i);
fos.close();
我在上面使用Drawable
作为实验产生了与以下代码相同的输出:
//get a bitmap
Bitmap bitmap = createBitmap(imagePath);
pdfCanvas.drawBitmap(bitmap, 0, 0, null); //passing paint object instead of null have no effect
我查看了很多SO帖子,但大多数都使用第三方库来解决这个问题。我想坚持使用Android PdfDocument
。
如果我插入5MB的图像,则生成的PDF文件大小为45MB。它有时会乘以10甚至20倍。