2011-11-08 53 views
2

我有一個cfdocument標籤,看起來是這樣的:如何輸出pdf變量?

<cfdocument name="myPDF" format="PDF" ... > 
    ... 
</cfdocument> 

我使用name屬性,因爲我要在多個地方多次使用,以用它保存PDF中的變量。 (附加到電子郵件,在屏幕上顯示等)

我想要在瀏覽器中顯示此pdf,只需輸出它就好像我已經在cfdocument中省略了name屬性,但是我無法確定瞭解如何做到這一點。使用cfoutput(<cfoutput>#myPDF#</cfoutput>)給我一個錯誤 - 「ByteArray對象不能轉換爲字符串。」使用cfdump給了我一個二進制對象。看起來pdf是以二進制形式存儲的...我如何強制它以pdf格式顯示在屏幕上?

回答

8

找到了解決方案(通過我們的網站,這樣做是其他地方尋找) - 使用cfcontent:

<cfcontent type="application/pdf"> 
<cfoutput>#tostring(myPDF)#</cfoutput> 

更新

我居然發現了一個稍微更直接的方式來做到這一點:

<cfcontent type="application/pdf" variable="#myPDF#"> 
+0

不要忘記標記爲答案您的回覆。 – Leigh

+0

@李 - 我知道。不要讓我再做幾天 – froadie

+0

啊,好吧。如果沒有其他答案,你會認爲這是允許的。可能不會。 – Leigh

0

與ColdFusion的PDF支持一樣好,我們無法將生成的文件大小降低到某種程度合理,這就是爲什麼我們實施wkhtmltopdf。

http://wkhtmltopdf.org/

如。 1mb CF PDFs vs 20kb wkhtmltopdf PDFs。 (wtf ??)如果您有像我們這樣的網站,有1,000個pdf(發票),1mb是不可接受的。

wkhtmltopdf太棒了。它使用webkit將html頁面轉換爲pdf。是的,您可以在HTML中嵌入字體,透明圖像,CSS和JavaScript!嵌入谷歌網絡字體並不會造成文件大小,例如+ 2-4kb,並且它們看起來很性感。

您只需製作一個html頁面並使用此外部二進制文件將html轉換爲pdf。在你的cf腳本中,<cfexecute>吧,然後fileRead()的內容。

你會覺得Acrobat中,是和Adobe產品和ColdFusion,也是一個Adobe產品,會產生最好的PDF文件...但沒有