No one else encountered this? Really?
The solution I came up with was to send PDF processing to another server
running CF7. That server processes the CFDocument tag and sends back the file.
Here's the custom tag I came up with to hand off and receive the data.
!---
TAG NAME AND PURPOSE
tag_pdfball by Jordan Roher, CorpDirect Agents, Inc.
Send a ColdFusion file to another server to be processed into a
PDF.
Then store and return the location of said PDF.
HISTORY
March 30, 2009 Created
CONTACT
Jordan Roher
jordanro...@corpdirect.com
PARAMETERS
INPUT
name
requiredtypenotes
---
document
yes string The saved content you want to
generate as a PDF
server
yes string Full address to server and file
you want to send this file to.
timeout
no number How long, in seconds, should
the server wait to get that PDF? Defaults to 60 seconds.
tempFolder
no string Where should I put the
temporary file I generate and the one received from the server? Defaults to
caller.email_attach_path.
OUTPUT
name
always typenotes
---
pdfball.okay
yes boolean Did it work?
pdfball.file
no string If successful, absolute path to the
file received
pdfball.error
no string If not successful, the error message
returned from the other server
---
cfif ThisTag.executionMode IS start
cfscript
// Constants
null = ; dot = .;
slash = /;
backslash = \;semicolon = ;;
dash = -;
star = *; space = ;
all = all;
one = one;comma = ,;
tab = chr(9);
newline = chr(13); newline2 = chr(10);
amp = ;
// Parameter collection and processing
universalParameters =
document
, timeout
, tempFolder
, server
;
// Remove newlines, spaces and tab characters
universalParameters = REReplace(universalParameters,
[\s], null, all);
// Populate variables with null
for(i = 1; i LTE ListLen(universalParameters); i = i +
1) {
if(NOT StructKeyExists(attributes,
ListGetAt(universalParameters, i))) {
StructInsert(attributes,
ListGetAt(universalParameters, i), null);
}
}
// General error checking
errorMessage = null;
if(attributes.document IS null) {
errorMessage = Document to generate not
specified;
}
if(attributes.timeout IS null OR NOT
IsNumeric(attributes.timeout)) {
attributes.timeout = 60;
}
if(attributes.tempFolder IS null AND
IsDefined(caller.email_attach_path)) {
attributes.tempFolder =
caller.email_attach_path;
}
if(NOT DirectoryExists(attributes.tempFolder)) {
errorMessage = Temporary folder not
accessible;