diff --git a/Pdf4QtLib/sources/pdfpagecontenteditortools.cpp b/Pdf4QtLib/sources/pdfpagecontenteditortools.cpp index 0ba7779..232ffde 100644 --- a/Pdf4QtLib/sources/pdfpagecontenteditortools.cpp +++ b/Pdf4QtLib/sources/pdfpagecontenteditortools.cpp @@ -953,7 +953,15 @@ void PDFCreatePCElementTextTool::setAlignment(Qt::Alignment alignment) void PDFCreatePCElementTextTool::setPen(const QPen& pen) { BaseClass::setPen(pen); - m_textEditWidget->setAppearance(m_element->getFont(), m_element->getAlignment(), m_element->getRectangle(), std::numeric_limits::max(), pen.color()); + + QFont font = m_element->getFont(); + font.setHintingPreference(QFont::PreferNoHinting); + if (font.pointSizeF() > 0.0) + { + font.setPixelSize(qRound(font.pointSizeF())); + } + + m_textEditWidget->setAppearance(font, m_element->getAlignment(), m_element->getRectangle(), std::numeric_limits::max(), pen.color()); emit getProxy()->repaintNeeded(); } diff --git a/Pdf4QtLib/sources/pdfpagecontentelements.cpp b/Pdf4QtLib/sources/pdfpagecontentelements.cpp index 2a183a8..41023d1 100644 --- a/Pdf4QtLib/sources/pdfpagecontentelements.cpp +++ b/Pdf4QtLib/sources/pdfpagecontentelements.cpp @@ -638,6 +638,24 @@ int PDFPageContentScene::getInputPriority() const return ToolPriority + 1; } +void PDFPageContentScene::drawElements(QPainter* painter, + PDFInteger pageIndex, + PDFTextLayoutGetter& layoutGetter, + const QMatrix& pagePointToDevicePointMatrix, + const PDFPrecompiledPage* compiledPage, + QList& errors) const +{ + for (const auto& element : m_elements) + { + if (element->getPageIndex() != pageIndex) + { + continue; + } + + element->drawPage(painter, pageIndex, compiledPage, layoutGetter, pagePointToDevicePointMatrix, errors); + } +} + void PDFPageContentScene::drawPage(QPainter* painter, PDFInteger pageIndex, const PDFPrecompiledPage* compiledPage, @@ -650,16 +668,7 @@ void PDFPageContentScene::drawPage(QPainter* painter, return; } - for (const auto& element : m_elements) - { - if (element->getPageIndex() != pageIndex) - { - continue; - } - - element->drawPage(painter, pageIndex, compiledPage, layoutGetter, pagePointToDevicePointMatrix, errors); - } - + drawElements(painter, pageIndex, layoutGetter, pagePointToDevicePointMatrix, compiledPage, errors); m_manipulator.drawPage(painter, pageIndex, compiledPage, layoutGetter, pagePointToDevicePointMatrix, errors); } @@ -2367,7 +2376,7 @@ void PDFPageContentElementTextBox::drawPage(QPainter* painter, font.setHintingPreference(QFont::PreferNoHinting); if (font.pointSizeF() > 0.0) { - font.setPixelSize(qCeil(font.pointSizeF())); + font.setPixelSize(qRound(font.pointSizeF())); } PDFPainterStateGuard guard(painter); diff --git a/Pdf4QtLib/sources/pdfpagecontentelements.h b/Pdf4QtLib/sources/pdfpagecontentelements.h index 13cb9fd..7785417 100644 --- a/Pdf4QtLib/sources/pdfpagecontentelements.h +++ b/Pdf4QtLib/sources/pdfpagecontentelements.h @@ -534,17 +534,23 @@ public: virtual const std::optional& getCursor() const override; virtual int getInputPriority() const override; - // IDocumentDrawInterface interface -public: virtual void drawPage(QPainter* painter, PDFInteger pageIndex, const PDFPrecompiledPage* compiledPage, PDFTextLayoutGetter& layoutGetter, const QMatrix& pagePointToDevicePointMatrix, QList& errors) const override; + PDFWidget* widget() const; void setWidget(PDFWidget* newWidget); + void drawElements(QPainter* painter, + PDFInteger pageIndex, + PDFTextLayoutGetter& layoutGetter, + const QMatrix& pagePointToDevicePointMatrix, + const PDFPrecompiledPage* compiledPage, + QList& errors) const; + signals: /// This signal is emitted when scene has changed (including graphics) void sceneChanged(bool graphicsOnly); diff --git a/Pdf4QtViewerPlugins/SignaturePlugin/signatureplugin.cpp b/Pdf4QtViewerPlugins/SignaturePlugin/signatureplugin.cpp index ce15a1b..9cb4f6f 100644 --- a/Pdf4QtViewerPlugins/SignaturePlugin/signatureplugin.cpp +++ b/Pdf4QtViewerPlugins/SignaturePlugin/signatureplugin.cpp @@ -290,7 +290,7 @@ void SignaturePlugin::onSignElectronically() QPainter* painter = pageContentStreamBuilder.begin(page->getPageReference()); QList errors; pdf::PDFTextLayoutGetter nullGetter(nullptr, pageIndex); - m_scene.drawPage(painter, pageIndex, nullptr, nullGetter, QMatrix(), errors); + m_scene.drawElements(painter, pageIndex, nullGetter, QMatrix(), nullptr, errors); pageContentStreamBuilder.end(painter); modifier.markPageContentsChanged(); }