使用Android PdfDocument API创建PDF文件 - 文件太大

时间:2015-12-10 15:52:58

标签: android pdf

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

0 个答案:

没有答案