全讯网新

全讯网新
cms全讯网新网站系统、政府cms定制开发

广州网站建设全讯网新-阅速全讯网新

报纸全讯网新网站内容全讯网新一体化报刊软件联系电话
/
http://dmanswers.com/
广州网站建设全讯网新
您当前位置:首页>网站技术

网站技术

利用acrobat sdk提取pdf文档内容

全讯网新时间:2019/5/18 13:45:28  作者:Admin  阅读:16  

0x00 背景

HackingTeam泄漏事件影响颇大,415.77G的内容大多是邮件内容,分析起来比较麻烦,因而被大多数人忽略。网上有很多邮件分析的文章HT邮件分析,主要是针对邮件关联进行分析,若对邮件内容进行分析则需提取邮件附件中的内容,再针对内容做进一步分析。本文背景其实与上文无关,只是借此提升逼格,下面将介绍如何利用acrobat SDK提取pdf文档内容。

0x01 acrobat导入

全讯网新只要安装了Adobe Acrobat,就能在其安装目录下找到acrobat.tlb,其中包含了adobe全讯网新提供的接口,可对pdf进行各种操作参考文档,使用类向导将其导入。

全讯网新提取文本内容需导入CAcroApp、CAcroAVDoc、CAcroAVPageView、CAcroPDPage、CAcroPDTextSelect、CAcroHiliteList。

0x02 提取文档内容

首先需要”打开”pdf,核心代码如下:

CAcroApp *pAcrpApp = new CAcroApp;

COleException e;

pAcrpApp->CreateDispatch("AcroExch.App",&e);

CAcroAVDoc *pAvdoc = new CAcroAVDoc;

全讯网新pAvdoc->CreateDispatch("AcroExch.AVDoc",&e);

全讯网新//打开pdf,其中PDFName为全路径

全讯网新if (!pAvdoc->Open(PDFName,NULL))

{

全讯网新printf("open pdf failed");

...

return 0;

}

打开文档后,通过pAvdoc可选择页数(默认为第一页),创建高亮板(CAcroHiliteList),将选择页数的内容加入高亮板,然后就可以从中提取出该页的内容,核心代码如下:

CAcroAVPageView pageView;

CAcroPDPage page;

全讯网新CAcroPDTextSelect* textSelect = new CAcroPDTextSelect;

全讯网新CAcroHiliteList* hilite = new CAcroHiliteList;

long selectionSize;

全讯网新pageView.AttachDispatch(pAvdoc->GetAVPageView(),TRUE);

 

hilite->CreateDispatch("AcroExch.HiliteList");

全讯网新if (hilite)

{

//设置为第一页

pageView.GoTo(0);

/*

这里是设置高亮板的大小

全讯网新由于没有找到如何在设置高亮板前获取该页内容长度的方法,所以采用设置成极大的长度

如有朋友知道方法,欢迎提出相互学习

*/

hilite->Add(0,4000);

page.AttachDispatch(pageView.GetPage(), TRUE);

全讯网新textSelect->AttachDispatch(page.CreateWordHilite(hilite->m_lpDispatch));

pAvdoc->SetTextSelection(textSelect->m_lpDispatch);

selectionSize = textSelect->GetNumText();

if (selectionSize && strText.GetLength() < 4000)

{

for(int i = 0;i < selectionSize;i ++)

{

strText += textSelect->GetText(i);

}

}

}

要完整提取出文档中的全部内容,可通过CAcroPDDoc获取pdf总页数,然后利用pageView.GoTo循环每一页,下面给出的完整工程将不包含此部分代码。

相关文章
acrobat
sdk
cms全讯网新系统购买咨询
扫描关注 广州阅速软件全讯网新有限全讯网新
扫描关注 广州阅速全讯网新