簡體   English   中英

如何繪制矢量圖形並將其保存在PDF文件中?

[英]How to draw vector graphics and save it in PDF file?

我正在做一個項目,該項目通常在收集數據並在圖表中繪制結果。 (使用C#)我需要將圖表保存為PDF文件。 我的問題是,如何在不損失分辨率的情況下將圖表保存為PDF文件? 我的觀點是如何繪制矢量圖形而不是柵格圖形?

我嘗試使用iTextSharp創建PDF文件,但結果根本不令人滿意!

我是新來的,所以我無法上傳圖片。

這是保存文件后的結果: https : //www.dropbox.com/s/ruwtc82hfosxk6y/Test.pdf?dl=0

這是我需要創建的PDF: https : //www.dropbox.com/s/jvu5uu069imo9xc/nir%20well%20abfar.pdf?dl=0

我知道有兩種方法可以將Chart的高質量圖像轉換為PDF

一種是使用矢量格式:

    1. chart.SaveImage與三種emf格式之一一起使用。
    1. 將生成的emf文件轉換為wmf
    1. wmf文件插入到iTextSharp文檔中。

1和3是單線。 但是第二步不是。 實際上,我根本沒有找到可行的c#解決方案。 最好的是對這里消失的編輯的怪異參考。

如果您可以使用其他程序進行轉換,則將獲得類似此演示pdf文件的不錯結果。我使用Illustrator進行了轉換。

第二 :如果無法使用第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文件的分辨率,它將以當前屏幕分辨率(此處為96dpi)保存。

現在您有了一個大圖像,可能必須在iTextSharp中將其縮小:

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(yourImageFile);
img .ScalePercent(15);  // scale to fit your needs..
doc.Add(img );

請注意,圖例和標簽會以這種方式變小,因此您可能必須先放大圖例和標簽。 我還發現,按比例縮小時,在放大之前,圖像會很亮。

這是兩個屏幕截圖,一個是圖表,另一個是pdf documnet,放大了很多(300%)..:

在此處輸入圖片說明在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM