由于公司项目中需要针对 Microsoft 的 6 种格式(doc,xls,ppt,docx,xlsx,pptx)以及 pdf 中的文本进行提取以及后续的编辑操作,所以就需要对这些文件的格式能够庖丁解牛才行。而我分配到的是 PDF 这块的工作,相对其他几种格式来说,pdf 的格式相对简单清晰些,再结合一些开源库的实现,目前基本把文本提取的步骤和过程了解的比较清楚了。
PDF 格式解析
从物理结构来说,pdf 内容包括 head, body, crossxref, trailer 四个部分。head 包含的是 pdf 文件的版本号信息,body 则是 pdf 的主体内容,由各个对象(object)组成,crossxref 则是交叉引用表,里面表示的内容是各个对象以及每个对象在文件中的偏移,最后 trailer 表示的 pdf 文件的入口,也就是解析的起点。