java pdf分页显示_使用iText“重新分页”PDF

Disclaimer:

我正在使用iText 5.我知道这通常是不赞成的(与使用iText 7相比),但我正在处理使用iText 5的大量遗留代码,升级不受我的控制 .

Requirements:

A "simple" PDF / A作为输入接收(仅文本,这些是从RTF生成的),以及与所需的第一页长度(以英寸为单位)对应的浮点值 .

必须输出与输入PDF相同的PDF / A,除了它的分页如下:第一页长度=输入值;每个后续(不是第一个或最后一个)页面将填充标准页面长度;最后一页将被截断在距离页面底部最近的内容之下的恒定点数 . 请注意,输入和输出宽度将是相同且恒定的 .

Progress / Approach:

我扩展了 SimpleTextExtractionStrategy 以生成包含字体信息(大小和族,粗体或斜体等)的XML以及位置信息(相对于输入的第一页左上角的原点的绝对坐标系统PDF)对于从输入PDF中提取的每个"span"文本 .

然后,我逐页生成一个新的PDF(根据上面列出的要求,每个页面都是所需的长度),根据每个新页面的边界使用LINQ过滤提取的XML信息,并在适当的位置添加适当格式的文本使用 ColumnText.ShowTextAligned(...) .

Problem:

上面概述的方法很好 . 它生成具有所需页面结构的PDF,但某些信息在翻译时丢失,即彩色文本和带下划线的文本 . 虽然不应在这些PDF中看到彩色文本,但绝对必须检测带下划线的文本 .

这组要求还应包括带表格的PDF . 我最初计划实现一个不同的模块,该模块遵循表格PDF的相同界面,因为它们是从RTF生成的PDF中单独生成和使用的,而且iText内置了相对强大的表格功能 .

上面提到的两个问题,再加上我所描述的方法源于重用现有代码的尝试,这让我相信完全不同的方法可能是必要的,或者至少要好得多 . 在我看来,应该有一种方法来捕获内容字节信息并根据需要剪辑它以“重新分页”输入PDF,只担心移动沿页面边界的内容 .

基本上,我正在寻找(基于iText)推荐更好的方法 . 伪代码类型的答案或只是对可能有用的类/接口的建议是可接受的 . 虽然将文本和表格放在一起会很好,但任何与一个或另一个相关的建议也会受到赞赏 . 我已经仔细阅读了iText网站上的大部分可用文档和其他SO问题,但还没有找到我正在寻找的内容 .

请注意,此问题中不包含任何代码,因为我正在寻找与我尝试过的完全不同的高级方法 .

Edit:

我以前没有注意到它,但是我重用字体的方式(类似于this)导致了一些意想不到的(但是记录在案)这样的行为 . 似乎我需要避免在文本级别提取重新分页的信息,因为很难确保输入和输出之间字体的连续性 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值