Java 在BBOX中使用提取内容流(图像、文本和图形)。并将其放回新的PDF格式,而不丢失任何样式?

Java 在BBOX中使用提取内容流(图像、文本和图形)。并将其放回新的PDF格式,而不丢失任何样式?,java,pdf,accessibility,pdfbox,Java,Pdf,Accessibility,Pdfbox,我在中有现有的内容流。我想在下面的边界框下提取内容流。 第一个B框显示图形、文本内容流。 第二个BBOX文本,一些数学方程相关内容流。 第三个BBOX图像和文本内容流存在 所以我想提取bbox中的所有内容流 提取内容流后,我将在内容流中执行与标记相关的操作,我想将其放回新的PDF 这是我想使用PDFBox执行的操作。可能吗 请帮助我如何实现这一点。在附加的PDF中,内容流没有顺序。我的意思是,当解析内容流时,我们可以首先找到所有文本相关流,数学公式相关流放在底部。但是我们必须把所有的都放在一个

我在中有现有的内容流。我想在下面的边界框下提取内容流。

第一个B框显示图形、文本内容流。 第二个BBOX文本,一些数学方程相关内容流。 第三个BBOX图像和文本内容流存在

  • 所以我想提取bbox中的所有内容流

  • 提取内容流后,我将在内容流中执行与标记相关的操作,我想将其放回新的PDF

  • 这是我想使用PDFBox执行的操作。可能吗


    请帮助我如何实现这一点。

    在附加的PDF中,内容流没有顺序。我的意思是,当解析内容流时,我们可以首先找到所有文本相关流,数学公式相关流放在底部。但是我们必须把所有的都放在一个新的PDF中。因此,与位置相关的运算符值应动态更改。如何使用pdfbox实现这一点?pdfbox提供了一个内容流解析框架(
    PDFGraphicsStreamEngine
    PDFStreamEngine
    ,…),您可以在此基础上建立内容流编辑机制。您可以采用类似于中的
    PdfContentStreamEditor
    的方式执行此操作。但仍有很多事情要做,您必须确保在洗牌指令后,所有实际的绘图指令都以其原始图形状态运行。@mkl感谢您的评论。除了PdfContentStreamEditor示例类之外,您还有任何图形状态操作的示例代码吗?如果是,请给我一些链接。我使用该
    PdfContentStreamEditor
    仅用于简单的操作,例如删除特定文本(大字体、透明字体或特殊字体)或更改特定颜色,但从未用于像您这样的任务。这就是为什么我说还有很多事情要做。一个选项是扩展编辑器类,使其具有多个
    ContentStreamWriter
    实例,每个实例对应于当前页面上的每个框,并将所有非绘图指令输出到所有实例,将绘图指令仅输出到匹配的实例。然后将这些内容流封装在
    q。。。Q
    并连接形成结果流。我尝试使用PDFGraphicsStreamEngine来创建流程页面,它完全弄乱了glyph的位置。检查下面的链接,那么什么是通用方法?在附加的PDF中,内容流没有顺序。我的意思是,当解析内容流时,我们可以首先找到所有文本相关流,数学公式相关流放在底部。但是我们必须把所有的都放在一个新的PDF中。因此,与位置相关的运算符值应动态更改。如何使用pdfbox实现这一点?pdfbox提供了一个内容流解析框架(
    PDFGraphicsStreamEngine
    PDFStreamEngine
    ,…),您可以在此基础上建立内容流编辑机制。您可以采用类似于中的
    PdfContentStreamEditor
    的方式执行此操作。但仍有很多事情要做,您必须确保在洗牌指令后,所有实际的绘图指令都以其原始图形状态运行。@mkl感谢您的评论。除了PdfContentStreamEditor示例类之外,您还有任何图形状态操作的示例代码吗?如果是,请给我一些链接。我使用该
    PdfContentStreamEditor
    仅用于简单的操作,例如删除特定文本(大字体、透明字体或特殊字体)或更改特定颜色,但从未用于像您这样的任务。这就是为什么我说还有很多事情要做。一个选项是扩展编辑器类,使其具有多个
    ContentStreamWriter
    实例,每个实例对应于当前页面上的每个框,并将所有非绘图指令输出到所有实例,将绘图指令仅输出到匹配的实例。然后将这些内容流封装在
    q。。。Q
    并连接形成结果流。我尝试使用PDFGraphicsStreamEngine来创建流程页面,它完全弄乱了glyph的位置。检查下面的链接,那么什么是通用方法?