Skip to content

Instantly share code, notes, and snippets.

@umbraesoulsbane
Created September 12, 2014 17:45
Show Gist options
  • Save umbraesoulsbane/f534f630921c041a272a to your computer and use it in GitHub Desktop.
Save umbraesoulsbane/f534f630921c041a272a to your computer and use it in GitHub Desktop.
FlipBook Auto-Creation
<cffunction name="onAfterFolderFlipBookSave" output="true">
<cfargument name="event">
<cfargument name="$">
<!--- // Object being Saved // --->
<cfset thisBean = arguments.$.event('activeBean') />
<!--- // Construct Paths and FileName // --->
<cfset fbCache = "#$.globalConfig('assetpath')#/#$.siteConfig('siteid')#/cache/file" />
<cfset fbPDF = "#fbCache#/#thisBean.getValue('FILEID')#.pdf" />
<cfset fbTemp = "#$.globalConfig('assetdir')#/#$.siteConfig('siteid')#/cache/temp" />
<cfif NOT DirectoryExists(fbTemp) >
<cfdirectory action="create" directory="#fbTemp#" />
</cfif>
<!--- // No need to do anything if there is no File being uploaded // --->
<cfif Len(Trim(thisBean.getValue('FILEID'))) and FileExists(ExpandPath(fbPDF)) >
<!--- // Check for and Delete Existing Child Pages so we can build for PDF // --->
<cfset childIterator = thisBean.getKidsIterator() />
<cfif childIterator.GETRECORDCOUNT() >
<cfloop condition="childIterator.hasNext()">
<cfset childItem = childIterator.next() />
<cfset childItem.delete() />
</cfloop>
</cfif>
<!--- // Load Java Object for PDFBox // --->
<cfset objDocument = CreateObject("Java","org.apache.pdfbox.pdmodel.PDDocument") />
<cfset pdfFile = objDocument.load(JavaCast("string",ExpandPath(fbPDF))) />
<cfset pdfPages = pdfFile.getDocumentCatalog().getAllPages() />
<!--- // Create Mura Pages from PDF Pages // --->
<cfset errors = ArrayNew(1) />
<cfloop index="pI" from="1" to="#ArrayLen(pdfPages)#">
<cfset myPageImg = ImageNew(pdfPages[pI].convertToImage()) />
<cfset imgCache = "#thisBean.getValue('contentid')#-p#pI#.png" />
<cfimage action="write" source="#myPageImg#" destination="#fbTemp#/#imgCache#" overwrite="yes" />
<cfscript>
newPage = $.getBean('content').loadBy(remoteid = '#thisBean.getValue('contentid')#-p#pI#');
if (newPage.getIsNew()) {
newPage.setTitle('Page #pI#');
newPage.setMenuTitle('');
newPage.setURLTitle('');
newPage.setHTMLTitle('');
newPage.setApproved(1);
newPage.setIsNav(1);
newPage.setType('File');
newPage.setSubType('FlipPage');
newPage.setParentID(thisBean.getValue('contentid'));
newPage.setRemoteID('#thisBean.getValue('contentid')#-p#pI#');
};
// Will NOT work unless you have 'allowlocalfiles=true' in /config/settings.ini.cfm
newPage.setNewFile('#fbTemp#/#imgCache#');
newPage.save();
if ( !StructIsEmpty(newPage.getErrors()) ) {
ArrayAppend(errors, newPage.getErrors());
};
</cfscript>
<cffile action="delete" file="#fbTemp#/#imgCache#" />
</cfloop>
</cfif>
</cffunction>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment