是否可以通过 XSL 返回外部 PDF 文件的总页数?AntennaHouse Formatter 是否具有等效的扩展名?
提前致谢!
是否可以通过 XSL 返回外部 PDF 文件的总页数?AntennaHouse Formatter 是否具有等效的扩展名?
提前致谢!
如果您使用允许外部函数调用的基于 Java 的 XSLT 处理器(例如 Saxon PE 或 EE),那么 Apache PDFBox 将为您提供帮助。
PDFBox: https ://pdfbox.apache.org/
PDFBox 的 PDDocument 类具有返回目标 PDF 的页数的方法。因此,您可以通过以下步骤获取页数:
[Java 示例代码]
package com.acme.pdfutil;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
public class pdfDocument {
/**
* Get the page count of specified PDF file.
* @param filePath
* @return Page count
*/
public static int getPageCount(String filePath){
File pdfFile = null;
PDDocument pdfDoc = null;
int pageCount = -1;
try {
pdfFile = new File(filePath);
pdfDoc = PDDocument.load(pdfFile);
pageCount = pdfDoc.getNumberOfPages();
}
catch (Exception e) {
System.out.println("[getPageCount] " + e.getMessage());
}
finally {
if (pdfDoc != null){
try{
pdfDoc.close();
}
catch (Exception e) {
;
}
}
}
return pageCount;
}
}
[XSLT 样式表]
<xsl:stylesheet version="2.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:acmejava="java:com.acme.pdfutil.pdfDocument"
>
…
<!-- Call external function -->
<xsl:variable name=”pdfPageCount” as="xs:integer" select="acmejava:getPageCount($pdfPath)"/>
…
不是开箱即用,不。方法包括:
grep
在 PDF 上使用等,并将其输出保存到要读取的文件中。参见,例如,http://www.unix.com/printthread.php?t=55661&pp=40unparsed-text()
使用 XSLT 的正则表达式功能来读取 PDF 以查找正确的字符串。