gpt4 book ai didi

c++ - Qt - pdftocairo pdf 转换过程在应用程序自动启动时不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:42 25 4
gpt4 key购买 nike

我正在 ARM/嵌入式 Linux 平台上运行我的 Qt(4.8、QWS 服务器、QWidget 应用程序)应用程序。在我的应用程序中,我有一个模块/小部件来查看 PDF 文件。

作为较慢的处理器,最好使用 pdftocairo 将 PDF 文件转换为图像文件。该模块还具有从闪存驱动器导入任何 pdf 文件并使用 pdftocairo 将其转换为图像的功能。当我从命令行手动启动应用程序时,整个模块按预期工作。以下是将 pdf 文件以图像形式导入设备的代码:

QString CacheName = PDFList->currentItem()->text(); //name of PDF file without ".pdf"
QString PDFString = "pdftocairo -jpeg -r 200 \"/media/usb/" + CacheName + ".pdf\" \"/opt/.pdf/" + CacheName + "\"";
qDebug() << PDFString;
QProcess PDFCacheprocess;
PDFCacheprocess.startDetached(PDFString); //or PDFCacheprocess.start(PDFString)

该项目的最终目标是让应用程序在设备启动时自动启动。但是,当自动启动应用程序时,导入功能似乎没有任何作用。我对无法识别问题感到难过,因为我没有任何调试输出(正常执行应用程序时我确实有)。

我通常用手动执行应用程序

/opt/[path]/[application name] -qws

当自动启动时,我通过添加 &>/opt/log.txt 将应用程序放入文件 log.txt 中。输出似乎与我使用手动命令运行时的输出相同。这是导入过程中的文件内容(没有报错)。

"pdftocairo -jpeg -r 200 "/media/usb/manual.pdf" "/opt/.pdf/manual"

奇怪的是,所有其他命令(pdftocairo 除外)都在工作。我尝试用 QString PDFString = "/opt/./importPDF.sh" 替换此命令。该脚本正在针对任何命令(如 reboot)执行,但同样,如果它包含 pdftocairo 命令,它将失败。

我还尝试添加一个连接到 QProcess::finished(int) 的槽以显示 QProcess 输出:

connect(&PDFCacheprocess, SIGNAL(finished(int)), this, SLOT(pdfImportStatus(int)));
void UserManual::pdfImportStatus(int)
{
qDebug()<<PDFCacheprocess.errorString()<<'\t'<<PDFCacheprocess.exitCode();
}

对于手动执行(导入有效时),我会得到:

"pdftocairo -jpeg -r 200 "/media/usb/manual.pdf" "/opt/.pdf/manual""
"Unknown error" 0

对于自动启动,log.txt 只显示这个(好像插槽没有被触发?) "pdftocairo -jpeg -r 200 "/media/usb/manual.pdf""/opt/.pdf/manual""

感谢任何帮助。提前致谢:)

最佳答案

显然问题是命令在工作目录中没有被识别(仅当由于某种原因自动启动时)。使用 Qprocess 时,事实证明,即使文件/命令存在于环境变量中,给出路径总是好的 - 正如我的情况($PATH).

我必须将 QString 替换为:

QString PDFString = "/usr/local/bin//pdftocairo -jpeg -r 200 \"/media/usb/" + CacheName + ".pdf\" \"/opt/.pdf/" + CacheName + "\"";

关于c++ - Qt - pdftocairo pdf 转换过程在应用程序自动启动时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com