gpt4 book ai didi

java - PDFBox:将文档转换为 PDDocument

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:34 25 4
gpt4 key购买 nike

我用 iText 创建了一个文档,我想将该文档(保存为 PDF 文件)转换为图像。为此,我使用 PDFBox,它需要一个 PDDocument 作为输入。我使用以下代码:

@SuppressWarnings("unchecked")
public static Image convertPDFtoImage(String filename) {

Image convertedImage = null;

try {

File sourceFile = new File(filename);
if (sourceFile.exists()) {

PDDocument document = PDDocument.load(filename);
List<PDPage> list = document.getDocumentCatalog().getAllPages();
PDPage page = list.get(0);

BufferedImage image = page.convertToImage();

//Part where image gets scaled to a smaller one
int width = image.getWidth()*2/3;
int height = image.getHeight()*2/3;
BufferedImage scaledImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics2D = scaledImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
graphics2D.dispose();

convertedImage = SwingFXUtils.toFXImage(scaledImage, null);

document.close();

} else {
System.err.println(sourceFile.getName() +" File not exists");
}

}
catch (Exception e) {
e.printStackTrace();
}

return convertedImage;
}

此刻,我从已保存的文件中加载文档。但我想在 Java 内部执行此操作。

所以我的问题是:如何将文档转换为 PDDocument?

非常感谢任何帮助!

最佳答案

您可以做的是将 itext 文件保存到 ByteArrayOutputStream 中,然后将其转换为 ByteArrayInputStream。

Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, baos);
document.open();
document.add(new Paragraph("Hello World!"));
document.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
PDDocument document = PDDocument.load(bais);

当然文件不能太大,否则会出现内存问题。

关于java - PDFBox:将文档转换为 PDDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26818654/

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