Генерация DOC файла с картинками C#

131
08 мая 2019, 00:30

Есть Desctop приложение на WPF. Я генерирую картинки штрих-кодов. Как мне создать *.doc файл и при генерации Image файла добавлять в него эти штрих-коды? Картинки штрих-кодов удобно помещаются в документ по 2 на строчку.

Нужно примерно следующее:

  1. Добавляем картинку
  2. Добавляем 10 пробелов
  3. Добавляем вторую картинку
  4. Переходим на новую строчку и пока есть элементы заново с первого пункта

Какие есть nuget пакеты для генерации Doc где можно было бы размещать в таком вот порядке картинки?

Код генерации штрих-кодов:

private void SaveBarcodes()
{
    var barcode = new BarcodeLib.Barcode();
    foreach (var item in items)
    {
        Image image = barcode.Encode(BarcodeLib.TYPE.CODE128B, item.Barcode.ToString(), Color.Black, Color.White, 290, 120);
        // Тут нужно добавлять полученную картинку в документ.
        // var doc
    }
    // После того как документ сгенерируется, сохраняем его.
}
Answer 1

Сделал сохранение в PDF файл с помощью библиотеки iTextSharp:

private void OnSaveSelectedCells()
{
    var barcode = new BarcodeLib.Barcode();
    var saveFileDialog = new SaveFileDialog { FileName = "Barcodes", Filter = "PDF file (*.pdf)|*.pdf" };
    if (saveFileDialog.ShowDialog() == true)
    {
        var document = new Document();
        var fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
        PdfWriter.GetInstance(document, fileStream);
        // Для отображения русских букв
        var baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        var font = new iTextSharp.text.Font(baseFont, 14);
        document.Open();
        foreach (var item in items)
        {
            var imageBarcode = barcode.Encode(BarcodeLib.TYPE.CODE128B, item.Barcode, Color.Black, Color.White, 290, 120);
            var image = Image.GetInstance(imageBarcode, ImageFormat.Jpeg);
            document.Add(new Paragraph(item.Description, font));
            document.Add(image);
        }
        document.Close();
        // Открытие созданного файла
        System.Diagnostics.Process.Start(saveFileDialog.FileName);
    }
}
READ ALSO
Отслеживать обращение к классу

Отслеживать обращение к классу

У меня есть класс - api для работы с sql, иногда проседает интернет, и приходится повышать время прерывания с 50 мс до 75-90Я хочу сделать, так чтобы...

183
Приведение типов с помощью GetType()

Приведение типов с помощью GetType()

Как совершить приведение типов, если конечный тип заранее неизвестен?

146
Подключение к базе данных без клиента

Подключение к базе данных без клиента

 Подскажите пожалуйста в следующем вопросе - нужно ли устанавливать Oracle Client на мою Windows машину для работы с БД и разработки клиентского...

150
Как выйти на новый уровень в разработке C# [закрыт]

Как выйти на новый уровень в разработке C# [закрыт]

Может я немного не туда пишу, но все жеЯ учусь на 3 курсе универа, учат так себе, куча ненужных предметов было, впрочем как и везде наверное

155