【发布时间】:2016-04-18 15:36:45
【问题描述】:
我刚刚将 PDFBox 版本从 1.8 升级到 2.0。
Migration 表示.convertToImage() 已被删除,并且在他们的示例代码中没有BufferedImage 的行,但它在.writeImage() 中使用
他们的代码:
PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(document);
int pageCounter = 0;
for (PDPage page : document.getPages())
{
pdfRenderer.renderImageWithDPI(pageCounter, 300, ImageType.RGB);
// suffix in filename will be used as the file format
ImageIOUtil.writeImage(bim, pdfFilename + "-" + (pageCounter++) + ".png", 300);
}
document.close();
我相信 BufferedImage 在ImageIOUtil.writeImage(bim, pdfFilename + "-" + (pageCounter++) + ".png", 300); 中用作bim。如果他们删除了.convertToImage(),我应该如何实现 BufferedImage?
第二件事是关于.decrypt()。他们没有提到.decrypt()。我应该用什么来代替.decrypt()?
我的整个代码:
try {
String sourceDir = "/home/linux/books/text.pdf";
File sourceFile = new File(sourceDir);
PDDocument document = PDDocument.load(sourceFile);
PDFRenderer pdfRenderer = new PDFRenderer(document);
if (document.isEncrypted()) {
try {
System.out.println("Trying to decrypt it...");
document.decrypt("");
// error says: The method decrypt(String) is undefined for the type PDDocument.
// it was working on pdfbox 1.8.
document.setAllSecurityToBeRemoved(true);
System.out.println("The file has been decrypted in .");
}
catch (Exception e) {
throw new Exception("cannot be decrypted. ", e);
}
}
PDPage firstPage = (PDPage) document.getDocumentCatalog().getPages().get(0);
pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
String fileName = sourceFile.getName().replace(".pdf", "");
BufferedImage image = firstPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
ImageIOUtil.writeImage(image , fileName+".jpg",300);
document.close();
} catch (Exception e) {
e.printStackTrace();
}
入门内容正在构建中。这就是为什么我无法检查我的问题。
【问题讨论】: