我可以使用下面的代码从图像创建PDF。但是当图像格式为.eps
时,我收到错误这是我的代码:
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转换为另一种格式。
我从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);
但它给了我这个错误:
内存不足
那我怎么解决这个问题呢?谢谢。
答案 0 :(得分:0)
您可以使用Ghostscript通过在C#中从命令行调用EPS将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;
}