使用iTextSharp将WMF添加到PDF
我完全无法使用iTextSharp将WMF文件转换为PDF。 我特别想使用WMF,因为它是一个基于矢量的文件。
我的WMF文件来自Chart控件。
重现这一点的代码非常简单。
- 创建一个新的Windows窗体项目。
- 将图表控件添加到Form 1。
- 然后添加以下代码:
添加此using指令
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。
您可以尝试直接构建它而不是调用createImage:
Image img = new ImgWMF( bytes );
虽然查看代码我看到你会得到一个不同的例外:
InputMeta in = new InputMeta(is); if (in.readInt() != 0x9AC6CDD7) { throw new BadElementException(errorID + " is not a valid placeable windows metafile."); }
这里的关键点可能是“可放置”。 我并不完全熟悉WMF,但您可以找到替代的ImageFormat
或其他东西。
是的。 看起来像可放置的WMF是Aldus不久前发现的东西。 这是一个关于从WMF转换为iText可以使用的东西的问题:
http://itext-general.2136553.n4.nabble.com/WMF-file-doesn-t-display-correctly-td2283480.html
这个特殊问题与渐变填充有关。