Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除其他运算符并仅保留文本运算符(TJ、TJ)pdfBox_Java_Pdf_Pdfbox - Fatal编程技术网

Java 删除其他运算符并仅保留文本运算符(TJ、TJ)pdfBox

Java 删除其他运算符并仅保留文本运算符(TJ、TJ)pdfBox,java,pdf,pdfbox,Java,Pdf,Pdfbox,我有一个pdf,我希望从中删除所有的图像和其他绘图内容。 并将结果保存为新的pdf 我知道如何使用TJ、TJ操作符删除文本,我目前执行的操作如下 op.getOperation().equals( "TJ") 除了删除TJ、TJ操作符,是否可以将这些文本操作符复制到另一个格式完整的pdf文件上,从而使新pdf变成纯文本pdf? 如果使用非Tj绘制的文本没有问题,Tj操作符会遗漏 删除TJ的代码,TJ取自stackoverflow post。但它部分工作,它只是删除图像,留下绘画和其他艺术完好无

我有一个pdf,我希望从中删除所有的图像和其他绘图内容。 并将结果保存为新的pdf

我知道如何使用TJ、TJ操作符删除文本,我目前执行的操作如下

op.getOperation().equals( "TJ")
除了删除TJ、TJ操作符,是否可以将这些文本操作符复制到另一个格式完整的pdf文件上,从而使新pdf变成纯文本pdf? 如果使用非Tj绘制的文本没有问题,Tj操作符会遗漏

删除TJ的代码,TJ取自stackoverflow post。但它部分工作,它只是删除图像,留下绘画和其他艺术完好无损

编辑: 我能想到的另一个选择是将BT ET块之外的所有其他运营商的cmyk颜色设置为白色。这样pdf将只显示文本。这可能吗?如果是,请在pdfBox中提供代码示例支持

。。。堆垛溢流柱。但它部分工作,它只是删除图像,留下绘画和其他艺术完好无损

位图图形以外的图形的主要来源是矢量图形。它们通常由路径定义和填充或抚摸路径的命令组成

要删除这些图形,您可以通过使用路径绘制no-op的n操作符替换这些路径敲击或填充操作符来改进您所指答案中的示例

在哪里

final static List<String> PAINTING_PATH_OPS = Arrays.asList("S", "s", "F", "f", "f*", "B", "b", "B*", "b*");
final static List PAINTING\u PATH\u OPS=Arrays.asList(“S”、“S”、“F”、“F*”、“B”、“B*”、“B*”);
包含路径删除或填充运算符

PS:参考答案中使用的图像删除代码有两个缺点:

  • 它删除太多,因为它不仅删除图像XObject,而且还形成XObject;有时(特别是在n-up工具输出中),所有内容都驻留在这样的表单XObject中,包括所有文本

    要解决此问题,您必须检查引用的xobject的类型,并且仅当其具有子类型image时才将其删除。由于表单xobject反过来也可以包含图像,因此必须递归到表单xobject(它有自己的内容流)

  • 它删除的内容太少,因为它忽略了内联图像

    要解决此问题,您还必须查找内容中的BI…键值对…ID…图像数据…EI部分并将其删除


页面内容有多复杂?也就是说,是否存在表单XObject,而表单XObject又可能包含混合文本和图像数据,因此也必须进行处理?感谢您提供如此详细的答案。我已经阅读了pdfreeference.pdf很多次,但还是完全忽略了“n”操作符。总是想知道为什么删除路径操作符会导致pdf损坏。正如您所提到的,我的pdf不包含任何表单对象,但您对它的突出介绍将提前派上用场。mkl,知道您是stackoverflow的一员已经一年多了,甚至连一个问题都没有问,真是令人惊讶。回答了无数次,回答更高。非常感谢您的工作。我问了一个关于信息安全的问题;)不管怎样,我通过回答问题学到了很多东西:我经常有一个解决问题的想法,但解决细节给出了有趣的见解。
final static List<String> PAINTING_PATH_OPS = Arrays.asList("S", "s", "F", "f", "f*", "B", "b", "B*", "b*");