我尝试使用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倍.