我用PdfDocument生产pdf文件,一切正常。但是如果输入文字包含中文时,文件就变得特别大。
差不多每增加一个新的中文字会导致文件变大几百K。这样只要文件中中文字多几个,文件将变大无比庞大。
我测试的平台是5.1,我有找了个7.1的模拟器测试,效果好一些,前面几十个字8.7M的文件,变成4.9M,但是依然还是太大。有人用PdfDocument创建pdf吗?我遇到我同样的问题吗?我是用Android studio 3.3开发的。

解决方案 »

  1.   

    上代码看看,我测试了,十页也就几百KB。都不到1M
      

  2.   

            Canvas canvas = mPage.getCanvas();
            float txtHeight = Utils.textHeightAsc(mPaint);
            float txtWidth = Utils.textWidth(mPaint, text);
            float x = mPaddingLeft + 4 + mCurColumn * mColWidth;
            float y = mPaddingTop + mRowHeight * mCurRow + (txtHeight - mRowHeight) / 2;
            canvas.drawText(text, x, y, mPaint);这个是输出文字,只要中文就变大特别快。你有测试中文的吗?英文是不会有这个问题的。
      

  3.   

    全页中文加英文;PdfDocument.PageInfo.Builder pb = new PdfDocument.PageInfo.Builder(screenWidth, screenHeight, 1);
    PdfDocument.PageInfo pageInfo = pb.create();
    PdfDocument.Page page = document.startPage(pageInfo);
     view.draw(page.getCanvas());
    document.finishPage(page);
    ...
    document.writeTo(outputStream); // 保存到文件直接写布局就完事了,怎么还自己用drawText写字。
    直接给TextView设置text不是很简单。
      

  4.   

    全页中文加英文;PdfDocument.PageInfo.Builder pb = new PdfDocument.PageInfo.Builder(screenWidth, screenHeight, 1);
    PdfDocument.PageInfo pageInfo = pb.create();
    PdfDocument.Page page = document.startPage(pageInfo);
     view.draw(page.getCanvas());
    document.finishPage(page);
    ...
    document.writeTo(outputStream); // 保存到文件直接写布局就完事了,怎么还自己用drawText写字。
    直接给TextView设置text不是很简单。
    你在哪个版本上测试的?
      

  5.   

    我不是把view直接画上去的。view画上去的应该就是一张图片吧。关键我是要在pdf上做一个类似报表的导出,内容是动态的,不是把view转pdf。
      

  6.   

    android就是图片,只是没有压缩,不知道是不是你这种用法导致的。
    你可以用其他库试试:PdfBox
      

  7.   

    android就是图片,只是没有压缩,不知道是不是你这种用法导致的。
    你可以用其他库试试:PdfBox
    我用了pdfbox:2.0.13的库,但是运行时出现下面的错误,知道怎么处理吗?
    java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point; 
      

  8.   

    哪来的2.0.13版本……
    最新版     implementation 'com.tom_roush:pdfbox-android:1.8.10.1'
      

  9.   

    哪来的2.0.13版本……
    最新版     implementation 'com.tom_roush:pdfbox-android:1.8.10.1'
    嗯,android只能用这个移植版本,但是这个好像无法支持中文,我是没找到中文怎么弄,反正就是显示不了