Java 删除其他运算符并仅保留文本运算符(TJ、TJ)pdfBox
我有一个pdf,我希望从中删除所有的图像和其他绘图内容。 并将结果保存为新的pdf 我知道如何使用TJ、TJ操作符删除文本,我目前执行的操作如下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。但它部分工作,它只是删除图像,留下绘画和其他艺术完好无
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部分并将其删除
final static List<String> PAINTING_PATH_OPS = Arrays.asList("S", "s", "F", "f", "f*", "B", "b", "B*", "b*");