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

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

سوال

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

  • پسندیدن 1

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


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

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
  • تشکر شده 1

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


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

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

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

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

×