我刚刚实现了一个Java代码,以获取文档的页数,但它只用于PDF文件。我需要计算其他文件的页数(Docx,HTML等)。有什么想法吗?
我的代码是:
public int numberOfPages(@RequestBody() MultipartFile inputFile) throws Exception {
int numberOfPages = 0;
InputStream fileName = inputFile.getInputStream();
PDDocument document = PDDocument.load(fileName);
if (document != null) {
numberOfPages = document.getNumberOfPages();
}
return numberOfPages;
}
答案 0 :(得分:0)
我认为这并不像看起来那么容易,因为页码取决于纸张的大小,打印机的类型,图像的大小等。
一种可能的解决方案是将输入文档转换为PDF,然后您可以轻松地对页面进行计数。您可以将PDF内容与原始文档一起存储,也可以在每次需要页码信息时动态使用toPdf(FileInputStream文档)方法。它取决于文件数量和性能要求。
它可以将html,office文档,纯文本和图像转换为PDF。 您可以使用Apache Tika检查上传文件的类型,然后根据此信息,您可以执行正确的方法将上传的内容转换为PDF。
检查文件类型:
public static MediaType getMediaType(final byte[] content) throws IOException {
try (InputStream stream = new ByteArrayInputStream(content)) {
TikaConfig tika = TikaConfig.getDefaultConfig();
Metadata metadata = new Metadata();
return tika.getDetector().detect(stream, metadata);
}
}
,然后强>
MediaType mediaType = ContentTypeDetector.getMediaType(content);
String uploadedContent = mediaType.toString();
if (uploadedContent.equals("image/jpeg") {
PDF pdf = SomeClass.jpgToPdf(...)
} else if (uploadedContent.equals(...) {
PDF pdf = SomeClass....(...)
}
iText是一个很好的Java库,可以根据您的设置从上传的文件创建PDF文件。