我正在使用Tesseract Java API(tess4J(将Tiff图像转换为PDF。
这样做很好,但为了使用TessAPI1.TessPDFRendererCreate
API,我不得不将源Tiff图像和输出PDF都作为实际的物理文件写入本地文件存储。
请注意以下代码片段中的以下内容:-
-
输入Tiff最初是一个
java.awt.image.BufferedImage
,但我必须将其写入一个物理文件(sourceTiffFile是一个file对象(。 -
我必须为输出指定一个文件路径(pdfFullFilepath是一个字符串,表示新PDF文件的绝对路径(。
try { ImageIO.write(bufferedImage, "tiff", sourceTiffFile); } catch (Exception ioe) { //handling code... } TessResultRenderer renderer = TessAPI1.TessPDFRendererCreate(pdfFullFilepath, dataPath, 0); TessAPI1.TessResultRendererInsert(renderer, TessAPI1.TessPDFRendererCreate(pdfFullFilepath, dataPath, 0)); int result = TessAPI1.TessBaseAPIProcessPages(handle, sourceTiffFile.getAbsolutePath(), null, 0, renderer);
我真的很想避免创建物理文件,但不确定使用这个API是否可能。理想情况下,我希望将Tiff作为java.awt.image.BufferedImage
或字节数组传递,并将输出PDF作为字节数组接收。
任何建议都将一如既往地受到欢迎。谢谢:(
您可以在ProcessPage
API方法中传递一个Pix
,它可以从BufferedImage
转换而来,但输出仍然是一个物理文件。API命令。
https://tesseract-ocr.github.io/tessapi/4.0.0/a01625.html
http://tess4j.sourceforge.net/docs/docs-4.4/net/sourceforge/tess4j/TessAPI1.html
例如:
int result = TessAPI1.TessBaseAPIProcessPage(handle, LeptUtils.convertImageToPix(bufferedImage), page_index, "input file name", null, 0, renderer);