我尝试使用PdfDocumentAPI 制作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();
Run Code Online (Sandbox Code Playgroud)
我使用Drawable上面的一个实验,产生与以下代码相同的输出:
//get a bitmap
Bitmap bitmap = createBitmap(imagePath);
pdfCanvas.drawBitmap(bitmap, 0, 0, null); //passing paint object instead of null have no effect
Run Code Online (Sandbox Code Playgroud)
我查看过很多SO帖子,但大多数都使用第三方库来解决这个问题.我想坚持Android的PdfDocument.
如果我插入5MB的图像,则生成的PDF文件大小为45MB.它有时会乘以10甚至20倍.
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |