Friday, March 19, 2010    
Home My Books Blog ColdFusion About Me Back    

Calendar
<< Aug 2006 >>
S M T W T F S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Search

Categories
 • Acrobat (3) [RSS]
 • Adobe (90) [RSS]
 • AdobeMAX06 (45) [RSS]
 • AdobeMAX07 (59) [RSS]
 • AdobeMAX08 (66) [RSS]
 • AdobeMAX09 (39) [RSS]
 • AdobeMAX10 (1) [RSS]
 • AIR (219) [RSS]
 • Appearances (191) [RSS]
 • Books (72) [RSS]
 • CFEclipse (15) [RSS]
 • ColdFusion (1381) [RSS]
 • Data Services (34) [RSS]
 • Fish Tank (5) [RSS]
 • Flash (197) [RSS]
 • Flex (498) [RSS]
 • Home Automation (5) [RSS]
 • Jobs (116) [RSS]
 • JRun (14) [RSS]
 • Labs (43) [RSS]
 • LiveCycle (34) [RSS]
 • MAX (232) [RSS]
 • Mobile (120) [RSS]
 • Regular Expressions (17) [RSS]
 • RIA (21) [RSS]
 • SQL (40) [RSS]
 • Stuff (536) [RSS]
 • Tips (CF Studio) (80) [RSS]
 • Tips (CF) (795) [RSS]
 • Tips (Dreamweaver) (91) [RSS]
 • Tips (Flex Builder) (2) [RSS]
 • Using CF (162) [RSS]

Other BLOGs
 • Charlie Arehart
 • Lee Brimelow
 • Ray Camden
 • Christophe Coenraets
 • Sean Corfield
 • Mihai Corlan
 • Cornel Creanga
 • Mark Doherty
 • John Dowdell
 • Danny Dura
 • Enrique Duvos
 • Steven Erat
 • Kevin Hoyt
 • Serge Jespers
 • Adam Lehman
 • Duane Nickull
 • Miti Pricope
 • Andrew Shorten
 • Ryan Stewart
 • James Ward
 • Greg Wilson
 • Full As A Goog

RSS Feeds
 • Feed
 • Subscribe

Join my mailing list and find out about new books and other topics of interest.

Thoughts, ideas, tips, musings, and pontifications (not necessarily in that order) by Ben Forta ...
NOTE: This is my personal blog, and the opinions and statements voiced here are my own.

Viewing By Entry / Main
August 11, 2006

GetPDFInfo() UDF Returns PDF Information

A user wrote to ask how the recently released XPPAJ libraries (used in my cf_pdfform tag) could be used to determine basic PDF file information (version, page count, and so on). And yes, it sure can. The following is a quick UDF I threw together that returns PDF version, page count, attachment count, and a flag indicating whether or not the PDF contains a form.

<!--- Uses XPAAJ to return info about a PDF file --->
<cffunction name="GetPDFInfo" returntype="struct" access="public" output="no">
    <cfargument name="PDFFile" type="string" required="yes">

    <cfscript>
    // Init all vars

    var formIS="";
    var PDFfactory="";
    var PDFdoc="";
    var formType="";
    var attachments="";
    var result=StructNew();

    // PDF form input stream

    formIS=CreateObject("java", "java.io.FileInputStream");
    formIS.init(ARGUMENTS.PDFFile);

    // Get PDF document object

    PDFfactory=CreateObject("java", "com.adobe.pdf.PDFFactory");
    PDFdoc=PDFfactory.openDocument(formIS);

    // Get page count and version

    result.pages=PDFdoc.getNumberOfPages();
    result.version=PDFdoc.getVersion();

    // Get formtype object

    formType=PDFdoc.getFormType();    

    // Determine type

    if ((formType EQ FormType.XML_FORM)
        OR (FormType EQ FormType.ACROFORM))
        result.isform=TRUE;
    else
        result.isform=FALSE;

    // Get attachments

    attachments=PDFdoc.getFileAttachmentNames();
    // If have any, get count

    if (IsDefined("attachments") AND IsArray(attachments))
        result.attachments=ArrayLen(attachments);
    else
        result.attachments=0;
    
</cfscript>

    <cfreturn result>
</cffunction>

To use the UDF just pass it the fully qualified path to a PDF file, like this:

<cfset PDFFile=ExpandPath("myPDFFile.pdf")>
<cfdump var="#GetPDFInfo(PDFFile)#">

Obviously, XPAAJ must be present to use this UDF.

TrackBacks
There are no trackbacks for this entry.

No trackback URL. Trackbacks are only allowed via interactive form.

Comments

  © Copyright 1997-2009 Ben Forta, All Rights Reserved