当前位置:  开发笔记 > Android > 正文

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

如何解决《使用AndroidPdfDocumentAPI创建PDF文件-文件太大》经验,为你挑选了0个好方法。

我尝试使用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();

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

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有