# include“ltocr.h”
L_LTOCR_APIL_INTEXT_FUNCTIONL_OcrDocument_ClearPages(文档)
清除OCR文档中的所有页面。
OCR文档的句柄。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
清除OCR文档中的所有页面。
请注意:该方法只适用于基于内存的文档。
必需的dll和库
静态(L_TCHAR* outputFileName)
{
//从Ocr1.tif, Ocr2.tif, Ocr3.tif和Ocr4.tif中创建多页TIF
HBITMAPLIST bitmapList;
L_INT retCode = -1;
SAVEFILEOPTION = {0};
retCode = L_CreateBitmapList(&bitmapList);
如果(retCode != SUCCESS)
返回retCode;
BITMAPHANDLE位图[4];
L_TCHAR *imageFiles[] = {MAKE_IMAGE_PATH(L_TEXT(“OCR1.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR2.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR3.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR4.tif”}));
为(L_INT i = 0;i < _countof(imageFiles);我+ +)
{
retCode = L_LoadBitmap(imageFiles[i], &bitmaps[i],运算符(bitmaphandle), 0, order_rgb, null, null);
如果(retCode != SUCCESS)
返回retCode;
retCode = L_InsertBitmapListItem(bitmapList, (L_UINT)-1, &bitmaps[i]);
如果(retCode != SUCCESS)
转到清理;
}
//保存输出文件
retCode = L_GetDefaultSaveFileOption(&saveOptions,运算符(SAVEFILEOPTION));
如果(retCode != SUCCESS)
转到清理;
//保存所有页面
其。PageNumber = -1;
retCode = L_SaveBitmapList(outputFileName, bitmapList, FILE_CCITT_GROUP4, 1,0, &saveOptions);
清理:
//释放列表中的所有位图,并释放句柄
L_DestroyBitmapList (bitmapList);
返回retCode;
}
L_INT L_OcrDocument_ClearPagesExample ()
{
L_INT retCode = -1;
L_OcrEngine ocrEngine = NULL;
L_OcrDocumentManager = NULL;
L_OcrDocument ocrDocument = NULL;
L_OcrPage ocrPage = NULL;
LOADFILEOPTION loadOpts;
FILEINFO FILEINFO;
//在这个例子中,我们需要一个多页的TIF文件。
//如果你有一个不同的示例文件,替换下面的文件名
L_TCHAR* multiPageFile = MAKE_IMAGE_PATH(L_TEXT(“Multipage.tif”));
如果(CreateMultiPageFile(multiPageFile) != SUCCESS)
返回失败;
//创建引擎实例
retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine);
如果(retCode != SUCCESS)
返回retCode;
//使用默认参数启动引擎
retCode = L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);
如果(retCode == SUCCESS)
{
retCode = L_OcrEngine_GetDocumentManager(ocrEngine, &ocrDocumentManager);
如果(retCode != SUCCESS)
转到清理;
//创建基于内存的OCR文档
retCode = L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_InMemory, NULL);
如果(retCode != SUCCESS)
转到清理;
//加载我们创建的多页tif文件中的每一页并处理它们
L_GetDefaultLoadFileOption (&loadOpts运算符(LOADFILEOPTION));
retCode = L_FileInfo(multiPageFile, &fileInfo,运算符(FILEINFO), FILEINFO_TOTALPAGES, & louses);
如果(retCode != SUCCESS)
转到清理;
为(L_INT pageNum = 1;pageNum <= fileInfo.TotalPages;pageNum + +)
{
//加载页面
BITMAPHANDLE bitmap = {0};
loadOpts。PageNumber = pageNum;
retCode = L_LoadBitmap(multiPageFile, &bitmap,运算符(BITMAPHANDLE), 0, ORDER_RGB, & louses, &fileInfo);
如果(retCode != SUCCESS)
转到清理;
//创建Ocr页面
retCode = L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &bitmap, L_OcrBitmapSharingMode_AutoFree, NULL, NULL);
如果(retCode != SUCCESS)
{
L_FreeBitmap(位图);
转到清理;
}
//将所有权转移到OCR页面
bitmap.Flags.Allocated = 0;
//在页面中查找区域
retCode = L_OcrPage_AutoZone(ocrPage, NULL, NULL);
如果(retCode != SUCCESS)
转到清理;
/ /识别
retCode = l_ocrpage_recognition (ocrPage, NULL, NULL);
如果(retCode != SUCCESS)
转到清理;
//在文档文件模式中,识别后将OcrPage添加到OcrDocument中
retCode = L_OcrDocument_AddPage(ocrDocument, ocrPage);
如果(retCode != SUCCESS)
转到清理;
}
/ /保存
retCode = L_OcrDocument_Save(ocrDocument, MAKE_IMAGE_PATH(L_TEXT(“Multipage.pdf”)), documentformat_pdf, null, null);
L_UINT uPagesCount = 0;
retCode = L_OcrDocument_GetPageCount(ocrDocument, &uPagesCount);
如果(retCode != SUCCESS)
转到清理;
//删除文档的最后一页,插入第一页,然后重新保存文档。
retCode = L_OcrDocument_RemovePageAt(ocrDocument, uPagesCount - 1);
如果(retCode != SUCCESS)
转到清理;
L_OcrPage ocrPage2 = NULL;
retCode = L_OcrDocument_GetPageAt(ocrDocument, 0, &ocrPage2);
如果(retCode != SUCCESS)
转到清理;
retCode = L_OcrDocument_InsertPage(ocrDocument, uPagesCount, ocrPage2);
如果(retCode != SUCCESS)
转到清理;
//通过获取页面的索引来检查页面是否插入到文档的末尾
L_INT pageIndex = -1;
L_OcrDocument_IndexOfPage(ocrDocument, ocrPage2, &pageIndex);
assert(pageIndex == (L_INT)uPagesCount);
retCode = L_OcrDocument_Save(ocrDocument, MAKE_IMAGE_PATH(L_TEXT(“Multipage2.pdf”)), documentformat_pdf, null, null);
//现在清除OCR文档页面
L_OcrDocument_ClearPages (ocrDocument);
}
清理:
如果(ocrDocument != NULL)
L_OcrDocument_Destroy (ocrDocument);
如果(ocrEngine != NULL)
L_OcrEngine_Destroy (ocrEngine);
返回retCode;
}