Вставка изображения в ячейку таблицы в PDF

Подход Aspose.PDF

Согласно нашей DOM (Модель Объектов Документа) документ состоит из страниц. Страница содержит один или несколько абзацев, и абзац может быть изображением, текстом, полем формы, заголовком, плавающим блоком, графиком, вложением или таблицей. Таблица, в свою очередь, содержит коллекцию строк, и каждая строка содержит коллекцию ячеек. Ячейка — это коллекция абзацев.

Таким образом, в соответствии с нашей моделью DOM ячейка таблицы может содержать любой из перечисленных выше элементов абзаца, включая изображения.

Понимание ширины ячейки

Необходимо четко понимать ширину ячейки, особенно при отображении изображения в ячейке таблицы, чтобы ширина изображения была зафиксирована на ширине ячейки и отображалась правильно. Ширина изображения может быть установлена с помощью метода setFixedWidth() класса Image.

Пример кода


 String dataDir = "C:\\temp\\";

// Создаем объект Document, вызывая его пустой конструктор

Document pdfDocument = new Document();

// Создаем страницу в объекте Document

com.aspose.pdf.Page page = pdfDocument.getPages().add();



// Создаем объект таблицы

Table table = new Table();

// Добавляем таблицу в коллекцию абзацев на нужной странице

page.getParagraphs().add(table);

// Устанавливаем ширину столбцов таблицы

table.setColumnWidths("100 100 120");



// Устанавливаем границу таблицы, используя другой объект BorderInfo

table.setDefaultCellBorder(new BorderInfo(BorderSide.All, 1F));



// Создаем объект изображения на странице

com.aspose.pdf.Image img1 = new com.aspose.pdf.Image();

// Устанавливаем путь к файлу изображения

img1.setFile(dataDir + "logo.jpg");



img1.setFixWidth(100);

img1.setFixHeight(100);

// Создаем строки в таблице, а затем ячейки в строках

Row row1 = table.getRows().add();

row1.getCells().add("Пример текста в ячейке");

// Добавляем ячейку, содержащую изображение

Cell cell2 = row1.getCells().add();

// Добавляем изображение в ячейку таблицы

cell2.getParagraphs().add(img1);



row1.getCells().add("Предыдущая ячейка с изображением");

row1.getCells().get_Item(2).setVerticalAlignment(VerticalAlignment.Center);



// Сохраняем документ

pdfDocument.save(dataDir + "Image_in_Cell.pdf");