CFPDF或Java:获取pdf文件的trimbox大小

CFPDF或Java:获取pdf文件的trimbox大小,java,pdf,coldfusion,Java,Pdf,Coldfusion,的PageSizes数组正在返回mediabox大小,但我需要获取 是否可以在不使用诸如imagemagick(和cfexecute)等控制台工具的情况下使用ColdFusion(或Java)来获取trimbox?您可以使用与CF捆绑的旧版本的iText。将文件加载到PdfReader对象中。然后使用抓取每页的修剪框(可能为空),并提取宽度和高度 下面是一个使用CF9测试的示例: <cfscript> path = "C:/path/to/file.pdf"; re

的PageSizes数组正在返回mediabox大小,但我需要获取


是否可以在不使用诸如imagemagick(和cfexecute)等控制台工具的情况下使用ColdFusion(或Java)来获取trimbox?

您可以使用与CF捆绑的旧版本的iText。将文件加载到
PdfReader
对象中。然后使用抓取每页的修剪框(可能为空),并提取宽度和高度

下面是一个使用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> 

path=“C:/path/to/file.pdf”;
reader=createObject(“java”,“com.lowagie.text.pdf.PdfReader”).init(路径);
大小=[];

对于(i=1;i,cfpdf的PageSizes数组实际上返回cropbox维度

虽然CF不直接公开trimbox,但您可以使用底层java对象来获得相同的结果。如果您使用cfpdf action read读取变量中的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];
嗯,, 钱丹·库马尔


p、 美国使用非文档化api(编辑)。好提示。我不知道这一点。快速提问,
getTrimBox().getValues();
是否可以为空/未定义?根据PDF参考1.7,媒体框是页面对象中的必需条目。(必需;可继承)矩形(见第3.8.4节“矩形”),以默认用户空间单位表示,定义了页面拟在其上显示或打印的物理介质的边界(见第10.10.1节“页面边界”)。但是,并非所有PDF生成软件都符合规范。理想情况是在使用值之前使用空值或isdefined检查。