使用PdfBox加载PDF失败且Adobe无法打开,求解析文件内HTML含义
PDF加载失败?因为你手里的"PDF"其实是个HTML文件!
先理清楚你的问题
你尝试用PdfBox的PDDocument pdDocument = PDDocument.load(pdfFile)加载文件,结果失败,连Adobe Acrobat Reader DC都打不开,用NotePad++打开才发现这根本不是PDF,而是一段开头的HTML代码:
<!doctype html>
这段HTML到底是什么意思?
我给你逐行拆解:
<!doctype html>:这是HTML5的文档声明,告诉浏览器(或者任何解析工具):“我是一个标准的HTML5网页文件”,和PDF半毛钱关系都没有。<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />:这个标签是专门给老版本IE浏览器用的,意思是“用你能支持的最高版本内核来渲染我,要是装了Chrome内核的插件(比如IE Tab)也优先用它”,目的是让网页在IE里显示正常。<meta charset="utf-8" />:指定这个HTML文件的字符编码是UTF-8,确保页面里的中文、特殊字符不会乱码。
为什么会出现这种情况?
大概率是你下载文件的时候出问题了:
- 可能点击的不是真正的PDF下载链接,而是一个跳转页面、错误页面,或者网站的反爬/验证页面;
- 也有可能文件被错误命名了——比如本来是.html后缀,被改成了.pdf,导致你误以为是PDF文件。
给你的解决建议
- 校验文件真实性:PDF文件的开头一定是
%PDF-1.x(比如%PDF-1.7),你可以用文本编辑器打开文件开头看看,如果不是这个,直接放弃用PDF工具加载; - 修正文件后缀:把文件后缀改成
.html,用浏览器打开看看,说不定能看到完整的网页内容,找到正确的PDF下载入口; - 重新获取文件:回到文件来源页面,仔细找真正的PDF下载按钮,避免点到跳转链接;如果是接口获取的,检查接口返回的是不是正确的PDF二进制数据,而不是HTML页面。
内容的提问来源于stack exchange,提问作者Nisarg Patil
相关产品推荐
相关产品推荐

