2016-09-01 133 views
1

我可以使用下面的代碼從圖像創建PDF。使用itextsharp將圖像添加到PDF中

string imagelocation = @"C:\Users\Desktop\1.eps"; 
string outputpdflocation = @"C:\Users\Desktop\outputfromeps.pdf"; 
using (MemoryStream ms = new MemoryStream()) 
{ 
    Document doc = new Document(PageSize.A4, 10, 10, 42, 35); 
    PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(outputpdflocation, FileMode.Create)); 
    doc.AddTitle("Document Title"); 

    doc.Open(); 

    iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(imagelocation); 
    image1.Alignment = iTextSharp.text.Image.ALIGN_CENTER; 

    image1.ScaleToFit(700, 900); 

    image1.SetAbsolutePosition((PageSize.A4.Width - image1.ScaledWidth)/2, (PageSize.A4.Height - image1.ScaledHeight)/2); 
    doc.Add(image1); 
    doc.Close(); 
} 

但現在說.EPS是無法識別的格式:但是,當圖像格式是.EPS

這裏是我的代碼,我收到一個錯誤。

所以我的解決方案是將eps轉換爲另一種格式。

我從Microsoft處找到以下代碼。

這裏是代碼:

System.Drawing.Image image1 = System.Drawing.Image.FromFile(@"C:\Users\Desktop\1.eps"); 

// Save the image in JPEG format. 
image1.Save(@"C:\Users\Programmer\epsoutput.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 

但它給我這個錯誤:

Out of memory

所以,我怎麼能解決這個問題?謝謝。

+0

EPS在iText的是不支持,所以沒有回答你的問題。這是沒有理由對這個問題進行投票的;我會向上投票得分回到0. –

+0

您應該發佈C#特定的其他問題,例如顯示如何使用C#將EPS文件轉換爲PNG文件。 (不要將無損EPS轉換爲有損JPEG格式。) –

+0

@BrunoLowagie先生。所以解決的辦法是將EPS文件轉換爲PNG文件?謝謝。 – codequery18

回答

0

您可以使用Ghostscript通過在C#中的命令行調用EPS將其轉換爲PDF。

您可以使用下面的方法,一旦你已經安裝了Ghostscript的,你需要提供的路徑,它

public bool ConvertEpsToPdfGSShell(string epsPath, string pdfPath, 
            string ghostScriptPath) 
    { 
     var success = true; 
     var epsQual= (char)34 + epsPath + (char)34; 

     var sComment = "-q -dNOPAUSE -sDEVICE=pdfwrite -o " + 
     (char)34 + pdfPath + (char)34 + " " + (char)34 + epsPath+ (char)34; 

     var p = new Process(); 

     var psi = new ProcessStartInfo {FileName = ghostScriptPath}; 

     if (File.Exists(psi.FileName) == false) 
     { 
      throw new Exception("Ghostscript does not exist in the path 
      given: " + ghostScriptPath); 
     } 

     psi.CreateNoWindow = true; 
     psi.UseShellExecute = true; 
     psi.Arguments = sComment; 
     p.StartInfo = psi; 
     p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     p.Start(); 
     p.WaitForExit(); 
     if (p.ExitCode == 0) return success; 
     success = false; 

     try 
     { 
      p.Kill(); 
     } 

     catch 
     { 

     } 
     finally 
     { 
      p.Dispose(); 
     } 


     return success; 
    } 
相關問題