方式一:通过文件对象获取页数
<!--pdf解析所需jar包-->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.9</version>
</dependency>
public static void main(String[] args) throws IOException {
//创建需要解析的PDF文件
File file=new File("C:\\Users\\11\\Desktop\\pdf资料\\Spring SpringBoot常用注解总结.pdf");
//加载文件
PDDocument doc = PDDocument.load(file);
//通过工具类获取页数,打印
System.out.println(doc.getNumberOfPages());
}
方式二:通过url地址获取输入流,解析输入流,获取文件页数
@Test
public void demo1(){
String urlStr= "https://certification.squaretogether.cn/etcd/tsign/auth/file/downLoadByFileId/5f16bea656635f3dbc8ee692";
HttpURLConnection conn = null;
byte[] bytes=null;
try {
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(20 * 1000);
InputStream in=conn.getInputStream();
//加载文件
PDDocument doc = PDDocument.load(in);
//通过工具类获取页数,打印
System.out.println(doc.getNumberOfPages());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.disconnect();
}
} catch (Exception e) {
}
}
}
方式三:通过解析字节数组,获取页数
@Test
public void demo3()throws Exception{
//url已经失效
byte[] urlFileData = getUrlFileData("https://certification.squaretogether.cn/etcd/tsign/auth/file/downLoadByFileId/5f179b8a56635f3dbc8ee698");
//加载文件
PDDocument doc = PDDocument.load(urlFileData);
//通过工具类获取页数,打印
System.out.println(doc.getNumberOfPages());
}
//通过url获取字节数组
public static byte[] getUrlFileData(String fileUrl) throws Exception
{
URL url = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024*10];
int len = 0;
while ((len = cin.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
cin.close();
byte[] fileData = outStream.toByteArray();
outStream.close();
return fileData;
}