下載中心免費(fèi)下載seo搜索引擎優(yōu)化方案
一、PDF文件介紹
PDF是英文Portable Document Format縮寫(xiě),就是可移植的意思,它是以PostScript語(yǔ)言圖象模型為基礎(chǔ),無(wú)論在哪種打印機(jī)上都可保證精確的顏色和準(zhǔn)確的打印效果,PostScript咱也不懂,估計(jì)和SVG的原理差不多吧。
二、PDF文件格式
PDF文件是二進(jìn)制數(shù)據(jù),可以用Sublime的HexViewer打開(kāi)。
1、首部
指明文件PDF版本號(hào),%PDF-1.4 其中最后一位 4就是文件格式的版本號(hào)。
2、文件體
PDF文件主要部分,由一系列obj對(duì)象組成,類(lèi)似如下格式
3 0 obj <<
........
>>endobj
#?3?對(duì)象編號(hào)?0?修改次數(shù)
3、交叉引用表
用于索引各個(gè)obj 對(duì)象在文檔中的位置,以實(shí)現(xiàn)隨機(jī)訪問(wèn)
xref.0 18
0000000000 65535 f
0000010112 00000 n
.....
#?0000000000?第一對(duì)象起始地址,修改次數(shù)?65535
#(最大修改次數(shù),表示不可再改, f?表示free?
# 這里可以看成文件頭)
#?0000010112?第二對(duì)象超始地址,n表示對(duì)象正在使用
4、尾部
指明文件體根對(duì)象和交叉引用表地址
trailer.<</Info 17 0 R/
ID [<df2c5533d0ab7c62ee7
732a5e375592a><b07f35295
e287c0a5febcad25060ccbf>
]/Root 16 0 R/Size 18>>.
startxref.83511.%%EOF.
# trailer 說(shuō)明文件尾 trailer對(duì)象的開(kāi)始
# Size 18 該P(yáng)DF文件的對(duì)象數(shù)目
#?Root?16?根對(duì)象的對(duì)象號(hào)為16
#?startxref.83511?交叉引用表地f址
三、解析PDF文件
Java PdfBox、Python的Pdfminer都可以解析出PDF中的文本,但無(wú)論哪個(gè)工具都只能把PDF文本一行行打印出來(lái),具體的字段解析還是要自己用正則去匹配。
下面介紹一下Python3的pdfminer3k
1、安裝?pip install pdfminer3k
2、pdfminer3k幾個(gè)主要類(lèi)介紹
PDFParser:從PDF文件中提取數(shù)據(jù)
PDFDocument:PDF文檔對(duì)象
PDFPageInterpreter:處理頁(yè)面內(nèi)容
下面是解析簡(jiǎn)歷PDF數(shù)據(jù),需要把關(guān)鍵信息提取出來(lái),剛從網(wǎng)上找了些代碼簡(jiǎn)單實(shí)現(xiàn)了一下,代碼還沒(méi)有做任何異常處理,先能跑通再說(shuō)。
注:這代碼對(duì)掃描版本的PDF是沒(méi)有辦法解析出來(lái)的。
?