Java 在没有图像的情况下使用PDFBox将PDF转换为灰度?

Java 在没有图像的情况下使用PDFBox将PDF转换为灰度?,java,pdf,pdf-generation,pdfbox,Java,Pdf,Pdf Generation,Pdfbox,我正在使用ApachePDFBox 我想将一个RGB PDF文件转换为另一个灰度文件,而不使用图像方法,因为它会产生巨大的文件大小-- 这就是我的步骤: 从Adobe InDesign导出(A4)First.pdf,包含图像、文本和矢量对象 我读了第一个.pdf文件。完成了 使用LayerTubility,从First.pdf复制页面,旋转页面并将其放入新的pdf文件(A4)Second.pdf。完成了 首选此方法,因为我需要向量对象来减小大小 然后,我想将其保存为灰度PDF文件(Secon

我正在使用ApachePDFBox

我想将一个RGB PDF文件转换为另一个灰度文件,而不使用图像方法,因为它会产生巨大的文件大小--

这就是我的步骤:

  • 从Adobe InDesign导出(A4)First.pdf,包含图像、文本和矢量对象

  • 我读了第一个.pdf文件。完成了

  • 使用LayerTubility,从First.pdf复制页面,旋转页面并将其放入新的pdf文件(A4)Second.pdf。完成了

    • 首选此方法,因为我需要向量对象来减小大小
  • 然后,我想将其保存为灰度PDF文件(Second grayscale.PDF)
  • 这是我的代码(不是全部):

    pddocumentfirst=PDDocument.load(“First.pdf”);
    //它总是空的
    pddocumentdocumentsecond=PDDocument.load(“Second.pdf”);
    对于(int page=0;page
    好的,我这周刚开始使用ApacheBox,我遵循了一些 例如,但大多数都是老年人,没有工作,直到现在我做了我想做的事 需要,只需要灰度:)

    如果java中有其他使用开源库的解决方案 或者免费的工具。(我用Ghost脚本和Python找到了)

    我读过这个示例,但我不理解它,并且有一个函数不推荐使用!:


    这是关于PDF规格和更改颜色空间的…

    据我所知,您提到您会对基于Ghostscript的解决方案感兴趣。 如果可以从命令行调用GS,则可以使用此命令行执行颜色到灰度的转换

    gs -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o out.pdf -f input.pdf
    

    我的答案取自您提到的,据我所知,您可能对基于Ghostscript的解决方案感兴趣。 如果可以从命令行调用GS,则可以使用此命令行执行颜色到灰度的转换

    gs -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o out.pdf -f input.pdf
    

    我的答案取自

    该示例仅适用于简单文档。但是一个完整的解决方案是非常重要的。PDFBox可以进行灰度转换吗?不是“开箱即用”。据我所知,没有现成的PDFBox转换例程,您参考的示例只涉及非常简单的情况。另一方面,pdfbox为任意pdf操作提供了一个框架;因此,您可以基于pdfbox实现自己的转换。所以“PDFBox可以进行灰度转换吗?”-可以,但可能不是现成的。补充:如果您没有共享讨论中的pdf(或pdf的代表性示例),我无法判断您找到的示例是否已经足够。该示例仅适用于简单文档。但是一个完整的解决方案是非常重要的。PDFBox可以进行灰度转换吗?不是“开箱即用”。据我所知,没有现成的PDFBox转换例程,您参考的示例只涉及非常简单的情况。另一方面,pdfbox为任意pdf操作提供了一个框架;因此,您可以基于pdfbox实现自己的转换。所以“PDFBox可以进行灰度转换吗?”-可以,但可能不是现成的。如果你没有分享讨论中的pdf(或pdf的代表性示例),我无法判断你找到的示例是否已经足够。