cfpdf的PageSizes數組正在返回媒體大小,但我需要獲取trimbox。CFPDF或Java:獲取pdf文件的trimbox大小
是否有可能得到使用ColdFusion(或Java)裁切框,無需使用控制檯工具,如ImageMagick的(和cfexecute)?
cfpdf的PageSizes數組正在返回媒體大小,但我需要獲取trimbox。CFPDF或Java:獲取pdf文件的trimbox大小
是否有可能得到使用ColdFusion(或Java)裁切框,無需使用控制檯工具,如ImageMagick的(和cfexecute)?
cfpdf的頁面大小陣列實際上返回裁剪框dimesions。
雖然CF不直接暴露trimbox,但可以使用底層java對象來獲得相同的結果。如果您閱讀了帶有cfpdf操作讀取的變量的PDF,該變量僅僅是PDFDocument(用LiveCycle記錄)的包裝器。僞代碼會像下面:
pageTree = varname.getDoc().requirePages();
page = pageTree.getPage(index);
trimBox = page.getTrimBox().getValues();
height = trimBox[4] - trimBox[2];
width = trimBox[3] - trimBox[1];
HTH, CHANDAN庫馬爾
附:使用未記錄的api
您可以使用捆綁CF的舊版本的iText。將文件加載到一個PdfReader
對象中。然後使用PdfReader.getBoxSize(int index,String boxName)
爲每個頁面抓取trimbox(可能爲空)並提取寬度和高度。
下面是測試CF9一個例子:
<cfscript>
path = "C:/path/to/file.pdf";
reader = createObject("java", "com.lowagie.text.pdf.PdfReader").init(path);
sizes = [];
for (i = 1; i <= reader.getNumberOfPages(); i++) {
//note: the trimbox may be null/undefined
rect = reader.getBoxSize(i, "trim");
if (structKeyExists(variables, "rect")) {
arrayAppend(sizes, {height=rect.getHeight(), width=rect.getWidth()});
}
}
WriteDump(sizes);
</cfscript>
(編輯)。好的提示。我不知道那個。快速提問,getTrimBox()。getValues();'永遠是null/undefined? – Leigh
根據PDF參考1.7,媒體框是頁面對象中的必需條目。 (必需;可繼承)以默認用戶空間單位表示的矩形(請參閱第3.8.4節「矩形」),定義打算顯示或打印頁面的物理介質的邊界(請參見第10.10節.1,「頁面邊界」)。 然而並非所有的PDF生成軟件都符合規範。在使用這些值之前使用null或isdefined檢查的理想選擇。 –