gpt4 book ai didi

java - 使用没有图像的 PDFBox 将 PDF 转换为灰度?

转载 作者:行者123 更新时间:2023-12-02 10:44:43 24 4
gpt4 key购买 nike

我正在使用 Apache PDFBox,

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

这是我的步骤:

  1. 从 Adob​​e InDesign 导出 (A4) First.pdf,包含图像、文本、 vector 对象。

  2. 我阅读了 First.pdf 文件。完成!

  3. 使用 LayerUtility,从 First.pdf 复制页面,旋转它们并将它们放入新的 PDF 文件 (A4) Second.pdf。完成!

    • 首选此方法,因为我需要 vector 对象来减小大小。
  4. 然后,我想将其另存为灰度 PDF 文件 (Second-grayscale.pdf)

这是我的代码(不是全部):

PDDocument documentFirst = PDDocument.load("First.pdf"));

// Second.pdf its empty always
PDDocument documentSecond = PDDocument.load("Second.pdf"));

for (int page = 0; page < documentSecond.getNumberOfPages(); page++) {
// get current page from documentSecond
PDPage tempPage = documentSecond.getPage(page);

// create content contentStream
PDPageContentStream contentStream = new PDPageContentStream(documentSecond, tempPage);

// create layerUtility
LayerUtility layerUtility = new LayerUtility(documentSecond);

// importPageAsForm from documentFirst
PDFormXObject form = layerUtility.importPageAsForm(documentFirst, page);

// saveGraphicsState
contentStream.saveGraphicsState();

// rotate the page
Matrix matrix;
matrix.rotate(Math.toRadians(90));
contentStream.transform(matrix);

// draw the rotated page from documentFirst to documentSecond
contentStream.drawForm(form);

contentStream.close();
}

// save the new document
documentSecond.save("Second.pdf");

documentSecond.close();
documentFirst.close();

// now convert it to GRAYSCALE or do it in the Loop above!

well, i just start using Apache Box this week, i have followed some example, but most are old and not working, until now i did what i need, just need the Grayscale :)!!

java中是否有其他使用开源库的解决方案或免费工具。 (我用 Ghost 脚本和 Python 发现)

我读了这个示例,但我不明白它,并且有一个函数已弃用!:

https://github.com/lencinhaus/pervads/blob/master/libs/pdfbox/src/java/org/apache/pdfbox/ConvertColorspace.java

关于 PDF 规范和更改色彩空间...

最佳答案

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

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

我的回答取自How to convert a PDF to grayscale from command line avoiding to be rasterized?

关于java - 使用没有图像的 PDFBox 将 PDF 转换为灰度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com