亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt數據庫應用之怎么實現圖片轉pdf

發布時間:2022-06-01 11:09:55 來源:億速云 閱讀:195 作者:zzz 欄目:開發技術

本篇內容介紹了“Qt數據庫應用之怎么實現圖片轉pdf”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

效果圖

Qt數據庫應用之怎么實現圖片轉pdf

五、相關代碼

void DataOther::toPdf(const QPixmap &pixmap, const QString &fileName, int scale)
{
    QPrinter printer(QPrinter::HighResolution);
    if (scale > 1) {
        printer.setResolution(96);
    }
    printer.setFullPage(false);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName(fileName);
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
    printer.setPageSize(QPageSize(QPageSize::A4));
    printer.setPageOrientation(QPageLayout::Portrait);
#else
    printer.setPaperSize(QPrinter::A4);
    printer.setOrientation(QPrinter::Portrait);
#endif

    //調整圖片大小比如等比例縮放拉伸填充等
    QRectF rect = printer.pageRect(QPrinter::DevicePixel);
    QPixmap pix = pixmap;

    //保存原圖看下效果
#if 0
    QString file = fileName;
    file.replace("pdf", "png");
    pix.save(file, "png");
#endif

    if (scale == 0) {
        //pix = pix.scaled(rect.width(), rect.height(), Qt::KeepAspectRatio, Qt::FastTransformation);
        pix = pix.scaled(rect.width(), rect.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
    } else if (scale == 1) {
        pix = pix.scaled(rect.width(), rect.height());
    }

    QPainter painter;
    painter.begin(&printer);

    int x = 0;
    int y = 0;
    //圖片寬度小于繪制區域寬度沒有縮放處理過的圖片 才需要按照比例自動居中繪制
    if (pixmap.width() < rect.width() && scale > 1) {
        x = rect.center().x() - pix.width() / 2;
        //y = rect.center().y() - pix.height() / 2;
    }

    painter.drawPixmap(QPoint(x, y), pix);
    painter.end();
}

void DataOther::widgetToPdf(QWidget *widget, const QString &fileName, int scale)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
    QPixmap pixmap = QApplication::primaryScreen()->grabWindow(widget->winId());
#else
    QPixmap pixmap = QPixmap::grabWindow(widget->winId());
#endif
    toPdf(pixmap, fileName, scale);
}

QString DataOther::imageToPdf(const QString &imageFile, const QString &pdfFile, int scale)
{
    //為空則同名文件
    QString fileName = pdfFile;
    if (fileName.isEmpty()) {
        fileName = imageFile;
        fileName.replace("." + QFileInfo(imageFile).suffix(), ".pdf");
    }

    //資源文件則當前目錄下
    if (imageFile.startsWith(":/")) {
        fileName = qApp->applicationDirPath() + "/" + QFileInfo(imageFile).baseName() + ".pdf";
    }

    toPdf(QPixmap(imageFile), fileName, scale);
    return fileName;
}

“Qt數據庫應用之怎么實現圖片轉pdf”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延吉市| 大同市| 恩平市| 涞水县| 浦城县| 三门县| 滁州市| 克什克腾旗| 乾安县| 榆树市| 临潭县| 遂宁市| 鄱阳县| 隆子县| 胶南市| 永胜县| 芷江| 当涂县| 布尔津县| 昌吉市| 抚远县| 从化市| 子洲县| 怀来县| 淮北市| 巨野县| 平远县| 大新县| 南江县| 漾濞| 当雄县| 镶黄旗| 延吉市| 上思县| 兴宁市| 黑龙江省| 平和县| 昌江| 荆州市| 永年县| 盐源县|