L_LTFIL_APIL_INTL_ReadFileAttachments (pszFile ppAttachments、pLoadOptions pInfo)
阅读附件的属性嵌入到指定的文件中。
字符串包含所有者的名称文件可能包含嵌入的附件。
指向变量的指针将填充任何附件发现的属性。
指针可选的扩展加载选项。通过零使用默认加载选项。指L_LoadFile为更多的信息。
指针指向一个FILEINFO结构。这种结构可以包含文件信息用于加载一个图像,或者它可能是更新信息文件被加载。
这个值可以零。
指L_LoadFile为更多的信息。
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
ERROR_NO_ATTACHMENTS | 支持附件的文件格式,比如PDF,但是没有发现附件。 |
ERROR_FEATURE_NOT_SUPPORTED | 不支持的文件格式附件(如PNG或BMP),或LEADTOOLS不支持这种类型的阅读附件的格式。 |
错误PDFINVALID_PASSWORD | 业主文件是加密的。通过使用正确的密码L_SetPDFOptions并再次尝试。 |
< 1 | 一个错误发生。指返回代码。 |
应用程序可以读取附件包含在一个文件的属性通过执行以下步骤:
L_FILEATTACHMENTS
指针。L_FILEATTACHMENTS
。L_ReadFileAttachments返回以下值:
成功
:如果业主文件支持附件的格式(如PDF),和文件包含一个或多个嵌入的附件,ppAttachments将定义一个指向结构的指针包含附件的属性。确保应用程序调用L_FreeAttachments当不再需要的数据。
ERROR_NO_ATTACHMENTS
:如果支持附件的文件格式(如PDF),但没有发现附件,ppAttachments将被设置为零。
ERROR_FEATURE_NOT_SUPPORTED
:如果文件格式不支持附件(如PNG或BMP),或LEADTOOLS不支持这种类型的阅读附件的格式,ppAttachments将被设置为零。
该方法返回的附件项的数量是一样的FILEINFO.nAttachmentCount
返回的对象的价值L_FileInfo。
每一个L_FILEATTACHMENT包含附件如它的属性pszFileName
,uFileLength
业主提供的文档和其他信息。
使用L_ExtractAttachment将附件文件的二进制内容提取到一个输出磁盘文件或流进行进一步处理(例如,通过调用L_FileInfo或L_LoadBitmap)。
LEADTOOLS支持阅读附件嵌入在以下文件格式:
PDF文件支持嵌入式任意数量的附件和文件格式(如PDF、TIFF、XML等)。PDF文件也可以被创建为一个投资组合包含多个文件组合成一个集成单元。在这些类型的文件,该文件包含一个通用的帮助页面等文本”最好的经验,打开这个PDF组合在一个兼容的查看器”,以及任意数量的附件和模式来控制如何查看文档。的价值FILEINFO.uFlags
将包含FILEINFO_PORTFOLIO
如果文件是一个PDF格式的组合,并由应用程序指定文件的任何进一步的处理。
Win32 x64, Linux。
这个例子将执行以下操作:
/ /这个例子将执行以下操作:
/ /显示所有的附件信息嵌入到文件中
/ / - - - - - -附件文件提取到一个输出目录
/ /——显示每个附件的文件格式和页数
L_INT ReadFileAttachmentsExample (L_TCHAR *文件名,L_TCHAR * outputDir)
{
L_INT attachmentCount;
/ /获取信息在文件所有者
/ /这一步是可选的,如果我们不感兴趣决定业主文件格式
/ /还是一个PDF组合。
FILEINFO FILEINFO;
&fileInfo L_INT ret = L_FileInfo(文件名,运算符(FILEINFO) FILEINFO_TOTALPAGES, NULL);
如果(ret ! =成功)
返回受潮湿腐烂;
printf (“信息\ n”);
printf (“格式:% d \ n”,fileInfo.Format);
/ /如果PDF,检查如果是组合
如果(fileInfo。格式= = FILE_RAS_PDF)
printf (“IsPortfolio: % d \ n”(fileInfo。旗帜和FILEINFO_PORTFOLIO) = = FILEINFO_PORTFOLIO);
attachmentCount = fileInfo.nAttachmentCount;
printf (“附件:% d \ n”,fileInfo.nAttachmentCount);
/ /读附件嵌入到该文件的属性
L_FILEATTACHMENTS *附件=零;
ret = L_ReadFileAttachments(文件名,附件,空,空);
如果(ret = = ERROR_FEATURE_NOT_SUPPORTED)
{
/ /这意味着文件的格式不支持附件
printf (“警告:附件是不支持的文件格式\ n”);
返回成功;
}
其他的如果(ret = = ERROR_NO_ATTACHMENTS)
{
/ /这意味着文件的格式支持附件,但我们没有发现任何文件
printf (“警告:文件没有附件\ n”);
返回成功;
}
其他的如果(ret ! =成功)
{
/ /其他错误是出乎意料的时候
printf (“错误:% d \ n”ret);
返回受潮湿腐烂;
}
/ /检查
断言(附件- > uItemCount = = attachmentCount);
/ /如果不存在创建输出目录
CreateDirectory (outputDir, NULL);
LOADFILEOPTION LOADFILEOPTION;
L_GetDefaultLoadFileOption (&loadFileOption运算符(LOADFILEOPTION));
/ /提取附件
为(L_UINT attachmentIndex = 0;attachmentIndex <附件- > uItemCount & & ret = =成功;attachmentIndex + +)
{
/ /获取当前的附件
常量L_FILEATTACHMENT *附件= (常量L_FILEATTACHMENT *) ((常量L_UCHAR *) - > pItems +附件(附件- > uItemStructSize * attachmentIndex));
/ /得到输出文件的名字
L_TCHAR outputFileName [MAX_PATH] = {0};
wcscat (outputFileName outputDir);
size_t len = wcslen (outputFileName);
如果(outputFileName [len - 1] ! = ' \ \ ')
wcscat (outputFileName L_TEXT (" \ \ "));
wcscat (outputFileName附件- > pszFileName);
wprintf (L_TEXT (“提取附件输出文件:% s \ n”),outputFileName);
/ /提取附件数量设置
loadFileOption。附件- > uAttachmentNumber nAttachment = (L_INT);
/ /提取它
ret = L_ExtractAttachment(文件名,NULL, 0 &loadFileOption NULL, 0, outputFileName, NULL, NULL);
如果(ret = =成功)
{
/ /显示信息在这个附件。请注意,这可能会失败如果附件
/ /不是一个有效的图像文件格式。
memset (&fileInfo 0运算符(FILEINFO));
ret = L_FileInfo (outputFileName &fileInfo,运算符(FILEINFO) FILEINFO_TOTALPAGES, NULL);
如果(ret = =成功)
{
printf (“附件格式是% d和% d页面\ n”fileInfo。格式,fileInfo.TotalPages);
}
其他的
{
printf (“不能获得附件格式,错误% d \ n”ret);
ret =成功;/ /吞下这个错误
}
}
}
/ /附件
L_FreeAttachments(附件);
返回受潮湿腐烂;
}
/ /这个示例显示了如何加载一个加密附件包含在一个加密的文件所有者
/ / PDF文件组合(业主)使用密码“通过”
/ /附件(嵌入的文件)使用不同的密码:“pass1作为”
/ /操作需要两个密码,那么您将需要使用两个步骤:
/ / 1)提取附件使用所有者密码(通过)
/ / 2)从附件加载图像缓冲区使用附件密码(pass1作为)
L_INT ReadEncryptedFileAttachmentsExample (L_TCHAR *文件名,pBITMAPHANDLE pBitmap)
{
LOADFILEOPTION LOADFILEOPTION;
L_GetDefaultLoadFileOption (&loadFileOption运算符(LOADFILEOPTION));
loadFileOption。nAttachment = 1;
FILEPDFOPTIONS pdfOptions = {运算符(FILEPDFOPTIONS)};
L_GetPDFOptions (&pdfOptions运算符(FILEPDFOPTIONS));
strcpy_s ((字符*)pdfOptions。szPassword _countof (pdfOptions.szPassword),“pass1作为”);/ /首先试试附件的密码(pass1作为)
L_SetPDFOptions (&pdfOptions);
/ /尝试加载图像存储在附件1中使用的密码文件所有者——应该失败
pBitmap L_INT nRet = L_LoadFile(文件名,运算符(BITMAPHANDLE), 0 ORDER_BGRORGRAY LOADFILE_ALLOCATE | LOADFILE_STORE,空,空,&loadFileOption, NULL);
断言(nRet = = ERROR_PDF_INVALID_PASSWORD);
如果(nRet = = ERROR_PDF_INVALID_PASSWORD)
{
strcpy_s ((字符*)pdfOptions。szPassword _countof (pdfOptions.szPassword),“通过”);/ /使用所有者的密码文件
L_SetPDFOptions (&pdfOptions);
L_UCHAR * pbuf =零;
L_SIZE_T uBufferSize = 0;
/ /提取附件1 (= loadFileOption.PageNumber)内存缓冲区。
/ / L_ExtractAttachment将分配缓冲区和存储pbuf的指针。
/ /将存储在uBufferSize缓冲区的大小
/ /我们将免费需要缓冲使用L_FreeBuffer当我们不需要它了。
nRet = L_ExtractAttachment (&loadFileOption文件名,空,空,空,0,NULL, &pBuffer, &uBufferSize);
如果(nRet ! =成功)
返回nRet;
/ /尝试加载附件没有提交正确的密码。此操作应该会失败
nRet = L_LoadMemory (pbuf pBitmap,运算符(BITMAPHANDLE), 0 ORDER_BGRORGRAY LOADFILE_ALLOCATE | LOADFILE_STORE,空,空,uBufferSize,空,空);
断言(nRet = = ERROR_PDF_INVALID_PASSWORD);
如果(nRet = = ERROR_PDF_INVALID_PASSWORD)
{
/ /使用附件的密码文件。
strcpy_s ((字符*)pdfOptions。szPassword _countof (pdfOptions.szPassword),“pass1作为”);
L_SetPDFOptions (&pdfOptions);
/ /没有必要通过LOADFILEOPTION结构了,因为正在从附件加载主图像。
nRet = L_LoadMemory (pbuf pBitmap,运算符(BITMAPHANDLE), 0 ORDER_BGRORGRAY LOADFILE_ALLOCATE | LOADFILE_STORE,空,空,uBufferSize,空,空);
}
L_FreeBuffer (pbuf);
}
返回nRet;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。