使用 iText 将 pdf 保存到 ColdFusion 变量
Using iText to save pdf to ColdFusion Variable
我需要将 iText 与 ColdFusion (CF) 一起使用,因为 CFDocument 不会完成我需要它做的所有事情,但是我想 return 将结果保存到 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 不是很了解,只是基本知识,所以这实际上可能是一些我不理解的简单内容。
谢谢
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() />
我需要将 iText 与 ColdFusion (CF) 一起使用,因为 CFDocument 不会完成我需要它做的所有事情,但是我想 return 将结果保存到 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 不是很了解,只是基本知识,所以这实际上可能是一些我不理解的简单内容。
谢谢
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() />