发布的应用程序与原始应用程序不一样
Released app does not work as the original
我有一个文件,里面有成百上千的图片(照片),我需要向一些人预览。这个预览应该是一个采购订单(很快,没有"专业"),我会给他们,这样人们就可以在他们想要照片和尺寸的情况下打个叉(就这么简单)。
我试着自动生成采购订单,PDF上每页(A4)会有两个。
我使用Qt/C++和三个对象:
QPdfWriter
Q油漆工
QImage
这是pdf生成类的开始:
int order = 1;
qDebug() << "pdf creation";
QString logoName = QFileDialog::getOpenFileName(0, "Sélectionner le logo", QString(), "Images (*.png *.bmp *.jpg)");
QString fileName = QFileDialog::getSaveFileName(0, "Export PDF",
QString(), "*.pdf");
QString dir = QFileDialog::getExistingDirectory(0, "Sélectionner le dossier de photos");
QFont titleFont("Arial", 24);
titleFont.setUnderline(true);
QFont textFont("Times new roman", 12);
QDirIterator it(dir);
if (!fileName.isEmpty()) {
if (QFileInfo(fileName).suffix().isEmpty())
fileName.append(".pdf");
QPdfWriter writer(fileName);
QPainter painter(&writer);
painter.setRenderHint(QPainter::Antialiasing);
int height = painter.device()->height();
int semi = height/2;
int width = painter.device()->width();
int digits = 1;
qDebug() << "height : " << height << " width : " << width;
QImage logo(logoName);
QImage finalLogo = logo.scaled(3750, 1250, Qt::KeepAspectRatio);
while(it.hasNext()){
it.next();
digits = countDigits(order);
if(it.fileInfo().isFile()){
if(order%2!=0){
painter.drawImage(300,100,finalLogo);
QImage currentPreview(it.filePath());
QImage finalPreview = currentPreview.scaled(3250,4000, Qt::KeepAspectRatio);
painter.drawImage(650,1500,finalPreview);
剩下的只是文本/边框的绘制。
我在调试中尝试过:效果很好我在发行版中进行了编译,将所有.dll都放在文件中(包括平台),并在没有Qt的情况下运行:运行良好
然后我把文件放在U盘上,我把它放在我用来拍照的另一台电脑上,那台电脑没有Qt。我启动了.exe,应用程序显示与我的开发pc 完全相同
但当我调用PDF创建时,我用我的数据填充了FileDialogs,它运行大约30秒(文件中有很多图片)并生成PDF。
我打开它。。。PDF上没有一张图片。
所有的行和文本都到位了,没有任何问题,它生成了正确数量的采购订单,但上面没有一张图片。。。标志CCD_ 1和预览CCD_。
这就像QPainter::drawText()/drawLine()
确实有效,但QPainter::drawImage
不起作用。
这很令人不安,因为它在电脑上工作,但在另一台电脑上不工作。。。编译/发布时我做错了什么吗?
(在评论中回答-转换为社区wiki。)
OP写道:
好的!我想明白了。处理jpeg的dll不在正确的目录中,我把它移到了正确的目录,它就工作了。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何模拟原始输入/以正确的方式向应用程序发送WM_INPUT消息
- 发布的应用程序与原始应用程序不一样
- 从Qt应用程序获取原始数据包数据
- 用原始c++编写qt应用程序(不是qml)