2022-05-03 10:25:52 +00:00
|
|
|
|
#include "HGPdf.h"
|
2022-05-12 08:55:22 +00:00
|
|
|
|
#include "HGPdfImpl.hpp"
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_CheckPdfFile(const HGChar* fileName, HGBool* isPdf)
|
|
|
|
|
{
|
|
|
|
|
if (NULL == fileName || NULL == isPdf)
|
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfReader reader = NULL;
|
2022-11-26 02:42:06 +00:00
|
|
|
|
HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader);
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
2022-11-26 02:42:06 +00:00
|
|
|
|
return ret;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
2022-11-26 02:42:06 +00:00
|
|
|
|
|
|
|
|
|
*isPdf = HGTRUE;
|
|
|
|
|
HGImgFmt_ClosePdfReader(reader);
|
|
|
|
|
return ret;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader)
|
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == reader)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-12 08:55:22 +00:00
|
|
|
|
HGPdfReaderImpl* pdfReaderImpl = new HGPdfReaderImpl;
|
|
|
|
|
HGResult ret = pdfReaderImpl->Open(fileName);
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
delete pdfReaderImpl;
|
|
|
|
|
return ret;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-05-12 08:55:22 +00:00
|
|
|
|
*reader = (HGPdfReader)pdfReaderImpl;
|
|
|
|
|
return HGBASE_ERR_OK;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_ClosePdfReader(HGPdfReader reader)
|
|
|
|
|
{
|
|
|
|
|
if (NULL == reader)
|
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
|
2022-05-12 08:55:22 +00:00
|
|
|
|
HGResult ret = pdfReaderImpl->Close();
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
|
|
|
|
{
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
delete pdfReaderImpl;
|
|
|
|
|
return HGBASE_ERR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_GetPdfPageCount(HGPdfReader reader, HGUInt* count)
|
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == reader)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
|
2022-05-12 08:55:22 +00:00
|
|
|
|
return pdfReaderImpl->GetPageCount(count);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_GetPdfPageInfo(HGPdfReader reader, HGUInt page, HGPdfPageInfo* info)
|
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == reader)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
|
2022-05-12 08:55:22 +00:00
|
|
|
|
return pdfReaderImpl->GetPageInfo(page, info);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_LoadImageFromPdfReader(HGPdfReader reader, HGUInt page, HGFloat xScale, HGFloat yScale,
|
|
|
|
|
HGUInt imgType, HGUInt imgOrigin, HGImage* image)
|
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == reader)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
|
2022-05-12 08:55:22 +00:00
|
|
|
|
return pdfReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, image);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-08-16 06:41:35 +00:00
|
|
|
|
HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGPdfPageInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image)
|
2022-05-14 02:32:45 +00:00
|
|
|
|
{
|
|
|
|
|
HGPdfReader reader = NULL;
|
|
|
|
|
HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader);
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
|
|
|
|
{
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-16 06:41:35 +00:00
|
|
|
|
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);
|
|
|
|
|
|
2022-05-14 02:32:45 +00:00
|
|
|
|
HGImgFmt_ClosePdfReader(reader);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
HGResult HGAPI HGImgFmt_OpenPdfImageWriter(const HGChar* fileName, HGPdfImageWriter* writer)
|
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == writer)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-12 08:55:22 +00:00
|
|
|
|
HGPdfImageWriterImpl* pdfImageWriterImpl = new HGPdfImageWriterImpl;
|
|
|
|
|
HGResult ret = pdfImageWriterImpl->Open(fileName);
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
delete pdfImageWriterImpl;
|
|
|
|
|
return ret;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*writer = (HGPdfImageWriter)pdfImageWriterImpl;
|
|
|
|
|
return HGBASE_ERR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_ClosePdfImageWriter(HGPdfImageWriter writer)
|
|
|
|
|
{
|
|
|
|
|
if (NULL == writer)
|
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer;
|
2022-05-12 08:55:22 +00:00
|
|
|
|
HGResult ret = pdfImageWriterImpl->Close();
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
|
|
|
|
{
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
delete pdfImageWriterImpl;
|
|
|
|
|
return HGBASE_ERR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-13 03:56:46 +00:00
|
|
|
|
HGResult HGAPI HGImgFmt_SaveJpegImageToPdfImageWriter(HGPdfImageWriter writer, HGImage image, const HGJpegSaveInfo* info)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
2022-05-12 08:55:22 +00:00
|
|
|
|
if (NULL == writer)
|
2022-05-03 10:25:52 +00:00
|
|
|
|
{
|
|
|
|
|
return HGBASE_ERR_INVALIDARG;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer;
|
2022-05-13 03:56:46 +00:00
|
|
|
|
return pdfImageWriterImpl->SaveJpegImage(image, info);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
}
|
2022-05-14 02:32:45 +00:00
|
|
|
|
|
|
|
|
|
HGResult HGAPI HGImgFmt_SavePdfJpegImage(HGImage image, const HGJpegSaveInfo* info, const HGChar* fileName)
|
|
|
|
|
{
|
|
|
|
|
HGPdfImageWriter writer = NULL;
|
|
|
|
|
HGResult ret = HGImgFmt_OpenPdfImageWriter(fileName, &writer);
|
|
|
|
|
if (HGBASE_ERR_OK != ret)
|
|
|
|
|
{
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret = HGImgFmt_SaveJpegImageToPdfImageWriter(writer, image, info);
|
|
|
|
|
HGImgFmt_ClosePdfImageWriter(writer);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|