输入 :包含嵌入式字体的(例如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文件的大小...相关推荐

  1. java压缩pdf大小_如何使用pdfbox或其他java库减小合并的PDF / A-1b文件的大小

    输入:包含嵌入字体的(例如14个)PDF / A-1b文件列表. 处理:与Apache PDFBOX进行简单合并. 结果:1个文件大小(太大)的PDF / A-1b文件. (它几乎是所有源文件大小的总 ...

  2. java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 10 分钟. 来源:https://yq.aliyun.com/articles/662001 在 Java 程序中,性能问题的大部 ...

  3. java 8进制串转中文_老杜带你学Java【第六课】

    上期链接:老杜带你学Java[第五课] 01 写在前面 欢迎来到杜老师的「零基础学Java」课堂~今后,我们就是Java软件工程师了.(此处应该有掌声???)本专题为<零基础学Java>专 ...

  4. java语言不允许使用访问内存_北语17春《Java语言程序设计》作业3

    一.单选题(共 10 道试题,共 100 分.) V 1. Java字节码的解释执行方式是_______. A. 不需要解释 B. 一次解释完整个代码 C. 每次编译解释并执行一小段代码来完成 D. ...

  5. java如何写1 6的随机数_随机数的产生方法 关于Java里产生1-6随机数的方法

    11. 在一个双链表中结点p之后插入一个结点s的操作是( ). A. s->right=p只有一条路不能选择--那就是放弃的路:只有一条路不能拒绝--那就是成长的路.有些事,有些人,就应该忘记, ...

  6. java swing 动态生成表格_6 个曾经牛逼哄哄的 Java 技术,你用过吗?

    大家好啊,今天给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架,有些我甚至都没有用过,但我知道它曾经风光过. 废话不多说,下面我要开始吹了-- 1.Swing 下面这个是用 swing 开 ...

  7. java pdf 富文本_富文本编辑器保存的html内容使用itextpdf转PDF文件(css提取,内容重叠)问题解决...

    html格式处理 使用itextpdf的XMLWorkerHelper组件转换过程当中,html格式要求比较多,下面作下格式的简单处理以保证转换成功.css //div格式转换过程当中,有概率会使内容 ...

  8. java 检测网络图片大小_用security.imgSecCheck检测网络图片(Java实现)

    自从进入微信小程序的大坑,每天早上叫醒我的不再是闹钟,而是昨天提交小程序审核又没过,因为上传的图片没有做检测,很荣幸的收到审核不通过的结果通知. 就像往常一样一顿百度猛于虎,百度结果基本不靠谱,各种方 ...

  9. java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结

    关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...

最新文章

  1. php制作标记图,PHP使用JPGRAPH制作圆柱图的方法详解
  2. 怎么判断间隙过渡过盈配合_尺寸公差配合与装配方法
  3. COGS-257-动态排名系统-树状数组+主席树
  4. PyCairo 中的图片
  5. AI算法连载08:统计学之贝叶斯
  6. oracle管理表空间和数据文件(笔记)
  7. MapGuide 安装
  8. Origin抗锯齿和出现大C
  9. q-flashplus怎么使用_qflash是什么意思
  10. 201671010447杨露露 实验二词频统计软件项目报告
  11. 将pyecharts生成的html转为图片的一些问题
  12. 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
  13. 使用js修改图片像素颜色并保存
  14. 前端性能指标:白屏和首屏时间的计算
  15. xp无线网卡开启的服务器,笔记本xp系统开启无线网卡的方法
  16. 图像的傅里叶变换 java_java使用傅里叶变换,得到变换之后的傅里叶频谱图像。...
  17. Apk应用安全加固所需了解的Application启动流程
  18. 【转】在win10接双显示器(扩展模式)怎么把鼠标游标切换到第二台显示器上?
  19. 使用C#编写一个读取和判断股票实时成交数据的小工具
  20. esxi硬盘分区格式_esxi4.1使用IDE格式磁盘

热门文章

  1. [转载]Buffon投针实验:究竟为什么是pi?
  2. prometheus remote write for springboot 远程写入<一>
  3. 我把Github上最牛b的Java教程和实战项目整合成了一个PDF文档
  4. Skip List(跳表)
  5. 一些杂乱的C语言算法
  6. 文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案
  7. ElasticSearch服务(一)
  8. Leetcode-数据结构-88. 合并两个有序数组
  9. excel可以用python语言_用python打开excel的方法
  10. 操作系统文件管理之FCB