@@ -75,10 +75,16 @@ class HOCRPdfExporter::QPainterPDFPainter : public HOCRPdfExporter::PDFPainter {
75
75
m_curFont.setItalic (italic);
76
76
m_painter->setFont (m_curFont);
77
77
}
78
- void setFontSize (double pointSize) override {
79
- if (pointSize != m_curFont.pointSize ()) {
80
- m_curFont.setPointSize (pointSize);
81
- m_painter->setFont (m_curFont);
78
+ void setFontSize (double pointSize, bool defaultFont = false ) override {
79
+ if (defaultFont) {
80
+ if (pointSize != m_defaultFont.pointSize ()) {
81
+ m_defaultFont.setPointSize (pointSize);
82
+ }
83
+ } else {
84
+ if (pointSize != m_curFont.pointSize ()) {
85
+ m_curFont.setPointSize (pointSize);
86
+ m_painter->setFont (m_curFont);
87
+ }
82
88
}
83
89
}
84
90
void drawText (double x, double y, const QString& text) override {
@@ -232,8 +238,12 @@ class HOCRPdfExporter::PoDoFoPDFPainter : public HOCRPdfExporter::PDFPainter {
232
238
m_painter.SetFont (getFont (family, bold, italic));
233
239
m_painter.GetFont ()->SetFontSize (curSize);
234
240
}
235
- void setFontSize (double pointSize) override {
236
- m_painter.GetFont ()->SetFontSize (pointSize);
241
+ void setFontSize (double pointSize, bool defaultFont = false ) override {
242
+ if (defaultFont) {
243
+ m_defaultFontSize = pointSize;
244
+ } else {
245
+ m_painter.GetFont ()->SetFontSize (pointSize);
246
+ }
237
247
}
238
248
void drawText (double x, double y, const QString& text) override {
239
249
PoDoFo::PdfString pdfString (reinterpret_cast <const PoDoFo::pdf_utf8*>(text.toUtf8 ().data ()));
@@ -512,7 +522,6 @@ bool HOCRPdfExporter::run(QString& filebasename) {
512
522
}
513
523
break ;
514
524
}
515
-
516
525
MAIN->getDisplayer ()->scene ()->removeItem (m_preview);
517
526
delete m_preview;
518
527
m_preview = nullptr ;
@@ -560,7 +569,15 @@ bool HOCRPdfExporter::run(QString& filebasename) {
560
569
// [pt] = 72 * [in]
561
570
// [in] = 1 / dpi * [px]
562
571
// => [pt] = 72 / dpi * [px]
563
- double px2pt = (72.0 / sourceDpi);
572
+ double sourceSizeToOutSize;
573
+ if ( paperSize == " source" ) {
574
+ sourceSizeToOutSize = 1 ;
575
+ } else {
576
+ sourceSizeToOutSize = pageWidth / (72.0 / sourceDpi * bbox.width ());
577
+ }
578
+ painter->setFontSize (ui.spinBoxFontSize ->value () * sourceSizeToOutSize, true );
579
+ double px2pt = (72.0 / sourceDpi) * sourceSizeToOutSize;
580
+ pdfSettings.detectedFontScaling *= sourceSizeToOutSize;
564
581
double imgScale = double (outputDpi) / sourceDpi;
565
582
if (paperSize == " source" ) {
566
583
pageWidth = bbox.width () * px2pt;
0 commit comments