void EditReportView::on_m_PreviewPushButton_clicked()
{
SaveXmlToPDF();
ShowPrintPreviewDialog();
}
void EditReportView::ShowPrintPreviewDialog()
{
QPrinter printer;
QPrintPreviewDialog previewDialog(&printer, this);
connect(&previewDialog, SIGNAL(paintRequested(QPrinter*)), this, SLOT(Preview(QPrinter*)));
QDesktopWidget* desktopWidget = QApplication::desktop();
QRect screenRect = desktopWidget->screenGeometry();
int ActScreenW = screenRect.width();
int ActScreenH = screenRect.height();
previewDialog.setMinimumHeight(ActScreenH);
previewDialog.setMinimumWidth(ActScreenW);
previewDialog.exec(); //列印對話框顯示,paintRequest觸發
}
void EditReportView::Preview(QPrinter* printer)
{
ui.textEdit->print(printer);
}
void EditReportView::SaveXmlToPDF()
{
QString patient_path = DirectoryController::Instance().CreatePatientDirectory(this->m_ReportModel.GetPatientId());
QString case_path = DirectoryController::Instance().CreateCaseDirectory(patient_path, this->m_ReportModel.GetReportId());
QString report_file_name = case_path + "/report.pdf";
printf("report_file_name = %s\n", report_file_name.toLocal8Bit().data());
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss");
QDateTime datatime = QDateTime::fromString(this->m_CaseModel.GetCaseTime(), "yyyyMMddhhmmss");
QLocale locale = QLocale::English;//指定英文顯示
QString case_create_time = locale.toString(datatime, "yyyy-MM-dd hh:mm:ss");
QString patient_info = QString(QStringLiteral("患者ID:%1 患者姓名:%2 治療部位:%3 操作醫生:%4")
.arg(this->m_PatientModel.GetPatientId())
.arg(this->m_PatientModel.GetPatientName())
.arg(this->m_CaseModel.GetTreatLocation())
.arg(this->m_CaseModel.GetPhysicianName()));
QString case_info = QString(QStringLiteral("治療日期:%1")
.arg(case_create_time));
//.arg(this->m_CaseModel.GetPhysicianName()));
QStringList title;
title.push_back(QStringLiteral("記錄ID"));
title.push_back(QStringLiteral("擋位"));
title.push_back(QStringLiteral("類型"));
title.push_back(QStringLiteral("靶點坐标"));
title.push_back(QStringLiteral("測量坐标"));
title.push_back(QStringLiteral("開始時間"));
title.push_back(QStringLiteral("停止時間"));
QString html;
html += "<h1 align=\"center\">" + QStringLiteral("實驗報告") + "</h1>";
html += "<h4 align=\"left\">" + patient_info + "</h4>";
html += "<h4 align=\"left\">" + case_info + "</h4>";
html += "<h6 align=\"center\">" + QStringLiteral("----------------------------------------------------------------------------------------------------") + "</h6>";
html += "<table width=\"630\" 0\" align=\"center\" style=\"border-collapse:collapse\";bordercolor=\"gray\">";
html += "<tr>";
for (int i = 0; i < title.count(); i++)
{
html += QString("<th>%1</th>").arg(title.at(i));
}
html += "</tr>";
html += QString("<tr> </tr>");
vector<RecordModel> record_model;
record_model = GetGlobalRecordController()->SearchRecord("case_id", this->m_CaseModel.GetCaseId(), GetGlobalDatabaseConnectionController()->m_sql_database);
for (int i = 0; i < record_model.size(); i++)
{
html += "<tr align=\"center\"; font=\"15px\">";
QString record_id = QStringLiteral("%1").arg(record_model[i].GetRecordId());
QString gear = QStringLiteral("%1").arg(record_model[i].GetRecordGear());
QString type = QStringLiteral("%1").arg(record_model[i].GetRecordTreatType());
QString measuring_coordinates = QStringLiteral("%1").arg(record_model[i].GetRecordTargetCoordinates());
QString target_coordinates = QStringLiteral("%1").arg(record_model[i].GetRecordMeasuringCoordinates());
QDateTime start = QDateTime::fromString(record_model[i].GetRecordEndTime(), "yyyyMMddhhmmss");
QString start_time = locale.toString(start, "hh:mm:ss");
QString str_start_time = QStringLiteral("%1").arg(start_time);
QDateTime stop = QDateTime::fromString(record_model[i].GetRecordStartTime(), "yyyyMMddhhmmss");
QString end_time = locale.toString(start, "hh:mm:ss");
QString str_end_time = QStringLiteral("%1").arg(end_time);
html += QString("<td align = \"center\">%1</td>").arg(record_id);
html += QString("<td align = \"center\">%1</td>").arg(gear);
html += QString("<td align = \"center\">%1</td>").arg(type);
html += QString("<td align = \"center\">%1</td>").arg(target_coordinates);
html += QString("<td align = \"center\">%1</td>").arg(measuring_coordinates);
html += QString("<td align = \"center\">%1</td>").arg(str_start_time);
html += QString("<td align = \"center\">%1</td>").arg(str_end_time);
html += "</tr>";
}
html += "</table>";
html += "<p align=\"center\">" + QStringLiteral("----------------------------------------------------------------------------------------------------") + "</p>";
html += "<h4 align=\"left\">" + QStringLiteral("病例描述:") + "</h4>";
QString str_description = QStringLiteral(" %1").arg(ui.m_DescriptionTextEdit->toPlainText());
//html += "<p align=\"left\">" + str_description + "</p>";
html += "<p align=\"left\">" + str_description + "</p>";
if (ui.m_DescriptionTextEdit->toPlainText().trimmed() == nullptr)
{
html += "<p><br></p>";
}
html += "<h4 align=\"left\">" + QStringLiteral("<br>診斷資訊:") + "</h4>";
QString str_diagnose = QStringLiteral(" %1").arg(ui.m_DiagnoseInfoTextEdit->toPlainText());
html += "<p align=\"left\">" + str_diagnose + "</p>";
if (ui.m_DiagnoseInfoTextEdit->toPlainText().trimmed() == nullptr)
{
html += "<p><br></p>";
}
html += "<h4 align=\"left\">" + QStringLiteral("<br>治療方案:") + "</h4>";
QString str_treat_programs = QStringLiteral(" %1").arg(ui.m_TreatProgramsTextEdit->toPlainText());
html += "<p align=\"left\">" + str_treat_programs + "</p>";
if (ui.m_TreatProgramsTextEdit->toPlainText().trimmed() == nullptr)
{
html += "<p><br></p>";
}
html += "<h4 align=\"left\">" + QStringLiteral("<br>治療效果:") + "</h4>";
QString str_treat_effect = QStringLiteral(" %1").arg(ui.m_TreatEffectTextEdit->toPlainText());
html += "<p align=\"left\">" + str_treat_effect + "</p>";
if (ui.m_TreatEffectTextEdit->toPlainText().trimmed() == nullptr)
{
html += "<p><br></p>";
}
html += "<p align=\"center\">" + QStringLiteral("<br>----------------------------------------------------------------------------------------------------") + "</p>";
html += "<p align=\"left\">" + QStringLiteral("備注:如對本報告單存在異議,請及時與本實驗室聯系!") + "</p>";
html += "<p align=\"left\">" + QStringLiteral("報告生成時間:%1 醫生簽名:").arg(current_date) + "</p>";
QPrinter printer_html;
printer_html.setPageSize(QPrinter::A4);
printer_html.setOutputFormat(QPrinter::PdfFormat);
printer_html.setOutputFileName(report_file_name);
QTextDocument text_document;
text_document.setHtml(html);
text_document.print(&printer_html);
text_document.end();
ui.textEdit->setText(html);
//QDesktopServices::openUrl(QUrl::fromLocalFile(report_file_name));//顯示PDF檔案
}
#pragma endregion