From 0cae635751726372799d58b6871a207c942fdd92 Mon Sep 17 00:00:00 2001 From: re2zero Date: Tue, 20 Jan 2026 15:39:16 +0800 Subject: [PATCH 1/2] chore: remove debug logging statements from ui components remove excessive qCDebug/qCInfo calls in CentralDocPage, DocSheet and AttrScrollWidget that were likely used for debugging purposes but are not needed in production code --- reader/uiframe/CentralDocPage.cpp | 2 +- reader/uiframe/DocSheet.cpp | 2 +- reader/widgets/AttrScrollWidget.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reader/uiframe/CentralDocPage.cpp b/reader/uiframe/CentralDocPage.cpp index 503d14b5..21f763f5 100644 --- a/reader/uiframe/CentralDocPage.cpp +++ b/reader/uiframe/CentralDocPage.cpp @@ -820,7 +820,7 @@ void CentralDocPage::prepareSearch() bool CentralDocPage::isFullScreen() { - qCInfo(appLog) << "isFullScreen"; + // qCInfo(appLog) << "isFullScreen"; MainWindow *mainWindow = dynamic_cast(parentWidget()->parentWidget()->parentWidget()); if (nullptr == mainWindow) diff --git a/reader/uiframe/DocSheet.cpp b/reader/uiframe/DocSheet.cpp index 765f29fe..192befc1 100644 --- a/reader/uiframe/DocSheet.cpp +++ b/reader/uiframe/DocSheet.cpp @@ -1275,7 +1275,7 @@ void DocSheet::onOpened(deepin_reader::Document::Error error) bool DocSheet::isFullScreen() { - qCDebug(appLog) << "isFullScreen"; + // qCDebug(appLog) << "isFullScreen"; CentralDocPage *doc = static_cast(parent()); if (nullptr == doc) diff --git a/reader/widgets/AttrScrollWidget.cpp b/reader/widgets/AttrScrollWidget.cpp index c227d2af..9c11cf1e 100644 --- a/reader/widgets/AttrScrollWidget.cpp +++ b/reader/widgets/AttrScrollWidget.cpp @@ -126,7 +126,7 @@ void AttrScrollWidget::createLabel(QGridLayout *layout, const int &index, const bool AttrScrollWidget::eventFilter(QObject *object, QEvent *event) { - qCDebug(appLog) << "Event filter triggered, type:" << event->type(); + // qCDebug(appLog) << "Event filter triggered, type:" << event->type(); if (object == this) { if (event->type() == QEvent::Resize) { QLocale locale; @@ -147,6 +147,6 @@ bool AttrScrollWidget::eventFilter(QObject *object, QEvent *event) } } bool result = DFrame::eventFilter(object, event); - qCDebug(appLog) << "Event filter processed, result:" << result; + // qCDebug(appLog) << "Event filter processed, result:" << result; return result; } From 3098aa73759d7fc3007a6e0b4d5d894d4488f3b4 Mon Sep 17 00:00:00 2001 From: re2zero Date: Wed, 21 Jan 2026 11:41:32 +0800 Subject: [PATCH 2/2] fix(print): use pdftocairo to convert linearized PDF for printing Replace custom Document API approach with pdftocairo process for better print quality and to resolve character encoding issues. The new method converts Linearized PDFs to embedded vector PDF format before printing. Log: fix pdf printing issue. Bug: https://pms.uniontech.com/bug-view-348017.html --- reader/uiframe/DocSheet.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/reader/uiframe/DocSheet.cpp b/reader/uiframe/DocSheet.cpp index 192befc1..23990b88 100644 --- a/reader/uiframe/DocSheet.cpp +++ b/reader/uiframe/DocSheet.cpp @@ -1684,23 +1684,17 @@ void DocSheet::onPopPrintDialog() //pdf若是Linearized类型的,需要另存为Normal类型,然后打印 if (Dr::PDF == fileType()) { - deepin_reader::Document *document = nullptr; - deepin_reader::Document::Error error = deepin_reader::Document ::NoError; - document = DocumentFactory::getDocument(m_fileType, - m_filePath, - convertedFileDir(), - m_password, nullptr, error); - QString pdfPath = filePath(); - qCInfo(appLog) << pdfPath << "isLinearized:" << document->properties().value("Linearized").toBool(); - if (document->properties().value("Linearized").toBool()) { - pdfPath = QTemporaryDir("LinearizedConverted.pdf").path(); - if (!m_renderer->saveAs(pdfPath)) { - qCInfo(appLog) << "saveAs failed when print Linearized pdf"; - return; - } + // 使用 pdftocairo 转换为嵌入矢量pdf,解决打印乱码和模糊问题 + QString tmpPdfPath = convertedFileDir() + "/pdftocairoPrint.pdf"; + QProcess process; + process.start("pdftocairo", QStringList() << "-pdf" << pdfPath << tmpPdfPath); + process.waitForFinished(); + if (process.exitCode() != 0) { + qCWarning(appLog) << "pdftocairo failed:" << process.readAllStandardError(); + return; } - preview->setPrintFromPath(pdfPath); + preview->setPrintFromPath(tmpPdfPath); } connect(preview, QOverload &>::of(&DPrintPreviewDialog::paintRequested), this, QOverload &>::of(&DocSheet::onPrintRequested)); #else