我正在使用Ghostscript通过java使用命令从PDF渲染图像,但是我正在尝试使用ghost4j-0.5.0.jar从PDF中运行Ghoscript进行图像渲染,下面的代码是我从{{3}获取的网站。
问题是渲染过程需要两分钟以上才能生成一个图像,虽然通过命令行需要一秒钟,但是我试图通过java运行所有东西,我想停止使用imagemagick和ghostscript作为工具,请注意,我很满意使用ghoscript,我不想使用任何其他工具,因为它为我提供了我需要的图像质量和尺寸, 使用的代码是,:
public class SimpleRendererExample {
public static void main(String[] args) {
imageRenderingFromPdf();
}
public static void imageRenderingFromPdf() {
try {
PDFConverter converter = new PDFConverter();
PDFDocument doc;
// load PDF document
PDFDocument document = new PDFDocument();
document.load(new File("d:/cur/outputfile.pdf"));
// create renderer
SimpleRenderer renderer = new SimpleRenderer();
// set resolution (in DPI)
renderer.setResolution(100);
System.out.println("started");
// render
long before = System.currentTimeMillis();
List<Image> images = renderer.render(document);
long after = System.currentTimeMillis();
System.out.println("reder " + (after - before) / 1000);
// write images to files to disk as PNG
try {
before = System.currentTimeMillis();
ImageIO.write((RenderedImage) images.get(0), "png", new File(
"d:/dd" + ".png"));
after = System.currentTimeMillis();
System.out.println("write " + (after - before) / 1000);
} catch (IOException e) {
System.out.println("ERROR: " + e.getMessage());
}
} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
}
}
答案 0 :(得分:1)
有些事情会减慢“渲染”过程。
首先,它不是由于Ghostscript,Ghostscript由它的自身工作相同,如果它是通过命令行或API执行无关紧要。
速度差异是ghost4j渲染实现的结果。我刚检查了ghost4j的源代码,我发现它是iText和Ghostscript实现的混合体。
那么,您使用的代码如何工作:
周部分是iText并用于显示设备回调。我想通过让Ghostscript处理光栅化结果存储而不是从Java手动执行它来获得速度......
我想你现在可以看到你注意到速度差异的原因了。