Задать вопрос
Elena0394
@Elena0394

Как поставить картинку под текст?

Мучаюсь уже часов 5. Нужно с позиционировать картинку под текстом. Делаю так

use PhpOffice\PhpWord\PhpWord;

$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText('Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam error doloribus doloremque voluptate natus, numquam laudantium ducimus cupiditate, cumque nulla fugit consectetur ipsam nobis illum enim. Rerum, nulla. Laborum, tempora?');

$section->addImage(
  './img/test.png',
  array(
    'width' => 100,
    'height' => 100,
    'marginTop' => -100,
    'wrappingStyle' => 'behind'
  )
);


в доке указано, чтоб картинка была под текстом, использовать параметр behind, я добавила. Ничего не получается. Выходит так
683c588bc75bd985749265.png
Вроде стандартный функционал, чего она в PhpWord не работает, не понятно.

Вот руками сделала в ворде как нужно
683c5acd12e61366032490.png
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
Типа такого?
683c69607d63c316950911.png
Код
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpWord\PhpWord;

$phpWord = new PhpWord();
$section = $phpWord->addSection();

// 1. Сначала добавляем изображение как фон (первый слой)
$section->addImage(
    __DIR__ . '/img/test.png',
    [
        'width' => 100, // Ширина изображения
        'height' => 100, // Высота изображения
        'wrappingStyle' => 'behind', // Ключевой параметр: изображение становится фоном
        'positioning' => 'relative', // Относительное позиционирование
        'posHorizontal' => \PhpOffice\PhpWord\Style\Image::POSITION_HORIZONTAL_CENTER,
        'posVertical' => \PhpOffice\PhpWord\Style\Image::POSITION_VERTICAL_TOP,
    ]
);

// 2. Затем добавляем текст (второй слой)
$section->addText(
    'Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam error doloribus doloremque voluptate natus, numquam laudantium ducimus cupiditate, cumque nulla fugit consectetur ipsam nobis illum enim. Rerum, nulla. Laborum, tempora?',
    [
        'name' => 'Arial',
    ],
    [
        //'alignment' => 'center', // Выравнивание текста по центру
        'spaceAfter' => 0,
    ]
);

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('layered.docx');
echo "Текст наложен на изображение.";
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы