在 Java 中提取 PDF 元数据和指标信息
JPedal 库可用于提取 PDF 文件的元数据。 有多个PdfUtilities
类。
你可以在自己的应用程序中使用PdfUtilities
,以下是示例代码,你只需移除不需要的行即可。
final PdfUtilities utilities = new PdfUtilities("inputFile.pdf");
utilities.setPassword("password"); // 仅当文件需要密码时才需要此设置。
try {
if (utilities.openPDFFile()) {
// 返回包含文档 PDF 版本的字符串。
final String documentPDFVersion = utilities.getPDFVersion();
// 如果文件包含任何嵌入的字体,则返回 true。
final boolean hasEmbeddedFonts = utilities.hasEmbeddedFonts();
// 返回一个映射,键是页码,值是一个字符串,详细说明该页面的字体信息。
final Map<Integer, String > documentFontData = utilities.getAllFontDataForDocument();
// 返回一个字符串,包含文档的所有元数据字段。
final String documentPropertiesAsXML = utilities.getDocumentPropertyFieldsInXML();
// 返回一个映射,键是属性名称,值是属性值。
final Map<String, String > documentPropertiesAsMap = utilities.getDocumentPropertyStringValuesAsMap();
// 返回一个布尔值,如果文件符合所有标记 PDF 的规范则为 true。即使为 false,也可能提取一些标记内容。
final boolean isFullyTagged = utilities.isMarkedContent();
// 返回此 PDF 的权限值,并在控制台显示权限的字符串。
final int permissions = utilities.getPdfFilePermissions();
PdfUtilities.showPermissionsAsString(permissions);
// 返回总页数,以整数形式表示。
final int totalPageCount = utilities.getPageCount();
for (int i = 1; i != totalPageCount; i++) {
// 获取指定页面在给定单位和类型下的页面尺寸。
final float[] pageDimensions = utilities.getPageDimensions(i, PdfUtilities.PageUnits.Pixels, PdfUtilities.PageSizeType.CropBox);
// 返回用于定义指定页面内容的 PDF 命令总数。
final int commandCountForPage = utilities.getCommandCountForPageStream(i);
// 返回指定页面的字体数据,格式为字符串。
final String fontDataForPage = utilities.getFontDataForPage(i);
// 返回指定页面的图像数据,格式为字符串。
final String xImageDataForPage = utilities.getXImageDataForPage(i);
}
}
} catch(final PdfException e) {
e.printStackTrace();
}
utilities.closePDFfile();
PDFUtilities
类还可以通过另一个构造函数进行实例化,该构造函数接受一个 PDF 的字节数组而非文件名。这个构造函数的使用方法如下。
byte[] pdfByteArray;
//Read PDF into pdfByteArray
final PdfUtilities utilities = new PdfUtilities(pdfByteArray);