当前位置: 首页 > 知识库问答 >
问题:

当java调用python脚本时,tabula-py无法读取文件

谢建业
2023-03-14

我正在做一个基于java的项目。java程序将运行命令来调用python脚本。

python脚本用于以表格形式读取pdf文件并返回数据。

当我在终端(pytho3 xxx.py)中直接调用python脚本时,我尝试了python脚本是工作的

但是,当我试图从java调用python脚本时,它将抛出错误:

Error from tabula-java:Error: File does not exist
Command '['java', '-Dfile.encoding=UTF8', '-jar', '/home/ubuntu/.local/lib/python3.8/site-packages/tabula/tabula-1.0.5-jar-with-dependencies.jar', '--pages', 'all', '--lattice', '--guess', '--format', 'JSON', '/home/ubuntu/Documents/xxxx.pdf']' returned non-zero exit status 1.

我尝试以完整路径调用脚本,以完整路径提供pdf文件,尝试sys。append(python脚本路径),两者都不起作用。

我尝试在java中调用tabla命令,即java-Dfile。encoding=UTF8-jar/home/ubuntu/。local/lib/python3。8/站点包/tabla/tabla-1.0.5-jar-with-dependencies。jar“文件路径”

它的工作,可以读取文件。然而,返回java调用python脚本是不可行的

有什么办法解决这个问题吗?在java程序中使用tabla不适合我的情况

共有1个答案

鲁涵意
2023-03-14

既然你提到你提到你使用java作为基本代码,使用python来阅读PDF,最好完全使用java来获得更高效的代码。为什么啊?因为已经有工具为你准备好了。绝对没有必要努力将一种语言与另一种语言联系起来。

代码:


import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;

/**
 * This class is used to read an existing
 *  pdf file using iText jar.
 */
public class PDFReadExample {
    public static void main(String args[]){
        try {
            //Create PdfReader instance.
            PdfReader pdfReader = new PdfReader("D:\\testFile.pdf");    
            
            //Get the number of pages in pdf.
            int pages = pdfReader.getNumberOfPages(); 
            
            //Iterate the pdf through pages.
            for(int i=1; i<=pages; i++) { 
                //Extract the page content using PdfTextExtractor.
                String pageContent = 
                    PdfTextExtractor.getTextFromPage(pdfReader, i);
                
                //Print the page content on console.
                System.out.println("Content on Page "
                              + i + ": " + pageContent);
            }
            
            //Close the PdfReader.
            pdfReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 类似资料:
  • 我试图从一系列PDF文件中提取表格,但无法使表格工作。我一直试图通过Windows操作系统上的Jupyter笔记本使用它。不幸的是,我也得到了同样的结果 “FileNotFoundError” 每次我尝试使用read_PDF()。 从我到目前为止在网上发现的情况来看,这个错误似乎是在试图运行Tabula java文件时产生的。我已经正确安装了java。 在此方面的任何帮助都将不胜感激。 这是我试图

  • 目录结构如下: 运行测试命令 unittest 会读取所有 test 开头的 .py 文件,但是我的两个 test_meta.py 和 test_sample.py 居然没有被读取? 但是写成 python -m unittest testing.test_sample 和 python -m unittest testing.test_meta 是可以的,直接 python -m unittes

  • 可以使用FileReader直接读取文本文件 我们为什么需要使用InputStream方法

  • 我有一个Java程序来调用python脚本。我使用了exec方法。请在下面找到代码片段: Python程序(从维基百科收集一部分文本)单独运行时,可以提供适当的输出。当从Java调用时,我无法从python程序获得完整的输出。 我使用ready()方法检查了BufferedReader对象的状态(如本文所述,代码进入了无限循环)。 我认为其他人也面临着类似的问题-https://stackover

  • 问题内容: 我从PHP脚本执行Python脚本时遇到问题。我的客户端使用Bluehost,因此我使用在此描述的easy_install方法为Python安装了第三方模块(numpy):https ://my.bluehost.com/cgi/help/530?step = 530 为了演示我的问题,我创建了两个python脚本和一个PHP脚本。 hello.py包含: hello-numpy.py

  • 我想在java8中读取文本文件,我得到错误“类型不匹配:无法从FileReader转换到Reader”。如果我将Reader类更改为FileReader,则会出现错误“构造函数BufferedReader(FileReader)未定义”,我的语句是 请建议