【发布时间】:2011-02-08 16:43:44
【问题描述】:
我完全无法使用 iTextSharp 将 WMF 文件转换为 PDF。我特别想使用 WMF,因为它是基于矢量的文件。
我的 WMF 文件来自 Chart 控件。
重现这一点的代码非常简单。
- 创建一个新的 Windows 窗体项目。
- 在 Form1 上添加一个图表控件。
- 然后添加以下代码:
使用指令添加这个
using iTS = iTextSharp.text;
并将以下代码添加到您的 Form1.cs 文件中:
private void Form1_Load(object sender, EventArgs e)
{
Document pdfDoc = new Document();
PdfWriter.GetInstance(pdfDoc, new FileStream(@"D:\dev\Test\TestPdfCreation\TestPdfCreation\bin\Debug\test.pdf", FileMode.Create));
MemoryStream mimg1 = new MemoryStream();
chart1.SaveImage(mimg1, ImageFormat.Wmf);
mimg1.Seek(0, SeekOrigin.Begin);
iTS.Image img1 = iTS.Image.GetInstance(mimg1);
pdfDoc.Add(img1);
pdfDoc.Close();
}
我收到的错误是: 发生 IOException。字节数组不是可识别的图像格式。
使用 iTextSharp 5.0.5。
【问题讨论】:
-
我使用 WMF 文件没有任何问题,但我是从磁盘加载它。您可以将其写入磁盘并通过路径加载它以查看是否有效吗?我想知道内存流是否有问题。
-
再进一步看,似乎有两种不同类型的 WMF 文件。 Windows 3.0 版本具有
01 00 09 00 00 03或02 00 09 00 00 03作为前六个字节。但是当我从 Adobe Illustrator 制作 WMF 时,我得到D7 CD C6 9A作为前 4 个字节。后者对我来说适用于 iTextSharp。
标签: c# itextsharp