运行 pdftotext x.pdf y.txt 在 linux 中编程?
Running pdftotext x.pdf y.txt programatically in linux?
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
在 shell 中工作正常,但我想以编程方式 运行 此命令。
以上命令显示错误,I/O错误:无法打开文件'henok.txt':没有那个文件或目录。
子进程在启动 'pdf2text' 之后结束,而不是在 pdf2text 完成转换时结束。当父进程检测到子进程结束时,文本文件还没有创建。为此,子进程应控制 'pdf2text' 执行的完成。为了更简单,不需要fork,直接使用'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);
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
在 shell 中工作正常,但我想以编程方式 运行 此命令。
以上命令显示错误,I/O错误:无法打开文件'henok.txt':没有那个文件或目录。
子进程在启动 'pdf2text' 之后结束,而不是在 pdf2text 完成转换时结束。当父进程检测到子进程结束时,文本文件还没有创建。为此,子进程应控制 'pdf2text' 执行的完成。为了更简单,不需要fork,直接使用'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);