使用iText将pdf保存到ColdFusion变量

时间:2015-05-15 19:47:48

标签: pdf coldfusion itext

我需要将iText与ColdFusion(CF)一起使用,因为CFDocument不会做我需要的所有事情,但是我想将结果返回到CF变量而不是将其保存到文件中。似乎每个例子都将结果保存到文件中。

我正在使用以下示例代码来实际生成pdf,但正如我所说,我需要它在变量中(最好不要先成为文件),因为该变量必须传递给另一个组编写的代码(和我无法控制。)

<cfset var document=createObject("java", "com.lowagie.text.Document") />
<cfset var PageSize = createObject("java","com.lowagie.text.Rectangle") />
<cfset var fileIO = createObject("java","java.io.FileOutputStream") />
<cfset var writer = createObject("java","com.lowagie.text.pdf.PdfWriter") />
<cfset var paragraph = createObject("java", "com.lowagie.text.Paragraph") />
<cfset var FontFactory = createObject("java","com.lowagie.text.FontFactory") />
<cfset var Font = createObject("java", "com.lowagie.text.Font") />
<cfset var Courier = Font.init(Font.COURIER, 8.0) />
<cfset var CourierB = Font.init(Font.COURIER_BOLD, 8.0) />

<cfset PageSize.init(612, 792) />
<cfset document.init(PageSize) />
<cfset fileIO.init("C:\test.pdf") />
<cfset writer.getInstance(document, fileIO) />
<cfset document.open() />
<cfset paragraph.init("Hello world.", Courier) />
<cfset document.add(paragraph) />
<cfset document.close() />

我不是那么擅长Java,只是基础知识,所以这实际上可能是一些我不理解的简单。

由于

1 个答案:

答案 0 :(得分:1)

Leigh关于使用ByteArrayOutputStream的评论是正确的答案。 以下是更新后的代码,可将生成的PDF放入ColdFusion变量中:

<cfset var document=createObject("java", "com.lowagie.text.Document") />
<cfset var PageSize=createObject("java","com.lowagie.text.Rectangle") />
<cfset var fileIO=createObject("java","java.io.ByteArrayOutputStream") />
<cfset var writer=createObject("java","com.lowagie.text.pdf.PdfWriter") />
<cfset var paragraph=createObject("java", "com.lowagie.text.Paragraph") />
<cfset var FontFactory=createObject("java","com.lowagie.text.FontFactory") />
<cfset var Font = createObject("java", "com.lowagie.text.Font") />
<cfset var Courier = Font.init(Font.COURIER, 8.0) />

<cfset PageSize.init(612, 792) />
<cfset document.init(PageSize) />
<cfset writer.getInstance(document, fileIO) />
<cfset document.open() />
<cfset paragraph.init("Hello world.", Courier) />
<cfset document.add(paragraph) />
<cfset document.close() />

<cfset var returnVar = fileIO.toByteArray() />