From b06d4de191d65fe2b1fd4fff1fa0bdffd2d41ca7 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Tue, 23 Aug 2022 12:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=B1=8F=E8=94=BDpdf?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?pdf=E5=9B=BE=E5=83=8F=E5=AE=BD=E9=AB=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scanner/dialog_fullscreen.cpp | 34 ++++++++-------- app/scanner/mainwindow.cpp | 68 +++++++++++++++++++++---------- 2 files changed, 63 insertions(+), 39 deletions(-) diff --git a/app/scanner/dialog_fullscreen.cpp b/app/scanner/dialog_fullscreen.cpp index bd8d7013..7d153764 100644 --- a/app/scanner/dialog_fullscreen.cpp +++ b/app/scanner/dialog_fullscreen.cpp @@ -71,23 +71,23 @@ void Dialog_FullScreen::showImage() HGImage img = nullptr; -// HGPdfReader pdfReader = nullptr; -// HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader); -// if (nullptr != pdfReader) -// { -// HGPdfPageInfo pageInfo = {0, 0}; -// if (HGBASE_ERR_OK == HGImgFmt_GetPdfPageInfo(pdfReader, (HGUInt)m_multiIndex, &pageInfo)) -// { -// float scale = 1.0f; -// if (pageInfo.width < 1600) -// scale = 1600.0f / pageInfo.width; -// HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img); -// } + HGPdfReader pdfReader = nullptr; + HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader); + if (nullptr != pdfReader) + { + HGPdfPageInfo pageInfo = {0, 0}; + if (HGBASE_ERR_OK == HGImgFmt_GetPdfPageInfo(pdfReader, (HGUInt)m_multiIndex, &pageInfo)) + { + float scale = 1.0f; + if (pageInfo.width < 1600) + scale = 1600.0f / pageInfo.width; + HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img); + } -// HGImgFmt_ClosePdfReader(pdfReader); -// } -// else -// { + HGImgFmt_ClosePdfReader(pdfReader); + } + else + { HGImgFmtReader imgFmtReader = nullptr; HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); if (nullptr != imgFmtReader) @@ -95,7 +95,7 @@ void Dialog_FullScreen::showImage() HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_CloseImageReader(imgFmtReader); } -// } + } if (nullptr != img) { diff --git a/app/scanner/mainwindow.cpp b/app/scanner/mainwindow.cpp index 5f9a09e7..561556ab 100644 --- a/app/scanner/mainwindow.cpp +++ b/app/scanner/mainwindow.cpp @@ -1342,24 +1342,24 @@ HGImage MainWindow::createImage() HGImage img = nullptr; -// HGPdfReader pdfReader = nullptr; -// HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader); -// if (nullptr != pdfReader) -// { -// HGPdfPageInfo pageInfo = {0, 0}; -// if (HGBASE_ERR_OK == HGImgFmt_GetPdfPageInfo(pdfReader, (HGUInt)m_multiIndex, &pageInfo)) -// { -// float scale = 1.0f; -// if (pageInfo.width < 1600) -// scale = 1600.0f / pageInfo.width; + HGPdfReader pdfReader = nullptr; + HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader); + if (nullptr != pdfReader) + { + HGPdfPageInfo pageInfo = {0, 0}; + if (HGBASE_ERR_OK == HGImgFmt_GetPdfPageInfo(pdfReader, (HGUInt)m_multiIndex, &pageInfo)) + { + float scale = 1.0f; + if (pageInfo.width < 1600) + scale = 1600.0f / pageInfo.width; -// HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img); -// } + HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img); + } -// HGImgFmt_ClosePdfReader(pdfReader); -// } -// else -// { + HGImgFmt_ClosePdfReader(pdfReader); + } + else + { HGImgFmtReader imgFmtReader = nullptr; HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); if (nullptr != imgFmtReader) @@ -1367,7 +1367,7 @@ HGImage MainWindow::createImage() HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_CloseImageReader(imgFmtReader); } -// } + } return img; } @@ -2166,12 +2166,36 @@ void MainWindow::on_act_imageInfo_triggered() HGImgFmtLoadInfo imgInfo; memset(&imgInfo, 0, sizeof(HGImgFmtLoadInfo)); - HGImgFmtReader imgFmtReader = nullptr; - HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); - if (nullptr != imgFmtReader) + HGPdfReader pdfReader = nullptr; + HGImgFmt_OpenPdfReader(m_currFilePath.toStdString().c_str(), &pdfReader); + if (nullptr != pdfReader) { - HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, &imgInfo, 0, 0, nullptr); - HGImgFmt_CloseImageReader(imgFmtReader); + HGPdfPageInfo pageInfo = {0, 0}; + HGImgFmt_GetPdfPageInfo(pdfReader, 0, &pageInfo); + + HGUInt width = pageInfo.width; + HGUInt height = pageInfo.height; + + if (width < 1600) + { + width = 1600; + height = pageInfo.height * width / pageInfo.width; + } + + imgInfo.width = width; + imgInfo.height = height; + + HGImgFmt_ClosePdfReader(pdfReader); + } + else + { + HGImgFmtReader imgFmtReader = nullptr; + HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); + if (nullptr != imgFmtReader) + { + HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, &imgInfo, 0, 0, nullptr); + HGImgFmt_CloseImageReader(imgFmtReader); + } } QStringList fileKeys;