我想按页分割pdf到图像文件,但我得到了警告:你没有关闭PDF文档循环时renderImageBackDPI仍然有警告更新代码:
public void splitImage(PDDocument document, File checkFile, File theDirSplit, String fileExtension, File theDir, File watermarkDirectory, int numberOfPages)
throws InvalidPasswordException, IOException {
String fileName = checkFile.getName().replace(".pdf", "");
int dpi = 300;
if (theDirSplit.list().length < numberOfPages)
{
for (int i = 0; i < numberOfPages; ++i)
{
if (i == numberOfPages)
break;
if (theDirSplit.list().length != numberOfPages)
{
File outPutFile = new File(theDirSplit + Constan.simbol + fileName + "_" + (i + 1) + "." + fileExtension);
document = PDDocument.load(checkFile);
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bImage = pdfRenderer.renderImageWithDPI(i, dpi, ImageType.RGB);
ImageIO.write(bImage, fileExtension, outPutFile);
}
// splitService.watermark(outPutFile, (i + 1), watermarkDirectory, "pdf");
}
document.close();
//System.out.println("Converted Images are saved at -> " + theDirSplit.getAbsolutePath());
}
System.out.println("Done Partial SPlit");
/*
* int i = 1; while (iterator.hasNext()) { PDDocument pd = iterator.next();
* pd.save(theDirSplit + Constan.simbol + i++ + ".pdf"); }
* System.out.println("Multiple PDF’s created");
*/
}
错误循环
总警告与页数相同。。。我已经尝试关闭但无法工作,这个过程使我的服务器成为java。lang.OutOfMemoryError:Java堆空间
更新:
else if ("pdf".equalsIgnoreCase(typeFile)) {
System.out.println(
"target file " + downloadPath + R_OBJECT_ID + Constan.simbol + R_OBJECT_ID + "." + typeFile);
//get jumlah halaman
try(PDDocument document = PDDocument.load(checkFile)){
File theDirSplit = new File(theDir.getAbsolutePath() + Constan.simbol + "splitImage");
createFolder(theDirSplit);
String fileExtension = "jpeg";
File watermarkDirectory = new File(theDir.getAbsolutePath() + Constan.simbol + "watermarkImage");
createFolder(watermarkDirectory);
// split 2 page image
if (theDirSplit.list().length <= document.getNumberOfPages()) {
try {
splitImage(document,checkFile, theDirSplit, fileExtension, theDir, watermarkDirectory, document.getNumberOfPages()/2);
} catch (IOException e) {
System.out.println("ERROR SPLIT PDF " + e.getMessage());
e.printStackTrace();
}
}
res.setTotalPages(document.getNumberOfPages());
document.close();
return new ResponseEntity<>(res, HttpStatus.OK);
}
} else {
res.setTotalPages(1);
return new ResponseEntity<>(res, HttpStatus.OK);
}
这是调用拆分方法的代码......
这在一定程度上与问题无关,但原因是未能关闭splitter生成的文档。split()。
我正在尝试加载PDF文档并打印它。整个过程都正常,但我收到了以下警告“警告:您没有关闭PDF文档”,我不明白为什么在我关闭文档后会出现这种情况。它出现在第11行(job.print();)。因为它是在打印时发生的,所以我无法调试它。
在对PDF文档进行数字签名后,我在Apache PDFBox中关闭了PDF文档。我收到警告:
我收到这个警告。怎么了?
当我使用像或这样的IO类时,Eclipse会显示一个警告。如何使Eclipse在我自己的类未关闭时为它显示此警告? 我想知道的是,是否有一个接口或我需要实现的东西来使我的类被视为IO类,以便它独立于任何一个IDE,例如,命令行在资源未关闭时也会显示警告。
我想知道我是否可以使用MathJax渲染LaTeX符号,而不封装LaTeX符号周围的\(......\)。例如,对于\frac{2}{3}而不是\(\frac{2}{3}\),如果是,我如何设置它? 非常感谢!
我需要能够删除安全/加密从一些PDF文档,最好与itextsharp库。这在过去是可能的(如何通过使用C#提供文件的密码作为参数来解密pdf文件?),但最近对库的更改意味着该解决方案不再起作用。