2011-11-28 109 views
2

我有幾個排行榜我extjs4application儀表盤.. 我要生成使用這些圖表 的圖像應該是一個PDF格式的報告,我使用iTextSharp的如何將Extjs4圖表圖像保存爲PDF報告?

有沒有辦法來從圖表中的圖像,以便將它們包含在我的報告中?

理想對我來說是這樣使用它與iTextSharp的

MyImageStream = new MemoryStream(); 
myChart.SaveImage(MyImageStream); 

我的圖表將圖表對象

我問他們告訴我,我會生成和渲染論壇在我圖表在客戶端(已完成),然後我會得到svg,將其發送到服務器和服務器將使用它來生成pdf ... 但我不知道如何使用svg既不如何將其發送到服務器

編輯

我嘗試使用wkhtmltoimage我的圖表保存爲圖像

,但它不工作煥我指定的MapPath我的.aspx

,但如果我指定網站的網址,它工作正常或本地主機路徑(請參閱htem的評論)

由does not work我的意思是沒有錯誤,但沒有創建png!

我的代碼:

var url = HttpContext.Current.Server.MapPath("~/chartImage.aspx");//dosnt work 
//works : // "google.com"; //"localhost/chartImage.aspx";// 
     var fileName = " pie13.png "; 
     var wkhtmlDir = HttpContext.Current.Server.MapPath("~/wkhtmltopdf/pdf/");//"C:\\Program Files\\wkhtmltopdf\\"; 
     var wkhtml = HttpContext.Current.Server.MapPath("~/wkhtmltopdf/wkhtmltoimage.exe");//"C:\\Program Files\\wkhtmltopdf\\wkhtmltopdf.exe"; 
     var p = new Process(); 

     p.StartInfo.CreateNoWindow = true; 
     p.StartInfo.RedirectStandardOutput = true; 
     p.StartInfo.RedirectStandardError = true; 
     p.StartInfo.RedirectStandardInput = true; 
     p.StartInfo.UseShellExecute = false; 
     p.StartInfo.FileName = wkhtml; 
     p.StartInfo.WorkingDirectory = wkhtmlDir; 

     string switches = ""; 
     //switches += "--print-media-type "; 
     //switches += "--margin-top 10mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm "; 
     //switches += "--page-size Letter "; 
     p.StartInfo.Arguments = switches + " " + url + " " + fileName; 
     p.Start(); 

在此先感謝

回答

1

使用wkhtmltopdf包(http://code.google.com/p/wkhtmltopdf/)到網頁轉換與圖表成pdf文件,然後讓用戶下載該pdf。爲了做到這一點,你需要運行wkhtmltopdf服務器端(注意身份驗證/用戶模擬)。 因爲wkhtmltopdf是基於Safari,它應該與extjs毫無問題地工作。

+0

我已經使用iTextSharp的,並有我的報告都完成了excpet圖表如此我不想改變它 – Armance

2

好的,在閱讀上面的評論後,這裏是一個修訂版本。 Ext JS是一個客戶端庫,因此您需要在瀏覽器中運行它以獲取您的圖表,並且這無法更改。如果你真的需要在服務器上獲得這些圖表,那麼你必須採取一些或多或少的骯髒的黑客手段。其中之一是:

  1. 準備一個特殊的網頁,其中包含只包括在PDF
  2. 使用wkhtmltoimage程序將其轉換成圖像文件(在服務器上)
  3. 插入圖表使用iTextSharp將圖像轉換爲PDF文檔

但是在這種情況下,我寧願重新考慮工具的選擇或生成報告的方式。

+0

即時通訊嘗試轉換爲圖像與wkhtmltoimage在c#中,但仍然無法正常工作..你指向我如何做plz ..或者一些文檔使用C#.thank – Armance

+0

1.創建一個網絡包含圖形的頁面2.使用wkhtmltoimage命令行將該頁面轉換爲圖像文件3.僅當您有1個和2個工作單元執行相同操作時,才從C#程序執行(調用wkhtmltoimage命令行) – nightwatch

+0

如果仍然不起作用,那麼請閱讀嚇人的手冊,如果您需要更多的幫助,然後指定什麼不適合你。 – nightwatch