Как преобразовать/добавить .wmf в .pdf

У меня есть этот пример кода, но он не работает. Мой вопрос заключается в том, как преобразовать/добавить файл .wmf в PDF.

private void CreatePDF()
    {
        Document pdfDoc = new Document();
        PdfWriter.GetInstance(pdfDoc, new FileStream(@"path.pdf", FileMode.Create));

        byte[] b =  File.ReadAllBytes(@"path.wmf");

        iTextSharp.text.Image img1 = new ImgWMF(b);
        pdfDoc.Add(img1);
        pdfDoc.Close();
    }

Я пытаюсь прочитать байты из .wmf и создать с ним изображение, пытаясь впоследствии добавить его в создатель PDF.

Я не могу прочитать байты таким образом, я думаю. Любая помощь приветствуется.

С уважением, ЧекаЗ.


person ChekaZ    schedule 15.11.2016    source источник


Ответы (1)


Вам не нужно использовать класс ImgWMF; и ваш код не работает, потому что вы пропустили шаг: вы не открываете файл pdfDoc.

Я не разработчик С#, но вот как я (пытаюсь) исправить ваш код:

Document pdfDoc = new Document();
PdfWriter.GetInstance(pdfDoc, new FileStream(@"path.pdf", FileMode.Create));
pdfDoc.Open();
iTextSharp.text.Image img1 = ImgWMF.GetInstance(@"path.wmf");
pdfDoc.Add(img1);
pdfDoc.Close();

Метод GetInstance() проверяет файл изображения, который вы передаете в качестве параметра. Если это не сработает, поделитесь возникшим исключением.

Обратите внимание, что ваша PDF-страница будет иметь размер A4, и ваше изображение может не поместиться (или страница может быть слишком большой). В этом случае вы должны сначала создать свое изображение и создать свой PDF-файл следующим образом:

iTextSharp.text.Image img1 = ImgWMF.GetInstance(@"path.wmf");
Document pdfDoc = new Document(img1);
PdfWriter.GetInstance(pdfDoc, new FileStream(@"path.pdf", FileMode.Create));
pdfDoc.Open();
img1.SetAbsolutePosition(0, 0);
pdfDoc.Add(img1);
pdfDoc.Close();
person Bruno Lowagie    schedule 15.11.2016
comment
Большое спасибо, немного отредактировал ваш ответ, теперь он работает отлично! С уважением, ЧекаЗ. - person ChekaZ; 15.11.2016