0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-23 16:22:58 +03:00
LimeReport/console/main.cpp

94 lines
2.9 KiB
C++
Raw Permalink Normal View History

#include "../limereport/version.h"
#include <QApplication>
#include <QCommandLineParser>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QUuid>
#include <LimeReport>
#include <iostream>
#ifdef _WIN32
#include <fcntl.h>
#include <io.h>
#endif
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
QApplication::setApplicationVersion(LIMEREPORT_VERSION_STR);
QStringList vars;
2021-08-24 10:22:30 +03:00
#if QT_VERSION > 0x050200
QCommandLineParser parser;
parser.addHelpOption();
parser.addVersionOption();
QCommandLineOption sourceOption(
QStringList() << "s"
<< "source",
QCoreApplication::translate("main", "Limereport pattern file name"),
QCoreApplication::translate("main", "source"));
parser.addOption(sourceOption);
QCommandLineOption destinationOption(QStringList() << "d"
<< "destination",
QCoreApplication::translate("main", "Output file name"),
QCoreApplication::translate("main", "destination"));
parser.addOption(destinationOption);
QCommandLineOption variablesOption(
QStringList() << "p"
<< "param",
QCoreApplication::translate("main", "Report parameter (can be more than one)"),
QCoreApplication::translate("main", "param_name=param_value"));
parser.addOption(variablesOption);
parser.process(a);
LimeReport::ReportEngine report;
if (parser.value(sourceOption).isEmpty()) {
std::cerr << "Error! Report file is not specified !! \n";
return 1;
}
if (!report.loadFromFile(parser.value(sourceOption))) {
std::cerr << "Error! Report file \"" + parser.value(sourceOption).toStdString()
+ "\" not found \n";
return 1;
}
if (!parser.values(variablesOption).isEmpty()) {
foreach (QString var, parser.values(variablesOption)) {
QStringList varItem = var.split("=");
if (varItem.size() == 2)
report.dataManager()->setReportVariable(varItem.at(0), varItem.at(1));
}
}
if (parser.value(destinationOption).isEmpty()) {
report.printToPDF(QFileInfo(parser.value(sourceOption)).baseName());
} else {
report.printToPDF(parser.value(destinationOption));
}
#else
std::cerr << "This demo intended for Qt 5.2 and higher\n";
#endif
// QUuid uid = QUuid::createUuid();
// QString uidStr = uid.toString()+".pdf";
// report.printToPDF(uidStr);
// QFile in(uidStr);
// QFile out;
// out.open(stdout, QFile::WriteOnly);
// in.open(QIODevice::ReadOnly);
//#ifdef _WIN32
// _setmode(fileno(stdout),O_BINARY);
//#endif
// QByteArray buffer = in.readAll();
// fwrite(buffer,1,buffer.size(),stdout);
// in.close();
// in.remove();
return 0;
// return a.exec();
}