From 7a0ff459f34e8d6c17b2fc5732c1b6be183d3e4e Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 16 Aug 2022 14:41:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96pdf=E5=92=8Cofd=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=9B=BE=E5=83=8Fwidth=E5=92=8Cheight?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/imgfmt/HGImgFmt.cpp | 28 ++++++++++++++++------------ modules/imgfmt/HGOfd.cpp | 9 +++++++-- modules/imgfmt/HGOfd.h | 2 +- modules/imgfmt/HGPdf.cpp | 9 +++++++-- modules/imgfmt/HGPdf.h | 2 +- 5 files changed, 32 insertions(+), 18 deletions(-) diff --git a/modules/imgfmt/HGImgFmt.cpp b/modules/imgfmt/HGImgFmt.cpp index d83092fd..19228f7f 100644 --- a/modules/imgfmt/HGImgFmt.cpp +++ b/modules/imgfmt/HGImgFmt.cpp @@ -335,7 +335,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF } else if (HGIMGFMT_TYPE_PDF == fmtType) { - HGResult ret = HGImgFmt_LoadPdfImage(fileName, imgType, imgOrigin, image); + HGPdfPageInfo pdfInfo; + HGResult ret = HGImgFmt_LoadPdfImage(fileName, &pdfInfo, imgType, imgOrigin, image); if (HGBASE_ERR_OK != ret) { return ret; @@ -343,8 +344,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF if (NULL != info) { - info->width = 0; - info->height = 0; + info->width = pdfInfo.width; + info->height = pdfInfo.height; info->bpp = 0; info->xDpi = 0; info->yDpi = 0; @@ -354,7 +355,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF } else if (HGIMGFMT_TYPE_OFD == fmtType) { - HGResult ret = HGImgFmt_LoadOfdImage(fileName, imgType, imgOrigin, image); + HGOfdPageInfo ofdInfo; + HGResult ret = HGImgFmt_LoadOfdImage(fileName, &ofdInfo, imgType, imgOrigin, image); if (HGBASE_ERR_OK != ret) { return ret; @@ -362,8 +364,8 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF if (NULL != info) { - info->width = 0; - info->height = 0; + info->width = ofdInfo.width; + info->height = ofdInfo.height; info->bpp = 0; info->xDpi = 0; info->yDpi = 0; @@ -479,12 +481,13 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF return HGBASE_ERR_OK; } - if (HGBASE_ERR_OK == HGImgFmt_LoadPdfImage(fileName, imgType, imgOrigin, image)) + HGPdfPageInfo pdfInfo; + if (HGBASE_ERR_OK == HGImgFmt_LoadPdfImage(fileName, &pdfInfo, imgType, imgOrigin, image)) { if (NULL != info) { - info->width = 0; - info->height = 0; + info->width = pdfInfo.width; + info->height = pdfInfo.height; info->bpp = 0; info->xDpi = 0; info->yDpi = 0; @@ -493,12 +496,13 @@ HGResult HGAPI HGImgFmt_LoadImage(const HGChar* fileName, HGUInt fmtType, HGImgF return HGBASE_ERR_OK; } - if (HGBASE_ERR_OK == HGImgFmt_LoadOfdImage(fileName, imgType, imgOrigin, image)) + HGOfdPageInfo ofdInfo; + if (HGBASE_ERR_OK == HGImgFmt_LoadOfdImage(fileName, &ofdInfo, imgType, imgOrigin, image)) { if (NULL != info) { - info->width = 0; - info->height = 0; + info->width = ofdInfo.width; + info->height = ofdInfo.height; info->bpp = 0; info->xDpi = 0; info->yDpi = 0; diff --git a/modules/imgfmt/HGOfd.cpp b/modules/imgfmt/HGOfd.cpp index 0de5895b..ee05d11c 100644 --- a/modules/imgfmt/HGOfd.cpp +++ b/modules/imgfmt/HGOfd.cpp @@ -90,7 +90,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromOfdReader(HGOfdReader reader, HGUInt page, return ofdReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, image); } -HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGUInt imgType, HGUInt imgOrigin, HGImage* image) +HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGOfdPageInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image) { HGOfdReader reader = NULL; HGResult ret = HGImgFmt_OpenOfdReader(fileName, &reader); @@ -99,7 +99,12 @@ HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGUInt imgType, HGU return ret; } - ret = HGImgFmt_LoadImageFromOfdReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image); + if (HGBASE_ERR_OK == ret && NULL != info) + ret = HGImgFmt_GetOfdPageInfo(reader, 0, info); + + if (HGBASE_ERR_OK == ret && NULL != image) + ret = HGImgFmt_LoadImageFromOfdReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image); + HGImgFmt_CloseOfdReader(reader); return ret; } diff --git a/modules/imgfmt/HGOfd.h b/modules/imgfmt/HGOfd.h index 841c312b..db872aa8 100644 --- a/modules/imgfmt/HGOfd.h +++ b/modules/imgfmt/HGOfd.h @@ -29,7 +29,7 @@ HGEXPORT HGResult HGAPI HGImgFmt_GetOfdPageInfo(HGOfdReader reader, HGUInt page, HGEXPORT HGResult HGAPI HGImgFmt_LoadImageFromOfdReader(HGOfdReader reader, HGUInt page, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image); -HGEXPORT HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGUInt imgType, HGUInt imgOrigin, HGImage* image); +HGEXPORT HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGOfdPageInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image); HGEXPORT HGResult HGAPI HGImgFmt_OpenOfdImageWriter(const HGChar* fileName, HGOfdImageWriter* writer); diff --git a/modules/imgfmt/HGPdf.cpp b/modules/imgfmt/HGPdf.cpp index 71bb48d3..5d3bebd4 100644 --- a/modules/imgfmt/HGPdf.cpp +++ b/modules/imgfmt/HGPdf.cpp @@ -90,7 +90,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromPdfReader(HGPdfReader reader, HGUInt page, return pdfReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, image); } -HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGUInt imgType, HGUInt imgOrigin, HGImage* image) +HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGPdfPageInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image) { HGPdfReader reader = NULL; HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader); @@ -99,7 +99,12 @@ HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGUInt imgType, HGU return ret; } - ret = HGImgFmt_LoadImageFromPdfReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image); + if (HGBASE_ERR_OK == ret && NULL != info) + ret = HGImgFmt_GetPdfPageInfo(reader, 0, info); + + if (HGBASE_ERR_OK == ret && NULL != image) + ret = HGImgFmt_LoadImageFromPdfReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image); + HGImgFmt_ClosePdfReader(reader); return ret; } diff --git a/modules/imgfmt/HGPdf.h b/modules/imgfmt/HGPdf.h index af6502e4..c54f7ad0 100644 --- a/modules/imgfmt/HGPdf.h +++ b/modules/imgfmt/HGPdf.h @@ -29,7 +29,7 @@ HGEXPORT HGResult HGAPI HGImgFmt_GetPdfPageInfo(HGPdfReader reader, HGUInt page, HGEXPORT HGResult HGAPI HGImgFmt_LoadImageFromPdfReader(HGPdfReader reader, HGUInt page, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image); -HGEXPORT HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGUInt imgType, HGUInt imgOrigin, HGImage* image); +HGEXPORT HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGPdfPageInfo *info, HGUInt imgType, HGUInt imgOrigin, HGImage* image); HGEXPORT HGResult HGAPI HGImgFmt_OpenPdfImageWriter(const HGChar* fileName, HGPdfImageWriter* writer);