Я полностью не могу получить файл WMF в PDF с помощью iTextSharp. Я специально хочу использовать WMF, потому что это векторный файл.Добавление WMF в PDF с помощью iTextSharp
Мой файл WMF поступает с элемента управления Chart.
Код для воспроизведения очень прост.
- Создайте новый проект Windows Form.
- Добавить контроль диаграммы на 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» в качестве первых шести байтов. Но когда я делаю WMF из Adobe Illustrator, я получаю 'D7 CD C6 9A' как первые 4 байта. Последнее - то, что работает для меня с iTextSharp. –