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

Posted

技术标签:

【中文标题】Qt - pdftocairo pdf转换过程在应用程序自动启动时不起作用【英文标题】:Qt - pdftocairo pdf conversion process not working when application on auto start 【发布时间】:2018-01-25 17:37:30 【问题描述】:

我在 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

自动启动时,我通过添加&amp;&gt;/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""

感谢任何帮助。在此先感谢:)

【问题讨论】:

【参考方案1】:

显然问题是在工作目录中无法识别该命令(仅在出于某种原因自动启动时)。当使用Qprocess 时,即使文件/命令存在于环境变量中,给出路径总是好的——就像我的情况($PATH)。

我不得不将QString 替换为:

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

【讨论】:

以上是关于Qt - pdftocairo pdf转换过程在应用程序自动启动时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 QT 中,如何将带有内部调用的 javascript 的 html 转换为 pdf 文件

如何将pdf转换成excel,详细过程怎么样

html的页面怎么转换成pdf

html的页面怎么转换成pdf

动态获取SVN版本号(Qt)

关于PDF转换成WORD的问题~~提示字体错误