Java如何控制生成pdf的大小_如何使用pdfbox或其他Java库减小合并的PDF / A-1b文件的大小...
输入 :包含嵌入式字体的(例如14个)PDF / A-1b文件列表。
处理 :与Apache PDFBOX进行简单合并。
结果 :1个PDF / A-1b文件,文件大小太大(太大)。(这几乎是所有源文件大小的总和)。
问题 :是否可以减小生成的PDF的文件大小?
想法 :删除多余的嵌入式字体。但是如何?这是正确的做法吗?
不幸的是,以下代码无法完成任务,但突出了明显的问题。
try (PDDocument document = PDDocument.load(new File("E:/tmp/16189_ZU_20181121195111_5544_2008-12-31_Standardauswertung.pdf"))) {
List collectedFonts = new ArrayList<>();
PDPageTree pages = document.getDocumentCatalog().getPages();
int pageNr = 0;
for (PDPage page : pages) {
pageNr++;
Iterable names = page.getResources().getFontNames();
System.out.println("Page " + pageNr);
for (COSName name : names) {
collectedFonts.add(name);
System.out.print("\t" + name + " - ");
PDFont font = page.getResources().getFont(name);
System.out.println(font + ", embedded: " + font.isEmbedded());
page.getCOSObject().removeItem(COSName.F);
page.getResources().getCOSObject().removeItem(name);
}
}
document.save("E:/tmp/output.pdf");
}
该代码产生如下输出:
Page 1
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 2
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 3
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 4
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 5
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 6
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 7
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 8
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 9
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 10
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 11
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F33} - PDTrueTypeFont ArialMT-BoldItalic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 12
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 13
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
Page 14
COSName{F23} - PDTrueTypeFont ArialMT-Bold, embedded: true
COSName{F25} - PDTrueTypeFont ArialMT-Italic, embedded: true
COSName{F27} - PDTrueTypeFont ArialMT-Regular, embedded: true
任何帮助表示赞赏…
Java如何控制生成pdf的大小_如何使用pdfbox或其他Java库减小合并的PDF / A-1b文件的大小...相关推荐
- java压缩pdf大小_如何使用pdfbox或其他java库减小合并的PDF / A-1b文件的大小
输入:包含嵌入字体的(例如14个)PDF / A-1b文件列表. 处理:与Apache PDFBOX进行简单合并. 结果:1个文件大小(太大)的PDF / A-1b文件. (它几乎是所有源文件大小的总 ...
- java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!
程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 10 分钟. 来源:https://yq.aliyun.com/articles/662001 在 Java 程序中,性能问题的大部 ...
- java 8进制串转中文_老杜带你学Java【第六课】
上期链接:老杜带你学Java[第五课] 01 写在前面 欢迎来到杜老师的「零基础学Java」课堂~今后,我们就是Java软件工程师了.(此处应该有掌声???)本专题为<零基础学Java>专 ...
- java语言不允许使用访问内存_北语17春《Java语言程序设计》作业3
一.单选题(共 10 道试题,共 100 分.) V 1. Java字节码的解释执行方式是_______. A. 不需要解释 B. 一次解释完整个代码 C. 每次编译解释并执行一小段代码来完成 D. ...
- java如何写1 6的随机数_随机数的产生方法 关于Java里产生1-6随机数的方法
11. 在一个双链表中结点p之后插入一个结点s的操作是( ). A. s->right=p只有一条路不能选择--那就是放弃的路:只有一条路不能拒绝--那就是成长的路.有些事,有些人,就应该忘记, ...
- java swing 动态生成表格_6 个曾经牛逼哄哄的 Java 技术,你用过吗?
大家好啊,今天给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架,有些我甚至都没有用过,但我知道它曾经风光过. 废话不多说,下面我要开始吹了-- 1.Swing 下面这个是用 swing 开 ...
- java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取,内容重叠)问题解决...
html格式处理 使用itextpdf的XMLWorkerHelper组件转换过程当中,html格式要求比较多,下面作下格式的简单处理以保证转换成功.css //div格式转换过程当中,有概率会使内容 ...
- java 检测网络图片大小_用security.imgSecCheck检测网络图片(Java实现)
自从进入微信小程序的大坑,每天早上叫醒我的不再是闹钟,而是昨天提交小程序审核又没过,因为上传的图片没有做检测,很荣幸的收到审核不通过的结果通知. 就像往常一样一顿百度猛于虎,百度结果基本不靠谱,各种方 ...
- java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结
关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...
最新文章
- php制作标记图,PHP使用JPGRAPH制作圆柱图的方法详解
- 怎么判断间隙过渡过盈配合_尺寸公差配合与装配方法
- COGS-257-动态排名系统-树状数组+主席树
- PyCairo 中的图片
- AI算法连载08:统计学之贝叶斯
- oracle管理表空间和数据文件(笔记)
- MapGuide 安装
- Origin抗锯齿和出现大C
- q-flashplus怎么使用_qflash是什么意思
- 201671010447杨露露 实验二词频统计软件项目报告
- 将pyecharts生成的html转为图片的一些问题
- 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
- 使用js修改图片像素颜色并保存
- 前端性能指标:白屏和首屏时间的计算
- xp无线网卡开启的服务器,笔记本xp系统开启无线网卡的方法
- 图像的傅里叶变换 java_java使用傅里叶变换,得到变换之后的傅里叶频谱图像。...
- Apk应用安全加固所需了解的Application启动流程
- 【转】在win10接双显示器(扩展模式)怎么把鼠标游标切换到第二台显示器上?
- 使用C#编写一个读取和判断股票实时成交数据的小工具
- esxi硬盘分区格式_esxi4.1使用IDE格式磁盘
热门文章
- [转载]Buffon投针实验:究竟为什么是pi?
- prometheus remote write for springboot 远程写入<一>
- 我把Github上最牛b的Java教程和实战项目整合成了一个PDF文档
- Skip List(跳表)
- 一些杂乱的C语言算法
- 文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案
- ElasticSearch服务(一)
- Leetcode-数据结构-88. 合并两个有序数组
- excel可以用python语言_用python打开excel的方法
- 操作系统文件管理之FCB