2011-09-16 30 views
4

我有一大堆的2D圖形,用於屏幕上的渲染控制和用於打印,這是非常自定義的圖形,不能由任何第三方報告工具或現成的控制。有沒有辦法將System.Drawing.Graphics從C#寫入PDF?

該程序可以生成打印內容的PDF文件,但是當我寫它時,我作弊,只是將Graphics對象打印到內存中,然後將其嵌入到PDF頁面中。

由於用戶正在通過電子郵件發送文檔,他們發現文檔太大。

我已經開始使用iText從頭開始編寫PDF,但是有沒有辦法將System.Drawing.Graphics內容直接轉換爲PDF? iText的工作方式和圖形工作方式完全不同。

+0

我知道它不是一個免費的庫,但[Windows窗體Infragistics.Documents控件](http://www.infragistics.com/dotnet/netadvantage/winforms/infragisticsdocuments.aspx#Overview)提供了一種方法來輕鬆地撰寫PDF文件。這是一個開發許可證,你可以免費測試它。 – JPBlanc

回答

3

試試這個庫http://www.pdfsharp.com/PDFsharp/

編輯:以上庫已被移動到http://www.pdfsharp.net/

+0

這項工作相當完美。實際上,我必須複製所有內容並進行微妙的更改,但它使我的數學保持一致,這比使用iText更容易。圖書館幾年沒有更新,所以如果需要可能會有所貢獻:) –

+0

是的,這是一個相當的工作 - 在它的中間。使用XPS非常容易,但我的客戶堅持使用PDF。呃,好吧! ...它確實幫助知道你已經推進並得到了一個工作解決方案:) – noelicus

1

你可以直接用什麼顯卡的WMF(EMF),然後你拉弦手,爲iText的。

+0

雖然沒有讀過它,但我確實沒有嘗試這種方法,這看起來像使用PDF銳利的可行替代方案。我可以稍後再看看,謝謝你的回答。 –

1

您的意思是說你有一個System.Drawing.Image?如果是這樣,你可以直接通過iTextSharp.text.Image.GetInstance()這將給你一個iTextSharp Image對象。否則,您可以直接繪製到PDF畫布,see this post以獲取更多信息。

+0

我之前使用的是圖像方法,但前面提到我的文件太大,需要做直接繪製。是的,我可以使用直接繪圖,雖然它與GDI +系統完全不同,我需要從頭開始,我正在尋找更多GDI +的寫作方式,Eugen的答案只是門票。 –

0

一種方法就是簡單地使用PDF打印機驅動程序,如this one。您可以通過打印API重複使用相同的GDI +代碼。

+0

我確實調查了這種方法,儘管這種方法存在一些注意事項,正如您提到的一樣,它很冒險,另一種是我們不保存文件,而是編寫通過電子郵件發送而無需用戶干預的文檔。我還需要在我們不需要的機器上安裝驅動程序,因爲我們正在使用點擊一次,謝謝它,雖然它是一個可行的選擇。 –

相關問題