是否可以通过XSL返回外部PDF文件的总页数? AntennaHouse Formatter是否具有等效的扩展名?
提前致谢!
答案 0 :(得分:2)
如果您使用的是基于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 stylesheet]
<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)"/>
…
答案 1 :(得分:1)
没有开箱即用,没有。如何做到这一点包括:
grep
等,并将其输出保存到要读取的文件中。例如,参见http://www.unix.com/printthread.php?t=55661&pp=40 unparsed-text()
阅读PDF,然后使用XSLT的正则表达式功能来查找正确的字符串。