C语言 在 Linux 中以编程方式运行 pdftotext x.pdf y.txt


char *readFile(char *path, char *buffer) {
    if(strcmp(getExtenstion(path), "pdf") == 0){
        pid_t pid = fork();
        if(pid == 0) {
            execlp("pdftotext", path, "henok.txt");
        }
        wait(NULL);
        readTextFile("henok.txt", buffer);
    }
    else {
        readTextFile(path, buffer);
    }
    return buffer;
}

我想用 c 格式阅读 pdf 文件,但在浏览网络后,我知道直接阅读 pdf 文件太难了,所以我在 linux 中使用 pdftotext 命令行工具将 pdf 转换为 txt 文件。转换 pdf 后,我可以读取 txt 文件。

-> pdftotext shell.pdf henok.txt

在外壳中工作正常,但我想以编程方式运行此命令。

上面的命令显示错误,I/O 错误:无法打开文件"henok.txt":没有这样的文件或目录。

子进程在启动"pdf2text"后结束,而不是在pdf2text完成转换时结束。当父进程检测到子进程的结束时,尚未创建文本文件。为此,子进程应控制"pdf2text"执行的完成。为了更简单,您不需要分叉,只需使用"system"命令即可。例如

// 20 is length of "pdf2text" + length of "henok.txt" + 2 spaces + NULL character
char * cmd = malloc (20 + strlen (path)); 
sprintf(cmd, "pdf2text %s henok.txt", path);
system(cmd);
free(cmd);

相关内容

  • 没有找到相关文章

最新更新