#include "HGPdf.h" #include "HGPdfImpl.hpp" HGResult HGAPI HGImgFmt_CheckPdfFile(const HGChar* fileName, HGBool* isPdf) { if (NULL == fileName || NULL == isPdf) { return HGBASE_ERR_INVALIDARG; } HGPdfReader reader = NULL; HGResult ret = HGImgFmt_OpenPdfReader(fileName, &reader); if (HGBASE_ERR_OK != ret) { return ret; } *isPdf = HGTRUE; HGImgFmt_ClosePdfReader(reader); return ret; } HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGPdfReaderImpl* pdfReaderImpl = new HGPdfReaderImpl; HGResult ret = pdfReaderImpl->Open(fileName); if (HGBASE_ERR_OK != ret) { delete pdfReaderImpl; return ret; } *reader = (HGPdfReader)pdfReaderImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_ClosePdfReader(HGPdfReader reader) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader; HGResult ret = pdfReaderImpl->Close(); if (HGBASE_ERR_OK != ret) { return ret; } delete pdfReaderImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_GetPdfPageCount(HGPdfReader reader, HGUInt* count) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader; return pdfReaderImpl->GetPageCount(count); } HGResult HGAPI HGImgFmt_GetPdfPageInfo(HGPdfReader reader, HGUInt page, HGPdfPageInfo* info) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader; return pdfReaderImpl->GetPageInfo(page, info); } HGResult HGAPI HGImgFmt_LoadImageFromPdfReader(HGPdfReader reader, HGUInt page, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader; return pdfReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, 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); if (HGBASE_ERR_OK != ret) { return ret; } 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; } HGResult HGAPI HGImgFmt_OpenPdfImageWriter(const HGChar* fileName, HGPdfImageWriter* writer) { if (NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGPdfImageWriterImpl* pdfImageWriterImpl = new HGPdfImageWriterImpl; HGResult ret = pdfImageWriterImpl->Open(fileName); if (HGBASE_ERR_OK != ret) { delete pdfImageWriterImpl; return ret; } *writer = (HGPdfImageWriter)pdfImageWriterImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_ClosePdfImageWriter(HGPdfImageWriter writer) { if (NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer; HGResult ret = pdfImageWriterImpl->Close(); if (HGBASE_ERR_OK != ret) { return ret; } delete pdfImageWriterImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_SaveJpegImageToPdfImageWriter(HGPdfImageWriter writer, HGImage image, const HGJpegSaveInfo* info) { if (NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer; return pdfImageWriterImpl->SaveJpegImage(image, info); } 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; }