有熟悉PdfDocument的吗?

weixin_42573988 2019-01-25 03:55:23
我用PdfDocument生产pdf文件,一切正常。但是如果输入文字包含中文时,文件就变得特别大。
差不多每增加一个新的中文字会导致文件变大几百K。这样只要文件中中文字多几个,文件将变大无比庞大。
我测试的平台是5.1,我有找了个7.1的模拟器测试,效果好一些,前面几十个字8.7M的文件,变成4.9M,但是依然还是太大。

有人用PdfDocument创建pdf吗?我遇到我同样的问题吗?

我是用Android studio 3.3开发的。
...全文
1657 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42573988 2019-02-21
  • 打赏
  • 举报
回复
引用 9 楼 jklwan 的回复:
[quote=引用 8 楼 weixin_42573988 的回复:] 我用了pdfbox:2.0.13的库,但是运行时出现下面的错误,知道怎么处理吗? java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point;
哪来的2.0.13版本…… 最新版 implementation 'com.tom_roush:pdfbox-android:1.8.10.1'[/quote] 嗯,android只能用这个移植版本,但是这个好像无法支持中文,我是没找到中文怎么弄,反正就是显示不了
jklwan 2019-02-19
  • 打赏
  • 举报
回复
引用 8 楼 weixin_42573988 的回复:
我用了pdfbox:2.0.13的库,但是运行时出现下面的错误,知道怎么处理吗? java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point;
哪来的2.0.13版本…… 最新版 implementation 'com.tom_roush:pdfbox-android:1.8.10.1'
weixin_42573988 2019-02-19
  • 打赏
  • 举报
回复
引用 7 楼 jklwan 的回复:
[quote=引用 6 楼 weixin_42573988 的回复:] 我不是把view直接画上去的。view画上去的应该就是一张图片吧。关键我是要在pdf上做一个类似报表的导出,内容是动态的,不是把view转pdf。
android就是图片,只是没有压缩,不知道是不是你这种用法导致的。 你可以用其他库试试:PdfBox[/quote] 我用了pdfbox:2.0.13的库,但是运行时出现下面的错误,知道怎么处理吗? java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point;
jklwan 2019-02-12
  • 打赏
  • 举报
回复
引用 6 楼 weixin_42573988 的回复:
我不是把view直接画上去的。view画上去的应该就是一张图片吧。关键我是要在pdf上做一个类似报表的导出,内容是动态的,不是把view转pdf。
android就是图片,只是没有压缩,不知道是不是你这种用法导致的。 你可以用其他库试试:PdfBox
weixin_42573988 2019-02-11
  • 打赏
  • 举报
回复
不用测试多少页,只跟中文字数有关系
weixin_42573988 2019-02-11
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
上代码看看,我测试了,十页也就几百KB。都不到1M
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); 这个是输出文字,只要中文就变大特别快。你有测试中文的吗?英文是不会有这个问题的。
weixin_42573988 2019-02-11
  • 打赏
  • 举报
回复
我不是把view直接画上去的。view画上去的应该就是一张图片吧。关键我是要在pdf上做一个类似报表的导出,内容是动态的,不是把view转pdf。
weixin_42573988 2019-02-11
  • 打赏
  • 举报
回复
引用 4 楼 jklwan 的回复:
[quote=引用 3 楼 weixin_42573988 的回复:] 不用测试多少页,只跟中文字数有关系
全页中文加英文;

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不是很简单。[/quote] 你在哪个版本上测试的?
jklwan 2019-02-11
  • 打赏
  • 举报
回复
引用 3 楼 weixin_42573988 的回复:
不用测试多少页,只跟中文字数有关系
全页中文加英文;

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不是很简单。
jklwan 2019-01-28
  • 打赏
  • 举报
回复
上代码看看,我测试了,十页也就几百KB。都不到1M

80,330

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧