#include "l_bitmap.h"
#include "lpdfComp.h"
L_LCMRC_API L_INT L_PdfCompInsertMRC(hDocHandle, pBitmap, pPDFOptions)
LCPDF_HANDLE hDocHandle; |
handle to an existing PDF document |
pBITMAPHANDLE pBitmap; |
pointer to a bitmap handle |
LPPDFCOMPOPTIONS pPDFOptions; |
pointer to the PDFCOMPOPTIONS structure |
(Document Required) Segments the specified image using MRC segmentation, compresses it, and inserts the image in the PDF file in memory.
Parameter |
Description |
hDocHandle |
Handle to an existing PDF document. This handle is obtained by calling the L_PdfCompInit function. |
pBitmap |
Pointer to the bitmap handle 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 L_PdfCompInsertNormal.
This function calls the pPDFCOMP_IMAGECALLBACK 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: |
|
Topics: |
|
|
This example inserts an image to pdf document and uses the MRC to make a proper segment for this image , in this sample we don't need to add Back ground segment.
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
L_INT PdfCompImageCallBack(LCPDF_HANDLE hDocument,
L_INT nPage,
LPSEGMENTINFO pSegment,
L_VOID* pUserData)
{
UNREFERENCED_PARAMETER(hDocument);
UNREFERENCED_PARAMETER(nPage);
UNREFERENCED_PARAMETER(pUserData);
if(pSegment->uSegmentType == SEGMENT_BACKGROUND)
return FAILURE;
else
return SUCCESS;
}
L_INT PdfCompInsertMRCExample(L_VOID)
{
L_INT nRet;
BITMAPHANDLE hBitmap;
LCPDF_HANDLE hDocument;
PDFCOMPOPTIONS PDFOptions;
PDFCOMPRESSION pdfComp;
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("Image1.CMP")), &hBitmap, sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL);
if(nRet != SUCCESS)
{
return nRet;
}
nRet = L_PdfCompInit (&hDocument, (pPDFCOMP_IMAGECALLBACK)PdfCompImageCallBack, NULL);
if(nRet != SUCCESS)
{
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 = L_PdfCompSetCompression( hDocument, &pdfComp );
if(nRet != SUCCESS)
{
L_PdfCompFree (hDocument);
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 = L_PdfCompInsertMRC(hDocument, &hBitmap, &PDFOptions);
if(nRet != SUCCESS)
{
L_PdfCompFree (hDocument);
return nRet;
}
nRet = L_PdfCompWrite(hDocument, MAKE_IMAGE_PATH(TEXT("Output.pdf")));
L_PdfCompFree (hDocument);
return nRet;
}