栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用iText Java为整个pdf文档选择文本和背景

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用iText Java为整个pdf文档选择文本和背景

正如我在对问题的最后一条评论中提到的那样,只要将所有颜色反转都足以解决您的任务,那么在混合模式下绘制白色矩形 差异 就可以完成工作:

void invert(File source, File target) throws IOException, documentException{    PdfReader reader = new PdfReader(source.getPath());    OutputStream os = new FileOutputStream(target);    PdfStamper stamper = new PdfStamper(reader, os);    invert(stamper);    stamper.close();    os.close();}void invert(PdfStamper stamper){    for (int i = stamper.getReader().getNumberOfPages(); i>0; i--)    {        invertPage(stamper, i);    }}void invertPage(PdfStamper stamper, int page){    Rectangle rect = stamper.getReader().getPageSize(page);    PdfContentByte cb = stamper.getOverContent(page);    PdfGState gs = new PdfGState();    gs.setBlendMode(PdfGState.BM_DIFFERENCE);    cb.setGState(gs);    cb.setColorFill(new GrayColor(1.0f));    cb.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight());    cb.fill();    cb = stamper.getUnderContent(page);    cb.setColorFill(new GrayColor(1.0f));    cb.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight());    cb.fill();}

invertPage
并绘制混合模式的差异上述提到的白reactangle 的页面。此外,它通常 页面 下方
绘制一个白色矩形;事实证明,至少对于我在这里使用的Acrobat Reader版本而言,这是必需的。

您可能需要对代码进行一些调整,以使结果更易于阅读。也许混合模式 排除

BM_EXCLUSION
)更合适,或者其他一些图形状态调整可以改善您的阅读体验。只要有创造力!;)

有关PDF混合模式的一些背景,你可能需要阅读部分11.3.5 混合模式 在PDF规范ISO
32000-1
和研究透明度的相关实例的行动iText的-
第二版。

PS:此代码仅反转页面内容。注释不受影响。如果结果证明是必要的,则可以执行类似于其外观流的操作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号