رفتن به مطلب
جامعهٔ برنامه‌نویسان ایران
  • 1
Farideh

گزارش گیری به صورت PDF از یک جدول در QML


سوال

سلام،
در qml جدولی دارم که با ارث بری از listView ایجاد شده و علاوه بر اطلاعات اعداد حاوی اطلاعات تصویر هم هست. برای گزارشگیری از این جدول به صورت pdf  باید تصاویر و نوشته‌هایی به عنوان سربرگ اضافه کنم. برای الصاق تصاویر و گزارشگیری از این جدول به صورت pdf چه راهی در qml پیشنهاد می‌کنید؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 1
در 12 ساعت قبل، Farideh گفته است :

سلام،
در qml جدولی دارم که با ارث بری از listView ایجاد شده و علاوه بر اطلاعات اعداد حاوی اطلاعات تصویر هم هست. برای گزارشگیری از این جدول به صورت pdf  باید تصاویر و نوشته‌هایی به عنوان سربرگ اضافه کنم. برای الصاق تصاویر و گزارشگیری از این جدول به صورت pdf چه راهی در qml پیشنهاد می‌کنید؟

شما می‌تونید در کیوت از توابعی مثل drawImage از کلاس QPainter در ++C استفاده کنید و نتیجهٔ اون رو با استفاده از تابع grabToImage در سمت QML بسازید.

قبل از هر چیز ماژول پرینت رو فعال کنید، برای این کار داخل فایل .pro این کد رو اضافه کنید.

QT += printsupport

سپس کلاسی بسازید، مثلاً کلاس PrintAction به صورت زیر:

#ifndef PRINTACTION_H
#define PRINTACTION_H

#include <QObject>
#include <QVariant>

class PrintAction : public QObject
{
  Q_OBJECT

public:
  PrintAction();
  Q_INVOKABLE void print(const QVariant &data);

};

#endif // PRINTACTION_H
#include "printaction.h"
#include <QPrinter>
#include <QPainter>
#include <QPrintDialog>

PrintAction::PrintAction()
{

}

void PrintAction::print(const QVariant &data)

{

  QImage img = qvariant_cast<QImage>(data);
  QPrinter printer;
        QPrintDialog *dlg = new QPrintDialog(&printer,nullptr);
        if(dlg->exec() == QDialog::Accepted) {
                QPainter painter(&printer);
                painter.drawImage(QPoint(0,0),img);
                painter.end();
        }


}

فایل main.cpp به این صورت خواهد بود:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QApplication>
#include <QQmlContext>
#include "printaction.h"
#include <QtPlugin>


int main(int argc, char *argv[])
{
  QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  QApplication app(argc, argv);
  QQmlApplicationEngine engine;

  //Register C++ class for QML
  PrintAction  print;
  engine.rootContext()->setContextProperty("PRINT", &print);
  engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
  if (engine.rootObjects().isEmpty())
    return -1;

  return app.exec();
}

در نهایت فایل QML شما هم باید چیزی مثل این باشه:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property date currentDate: new Date()

RowLayout {

    id:pageHeader

    width: parent.width
    Layout.fillWidth: true

    Label {
        text: "First name: "
    }

    Text {
        text: qsTr("<b>Kambiz</b>")
    }

    Label {
        text: "Last name: "
    }

    Text {
        text: qsTr("<b>Asadzadeh</b>")
    }

    Item { Layout.fillWidth: true; }

    Label {
        text: "Date: "
    }

    Text {
        text: currentDate.toLocaleDateString();
        font.bold: true
    }

}


Button {
    x: 437
    y: 137
    width: 150
    height: 36
    text: qsTr("Print")
    onClicked: {
            var stat = pageHeader.grabToImage(function(result) {
                result.saveToFile("/Users/compez/Desktop/someimage.png");
                PRINT.print(result.image);
            });
            console.log("Success: ", stat);
        }
}

}

موفق باشید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 25 دقیقه قبل، Farideh گفته است :

سلام،
در qml جدولی دارم که با ارث بری از listView ایجاد شده و علاوه بر اطلاعات اعداد حاوی اطلاعات تصویر هم هست. برای گزارشگیری از این جدول به صورت pdf  باید تصاویر و نوشته‌هایی به عنوان سربرگ اضافه کنم. برای الصاق تصاویر و گزارشگیری از این جدول به صورت pdf چه راهی در qml پیشنهاد می‌کنید؟

با سلام بهترین راه استفاده از یک کتابخانه مناسب است! در زیر من سه کتابخانه را معرفی میکنم. اگر موفق به ساخت فایل pdf نشدید در اسرع وقت یک مثال با یکی از این کتابخانه‌ها که کار کرده‌ام می‌زنم.

کتابخانه های کار با اسناد PDF:

  1. HARU
  2. PoDoFo
  3. jagPDF

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...