有兩種方法,我知道的,從獲得高質量的圖像你Chart
轉化爲PDF
。
一個是通過使用矢量格式:
-
- 使用
chart.SaveImage
與三個emf
格式之一。
-
- 轉換所得
emf
文件wmf
-
- 插入
wmf
文件到您iTextSharp
文檔。
1和3是單線。但步驟2不是。事實上,我還沒有找到工作的c#
解決方案。最好的是一個奇怪的參考已經消失here編輯..
如果你可以使用一些其他程序做,你會得到像this demo pdf file不錯的結果轉換..我用插圖的轉換。
兩個:如果你不能得到第2步的工作,你仍然可以得到很好的效果,如果您使用的光柵圖像有一個很好的和高分辨率。下面是如何做到這一點:
首先我們隱藏Chart
,所以我們不會嚇到用戶。然後我們把它做得和我們想要的輸出一樣大。然後,我們DrawToBitmap
最後我們再次重置圖表..:
Size s = chart1.Size;
chart1.Hide();
// pick your size in pixels
// I simply multiply my screen size..:
chart1.Size = new System.Drawing.Size(s.Width * 5, s.Height * 5);
using (Bitmap bmp = new Bitmap(chart1.ClientSize.Width, chart1.ClientSize.Height))
{
// you should set the resolution,
// although I didn't find a way for iTextSharp to use it visually
bmp.SetResolution(600, 600);
using (Graphics G = Graphics.FromImage(bmp))
{
G.SmoothingMode = SmoothingMode.HighQuality;
G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
chart1.DrawToBitmap(bmp, chart1.ClientRectangle);
bmp.Save(yourImageFile, ImageFormat.Png);
}
}
chart1.Size = s;
chart1.Show();
你也可以使用SaveImage並保存了幾行,但你不能設置PNG文件的分辨率存在,並且將被保存currnt屏幕分辨率,這裏是96dpi ..
現在你有一個大的圖像,將可能不得不將其縮小在iTextSharp的:
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(yourImageFile);
img .ScalePercent(15); // scale to fit your needs..
doc.Add(img);
注意,圖例和標籤變得非常小的這種方式,所以你可能在保存之前它們放大。我還發現,縮小時,圖像是相當明亮的,直到你放大。
這裏有兩個截圖,一個從圖表,另一個從pdf文檔放大後很多(300%)。 :
來源
2015-05-23 15:58:47
TaW
歡迎堆棧溢出!簡單列出您的要求並尋求幫助不是在本網站上提出問題的好方法。請參閱[爲什麼「有人可以幫助我」而不是「實際」問題](http://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual -題)。我們展示如何_you_試圖自行解決問題,然後告訴我們_exactly_什麼結果,並告訴我們爲什麼你覺得它沒有工作。 –
謝謝你的提示。下次我會確保以更合適的方式提出我的問題。 – Bin
我試圖用iTestSharp創建一個pdf文件。爲什麼它不起作用,我需要向你展示我的程序生成的pdf文件。有沒有辦法上傳PDF文件? – Bin