[更文挑战]iText番盘-PDF神器-3

251 阅读3分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

PDF神器iText英文版翻译与学习

作者: 薛大郎.
英文原版:iText in Action 2nd Edition.pdf

坚持. 分享. 成长. 利他 !

一. 前言

选择大于努力. ,方向不同,结果不同,成长总是痛苦的, 如果你现在觉得很难, 那说明你正在进步.

大道理大家都很懂, 对于最后一句话, 从物理角度论证, 力与反作用力;

开发的路在何方 v1.0(以小菜鸡的笔者的角度, 勿喷)
  • 名门子弟: 非大厂与他们无缘, 经常见于知名源码中(巅峰博主也在其中), 是许多开发的见识天花板;
  • 中流砥柱: 可以说是那些优秀博主为代表的, 也在大厂混迹, 或者辗转成为中厂支柱的大神;
  • 技术大于一切: 那些热爱Code, 以技术为信念, 能够带动身边人, 也是大家口中的黑马级别;
  • 技术为基础: 技术积累到一定程度, 有了新的目标: 产品, 管理, 架构, 运维, 甚至其他性质;
  • 技术过活: 为了生活的意义更重一些, 人生目标并没有太大, 可能被迫内卷; 希望涵盖所有的层次和可对号入座的去选择对应想走的路(不分上下, 只是想表述清楚), 可能不太合理健全, 希望有读者能一起完善, 也希望所有的开发都能够在自己选择的路上有所收获, 幸福健康快乐.

二.正文.

3. 详解创建Document的五步

补充一个很重要的小知识点:

    // 按照书籍镜面对称来设置左右 margin.
    document.setMarginMirroring(true);
    // 按照书籍镜面对称来设置底部和顶部 margin.
    document.setMarginMirroringTopBottom(true);
3.2 获取一个PdfWriter的实例

这个PdfWriter这个类内容较多, 有很多难理解的知识点. 它的主要职责就是字面意思: 写PDF文件. 也可以添加内容,比如注释等. Document文档类是为了添加一些高级元素的, 而PdfWriter是为了处理一些非Document无法做到的低等级元素写入, 而且可以直接将内容写入文件中.

对于上边讲到的HelloWorld 案例中, PdfWriter主要做了两步:

1. 将Document关联到一个PdfWriter上. 这个writer将监听这个document. 像Paragraph这样的高级元素,将转换为低级操作. 比如 paragraph 会转化成文本的内容, 放在这一页的特定位置上, 并进而转告页数和margins, 这样的Pdf语法, 从而将内容写入到Pdf中. 
2. PdfWriter的第二个参数是将一个FileOutputStream, 这个就简单了, 这个stream可以将Pdf生成到我们的目标目录.

值得注意的是, 在极少数情况下, 在创建这个writer实例的时候可能会造成DocumentException;

PdfWriter的第二个参数是 OutputStream 可以满足我们各种要求, 也可以传入ByteArrayOutputStream 用来转换成字节数组, 我想这样我们就通透了.

下一节: 3.3 打开Document 这就是我们的第三篇更文挑战内容, 就先到这里, 欲知后文, 且听下文;