我正在寻找一个pdf文件,将每页的背景颜色设置为黑色,所有文本设置为白色。
对我来说最简单的方法是什么?是否有一个api调用来选择每个页面的背景和文件中的所有文本?还是我必须以某种方式遍历每个页面?
正如我在对问题的最后一条评论中提到的那样,只要将所有颜色反转都足以解决您的任务,那么在混合模式下绘制白色矩形 差异 就可以完成工作:
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:此代码仅反转页面内容。注释不受影响。如果结果证明是必要的,则可以执行类似于其外观流的操作。
我正在尝试将一个PDF文档拆分为多个文档,其中每个文档包含的最大页数小于最大文件大小。 我的代码目前可以在Eclipse上运行,但是当我点击. jar文件时,java类中的静态方法似乎崩溃了(但是我似乎抓不到异常)。 不工作的代码是: myListOfDocuments=mysplitter。拆分(文件); 在调用上述行时,JVM会以某种方式退出静态方法。加载似乎工作正常,如下所示:PDDocum
我使用此代码在表单中设置select。 我检查时的html部分似乎具有适当的值,并将文本放在那里。 但是在屏幕上,选择框是空的,不显示文本。 我也试图将文本放在跨度选项中,但它也不起作用
我正在尝试使用他们网站上提供的Docx4j社区包将一个Word文件转换成PDF。(http://www . docx 4 Java . org/docx 4j/docx 4j-community-3 . 3 . 1 . zip) 看起来这个包上的docx4j和FOP之间存在版本不兼容问题,我想知道以前是否有人遇到过这个问题,您是否知道什么版本的库可以实现这个功能。 这是我的代码: 我复制了下面的s
Atom中的文本选择支持很多操作,比如区域选择、缩进和一些查找操作, 以及用引号或者括号把文字括起来之类的标记操作。 选择命令借鉴了很多查找命令。他们实际上具有相同的快捷键,只不过加了个shift。 ctrl-shift-P 选择当前位置到上一行的相同列 ctrl-shift-N 选择当前位置到下一行的相同列 ctrl-shift-B 选择前一个字符 ctrl-shift-F 选择后一个字符 al
系统中的一些PDF文档是通过扫描创建的,其中包括OCR文本。然而,OCR没有正确执行(西里尔语和拉丁语字符混淆),尽管文档看起来可以搜索,但该信息完全不正确,无法使用。 在Adobe Acrobat Reader DC(或GoogleChrome)中查看PDF文档时,它会正确显示,但在使用PDF. js呈现文档的网页上,OCR文本会显示在前面,而不是原始文本的扫描图形呈现。 这个想法是通过从PDF
问题内容: 我找不到答案的简单问题:如何使用JavaScript(或jQuery)取消选择可能在网页上选择的任何文本?EG用户单击并拖动以突出显示一些文本- 我想要一个函数deselectAll()来清除此选择。我应该怎么写呢? 谢谢您的帮助。 问题答案: