我想将PDF文档转换为图像.我在使用Ghost4j.
问题: Ghost4J需要gsdll32.dll文件在运行时,我也并不想使用的DLL文件.
问题1:有什么办法,在ghost4j中转换图像而不用dll?
问题2:我在PDFBox API中找到了解决方案.org.apache.pdfbox.pdmodel.PDPagep
have methodconvertToImage()`将PDF页面转换为图像格式.
PDDocument doc = PDDocument.load(new File("/document.pdf"));
List<PDPage>pages = doc.getDocumentCatalog().getAllPages();
PDPage page = pages.get(0);
BufferedImage image =page.convertToImage();
File outputfile = new File("/image.png");
ImageIO.write(image, "png", outputfile);
doc.close();
Run Code Online (Sandbox Code Playgroud)
我在PDF文档上只有文字.当我运行此代码时,我有这个例外:
Aug 12, 2013 6:00:24 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: BDC
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.getawtFont(PDTrueTypeFont.java:481)
at org.apache.pdfbox.pdmodel.font.PDSimpleFont.drawString(PDSimpleFont.java:109)
at org.apache.pdfbox.pdfviewer.PageDrawer.processTextPosition(PageDrawer.java:235)
at org.apache.pdfbox.util.PDFStreamEngine.processEncodedText(PDFStreamEngine.java:496)
at org.apache.pdfbox.util.operator.ShowTextGlyph.process(ShowTextGlyph.java:62)
at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:554)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用Ghost4J SimpleRenderer将我的PDF转换为Image.默认情况下,输出png图像不是抗锯齿.
我怎么设置它.
我知道,使用Core API我们可以做到.但是,在高级API中是否有任何方法可以设置它?
我有一个 pdf 文件(从byte[]iText 生成的文件中获得),我需要发送到签名硬件。
由于与java打印机驱动程序不兼容,我无法直接发送PDF,因此我需要先将其转换为图像。我已成功将每个 PDF 页面转换为 jpg 文件,但客户不喜欢解决方案,因为签名不在所有文档中,仅在单个页面中。
由于我还没有找到任何免费的库,我决定分四个步骤进行:
STEP1:用itext生成PDF并保存它。
FileOutputStream fos = new FileOutputStream("tempFile.pdf");
fos.write(myByteArray);
fos.close();
fos.flush();
Run Code Online (Sandbox Code Playgroud)
第 2 步:从 PDF 多页转换为List<java.awt.Image>
List<Image> images = null;
Ghostscript.getInstance(); // create gs instance
PDFDocument lDocument = new PDFDocument();
lDocument.load(new File("tempFile.pdf"));
SimpleRenderer renderer = new SimpleRenderer();
renderer.setResolution(300);
try
{
images = renderer.render(lDocument);
}
catch (RendererException | DocumentException e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
第 3 步:现在我迭代List<java.awt.Image>以转换为单独的 TIFF。
int filename = 1;
TIFFEncodeParam params = new …Run Code Online (Sandbox Code Playgroud) 我在Windows 64位上使用tesseract 3和Java 8到OCR扫描的PDF.我已经按照Tess4j页面上的说明使用了64位版本的所需DLL,并安装了64位Ghostscript.
当我使用正常的@Test(无参数)运行我的单元测试时,代码运行正常,所以我想我已经正确安装了所有内容.
当我用2个并行线程运行它时(见下文),我得到一个例外.
我在这里已经阅读了相关的主题,但建议使用我正在使用的Tesseract1(我已经尝试了两个).
有任何想法吗?
这是代码:
// @Test // works
@Test(invocationCount = 2, threadPoolSize = 2)
public void testOcr() throws OcrException, TesseractException {
File scannedPdf = new File(this.getClass().getClassLoader().getResource("scanned.pdf").getFile());
// Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
String str = instance.doOCR(scannedPdf);
System.out.println("OCR Result: " + str);
}
Run Code Online (Sandbox Code Playgroud)
这是例外:
log4j:WARN No appenders could be found for logger (org.ghost4j.Ghostscript).
log4j:WARN Please initialize …Run Code Online (Sandbox Code Playgroud) 我已经在我的 64 位 linux 机器上安装了 64 位的 ghostscript。我正在使用 ghost4j-0.5.0.jar 将 pdf 文件转换为 tiff 文件。我写了一个java程序,它将pdf文件转换为tiff文件。这在 Windows 上运行得非常好,但是当我想到将它移动到 linux 机器时,我收到以下错误。
“线程“main”中的异常java.lang.UnsatisfiedLinkError:无法加载库“gs”:libgs.so:无法打开共享对象文件:没有这样的文件或目录”
我检查了 lib 文件夹,但在 lib 文件夹中找不到 libgs.so 文件。我不确定从哪里获取该文件。
任何人都可以帮我解决这个问题吗?
ghost4j ×5
java ×5
ghostscript ×2
pdf ×2
imagemagick ×1
itext ×1
jai ×1
pdfbox ×1
tess4j ×1
tesseract ×1