#include "ltwrappr.h"
#include "LTCPDFComp.h"
L_INT LPDFCompressor::InsertMRC(pBitmap, pPDFOptions)
LBitmapBase* pBitmap; |
pointer to an LBitmapBase object |
LPPDFCOMPOPTIONS pPDFOptions; |
pointer to the PDFCOMPOPTIONS structure |
Segments the specified image using MRC segmentation, compresses it, and inserts the image in the PDF file in memory.
Parameter |
Description |
pBitmap |
Pointer to the bitmap object that references the image to be inserted in the PDF file. |
pPDFOptions |
Pointer to the PDFCOMPOPTIONS structure that contains options used to write the image to the PDF file in memory. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
To insert the bitmap without using MRC segmentation, use LPDFCompressor::InsertNormal.
This function calls the LPDFCompressor::ImageCallBack, if LBase::EnableCallBack was set to TRUE, to allow the user to accept or reject the addition of any segment to the PDF document.
Required DLLs and Libraries
LCMRC |
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Functions: |
LPDFCompressor::InsertNormal, LPDFCompressor::ImageCallBack, Class Members |
Topics: |
|
|
This example inserts an image in a pdf document and uses MRC segmentation to segment this image. In this sample we don't need to add a background segment.
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
class LPDFCompressorKidIM : public LPDFCompressor
{
protected:
L_INT ImageCallBack(L_INT nPage, LPSEGMENTINFO pSegment)
{
UNREFERENCED_PARAMETER(nPage);
if(pSegment->uSegmentType == SEGTYPE_BACKGROUND)
return FAILURE;
else
return SUCCESS;
}
};
L_INT LPDFCompressor__InsertMRCExample(HWND hwnd)
{
LPDFCompressorKidIM pdf ;
L_INT nRet;
LBitmap LEADBitmap;
PDFCOMPOPTIONS PDFOptions;
PDFCOMPRESSION pdfComp;
CString szMsg;
CString szImagesPath = MAKE_IMAGE_PATH(TEXT("IMAGE1.CMP"));
CString szOutPath = MAKE_IMAGE_PATH(TEXT("Output(InsertMRC).pdf"));
memset(&PDFOptions,0,sizeof(&PDFOptions));
pdf.EnableCallBack (TRUE);
nRet = pdf.Init ();
if (nRet != SUCCESS)
{
MessageBox(hwnd, TEXT("Couldn't initialize pdf compressor"), TEXT("Error"), MB_OK) ;
return nRet;
}
pdfComp.uStructSize = sizeof( pdfComp );
pdfComp.dwFlags = PDFCOMP_1BITCOMPTYPE_ENABLED | PDFCOMP_2BITCOMPTYPE_ENABLED | PDFCOMP_PICTURECOMPTYPE_ENABLED;
pdfComp.comp1Bit = PDFCOMP_1BITCOMPTYPE_JBIG2;
pdfComp.comp2Bit = PDFCOMP_2BITCOMPTYPE_ZIP;
pdfComp.compPicture = PDFCOMP_PICTURECOMPTYPE_JPEG;
pdfComp.nQFactor =50;
nRet = pdf.SetCompression ( &pdfComp );
if(nRet != SUCCESS)
{
pdf.Free ();
return nRet;
}
PDFOptions.uStructSize = sizeof(PDFCOMPOPTIONS);
PDFOptions. dwFlags = PDFCOMP_FAVOR_ONEBIT | PDFCOMP_WITH_BACKGROUND;
PDFOptions.imageQuality = PDFCOMP_IMAGEQUALITY_USER;
PDFOptions.outputQuality = PDFCOMP_OUTPUTQUALITY_USER;
PDFOptions.uCleanSize = 7;
PDFOptions.uBackGroundThreshold = 15;
PDFOptions.uCombineThreshold = 100;
PDFOptions.uSegmentQuality = 50;
PDFOptions.uColorThreshold = 25;
nRet = LEADBitmap.Load((L_TCHAR *)(LPCTSTR)szImagesPath);
if(nRet != SUCCESS)
{
szMsg.Format(TEXT("Failed to load source image %s"),szImagesPath);
MessageBox(hwnd,szMsg, TEXT("Error"), MB_OK);
pdf.Free();
return nRet;
}
nRet = pdf.InsertMRC(&LEADBitmap, &PDFOptions);
if(nRet != SUCCESS)
return nRet;
nRet = pdf.Write (((L_TCHAR *)(LPCTSTR)szOutPath));
if (nRet ==SUCCESS)
{
szMsg.Format(TEXT("Result saved to %s"),szOutPath);
MessageBox( hwnd,szMsg, TEXT("Error"), MB_OK);
}
else
{
MessageBox( hwnd, TEXT("Failed to save result"), TEXT("Error"), MB_OK);
return nRet;
}
pdf.Free ();
return SUCCESS;
}