ImageD  v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
d_pdf_writer.h
Go to the documentation of this file.
1 /************************************
2  * added: 31.08.2020 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_PDF_WRITER_H
10 #define D_PDF_WRITER_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_img_proc.h>
15 #include <d_error_handler.h>
16 
17 //general
18 #include <iostream>
19 #include <vector>
20 
21 //Qt
22 #include <QObject>
23 #include <QImage>
24 #include <QPixmap>
25 #include <QGraphicsScene>
26 #include <QGraphicsView>
27 #include <QString>
28 #include <QDebug>
29 #include <QMessageBox>
30 #include <QFileDialog>
31 #include <QFileInfo>
32 #include <QDir>
33 #include <QElapsedTimer>
34 #include <QScrollBar>
35 #include <QPdfWriter>
36 #include <QPainter>
37 #include <QRect>
38 #include <QDateTime>
39 
40 //openCV
41 #include <opencv2/core/core.hpp>
42 #include <opencv2/highgui/highgui.hpp>
43 #include <opencv2/imgproc/imgproc.hpp>
44 
45 //namespaces
46 using namespace std;
47 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
48 #include <d_opencv_typedefs.h>
49 
54 class D_PDF_Writer : public QPdfWriter
55 {
56 public:
57  D_PDF_Writer(QString QS_Dest);
58  D_PDF_Writer(QFileInfo FI_Dest);
59 
60 private:
61  void init();
62 
63 public slots:
64  int add_Text (QString QS_text, int size = -1, int align = Qt::AlignLeft);
65  int add_Text (QString QS_text, double x1_rel, double x2_rel, double y1_rel, double y2_rel, int size = -1, int align = Qt::AlignLeft);
66 
67  int add_Headline (QString QS_text, int size = -1, int align = Qt::AlignCenter);
68  int add_Header (QString QS_text, int size = -1, int align = Qt::AlignLeft);
69  int add_Header_FileDescription ( int size = -1, int align = Qt::AlignLeft);
70  int add_DateTimeCurrent ( int size = -1, int align = Qt::AlignRight);
71  int add_DateTime (QString QS_text, int size = -1, int align = Qt::AlignRight);
72 
73  int add_Image(QImage *pQI_img, QString QS_text = "", int size = -1, int align = Qt::AlignLeft);
74  int add_Image(QImage *pQI_img, double x1_rel, double x2_rel, double y1_rel, double y2_rel);
75  int add_Image(Mat *pMA_img, double x1_rel, double x2_rel, double y1_rel, double y2_rel);
76 
77  int add_NewLine(int count = 1);
78  int add_NewPage();
79 
80  int save_PDF();
81 
82  void set_Margins(int t, int l, int b, int r);
83 private:
84 
85  QRectF Rect_FromRelCorrd (double x1_rel, double x2_rel, double y1_rel, double y2_rel);
86  QRectF Rect_FromRelCorrd (double x1_rel, double x2_rel, double y1_rel, double y2_rel, QRect R_Source);
87  QRectF Rect_FromRelRect (double x_rel, double y_rel, double width_rel, double height_rel);
88  QRectF Rect_FromRelRect (double x_rel, double y_rel, double width_rel, double height_rel, QRect R_Source);
89  QRectF Rect_FitToAspectRatio(QRectF R_Target, QRectF R_Source);
90  QFileInfo FI_Destination;
91 
92  QPainter PDF_Painter;
93  bool PDF_Painter_is_active = false;
94 
95  QPagedPaintDevice::PageSize PDF_PageSize = QPagedPaintDevice::A4;
96  int PDF_Margin_Top = 15;
97  int PDF_Margin_Left = 15;
98  int PDF_Margin_Bottom = 15;
99  int PDF_Margin_Right = 15;
100 
101  QColor PDF_Color = Qt::black;
102  QString PDF_Font = "Times";
103  int PDF_FontSize_Default = 10;
104  int PDF_FontSize_Text = 10;
105  int PDF_FontSize_Date = 10;
106  int PDF_FontSize_Header = 12;
107  int PDF_FontSize_Headline = 20;
108 };
109 
110 #endif // D_PDF_WRITER_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
D_PDF_Writer::add_Header_FileDescription
int add_Header_FileDescription(int size=-1, int align=Qt::AlignLeft)
Definition: d_pdf_writer.cpp:109
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_PDF_Writer::add_DateTimeCurrent
int add_DateTimeCurrent(int size=-1, int align=Qt::AlignRight)
Definition: d_pdf_writer.cpp:126
ER_size_missmatch
@ ER_size_missmatch
Definition: d_enum.h:141
D_PDF_Writer::add_Text
int add_Text(QString QS_text, int size=-1, int align=Qt::AlignLeft)
Definition: d_pdf_writer.cpp:44
D_PDF_Writer::save_PDF
int save_PDF()
Definition: d_pdf_writer.cpp:280
D_PDF_Writer::add_DateTime
int add_DateTime(QString QS_text, int size=-1, int align=Qt::AlignRight)
Definition: d_pdf_writer.cpp:131
D_PDF_Writer::add_Headline
int add_Headline(QString QS_text, int size=-1, int align=Qt::AlignCenter)
Definition: d_pdf_writer.cpp:81
d_img_proc.h
D_PDF_Writer::add_NewLine
int add_NewLine(int count=1)
Definition: d_pdf_writer.cpp:265
d_pdf_writer.h
D_PDF_Writer::D_PDF_Writer
D_PDF_Writer(QString QS_Dest)
Definition: d_pdf_writer.cpp:11
ER_other
@ ER_other
Definition: d_enum.h:134
D_PDF_Writer::add_Image
int add_Image(QImage *pQI_img, QString QS_text="", int size=-1, int align=Qt::AlignLeft)
Definition: d_pdf_writer.cpp:145
d_opencv_typedefs.h
D_PDF_Writer
The D_PDF_Writer class Create PDFs by calling simple to use methods.
Definition: d_pdf_writer.h:55
D_Img_Proc::Convert_Mat_to_QImage
static int Convert_Mat_to_QImage(QImage *pQI_Out, Mat *pMA_In, bool use_custom_range_for_spread_non_8bit=false, double in_min=0, double in_max=1)
Definition: d_img_proc.cpp:973
d_enum.h
d_error_handler.h
D_PDF_Writer::add_NewPage
int add_NewPage()
Definition: d_pdf_writer.cpp:274
D_PDF_Writer::add_Header
int add_Header(QString QS_text, int size=-1, int align=Qt::AlignLeft)
Definition: d_pdf_writer.cpp:95
D_PDF_Writer::set_Margins
void set_Margins(int t, int l, int b, int r)
Definition: d_pdf_writer.cpp:286
ER_empty
@ ER_empty
Definition: d_enum.h:135