Как рисовать диагональные линии с помощью SCRIPT в PDF

Я использую пакет laravel-dompdf для создания pdf.

Я мог бы нарисовать диагональную линию, используя rotate CSS. Как видите, в моем документе много диагональных линий, поэтому я хочу нарисовать линию скриптами.

Контроллер

public function downloadPDF () {
    $pdf = PDF::loadView('test', [
        'users' => $users //$users is array
    ])->setPaper('a4', 'portrait');
    return $pdf->download("test.pdf");
}

Просмотр(test.blade.php)

<!DOCTYPE html>
<html>
...
<body>
<table>
    <tbody>
        <tr>
            <th>{{-- Draw diagonal line here --}}</th>
            <th>Name</th>
            <th>TEL</th>
        </tr>
        @foreach($users as $key=>$user)
            <tr>
                <td>{{ $key }}</td>
                <td>{{ $user['name'] }}</td>
                <td>{{ $user['tel'] }}</td>
            </tr>
        @endforeach
    </tbody>
</table>    
</body>
</html>

Ниже приведен пример формата pdf.

Как рисовать диагональные линии с помощью скрипта?

Пожалуйста, поделитесь более подробной информацией, например кодом, который вы используете в настоящее время.

Nico Haase 02.02.2023 15:53

stackoverflow.com/questions/15727675/… помогает?

Nico Haase 02.02.2023 16:15

или иначе stackoverflow.com/questions/28425574/…

Nanne 02.02.2023 16:15

@NicoHaase Некоторые CSS не работают в dompdf.

bluestar0505 02.02.2023 16:17

Не стесняйтесь добавлять все пояснения к вашему вопросу, редактируя его. Вы пытались использовать какой-либо CSS до сих пор?

Nico Haase 02.02.2023 16:19

@NicoHaase Я пытался. Это то, что могут почувствовать только люди, которые использовали laravel-dompdf .

bluestar0505 02.02.2023 16:28

dompdf должен нормально поддерживать rotate, поэтому «Некоторые CSS не работают в dompdf» может быть правдой, но здесь неуместно? Покажите, что вы пробовали, пожалуйста. (Тем не менее, dompdf также является древним, он действительно поддерживает только CSS 2.1 с небольшим количеством CSS3 и HTML4 вместо HJTML5, технологии более 20 лет назад).

Mike 'Pomax' Kamermans 02.02.2023 18:06

@Mike'Pomax'Kamermans Вы правы. rotateработает. Как видите, я хочу нарисовать линию скриптом, потому что в моем документе много диагональных линий.

bluestar0505 02.02.2023 18:28

@NicoHaase Спасибо. rotate работаем над dompdf. Как видите, в моем документе много диагональных линий, поэтому я хочу нарисовать линию скриптами.

bluestar0505 02.02.2023 18:34

Вы не можете, потому что вы не можете «рисовать линии» в HTML, вам нужно либо создать элемент и использовать CSS, чтобы он выглядел как линия (например, граница и преобразование), либо вы создаете элемент холста и рисуете линию вместо этого. Не знаю, поддерживает ли dompdf холст, это вам нужно проверить.

Mike 'Pomax' Kamermans 02.02.2023 19:26

@Mike'Pomax'Kamermans Я нашел подсказку. Я буду использовать Dompdf\Adapter\CPDF::line() в лезвии.

bluestar0505 02.02.2023 19:28

Пожалуйста, добавьте все попытки к вашему вопросу, отредактировав его. Вы не предоставили общий доступ ни к одному CSS, который используете

Nico Haase 02.02.2023 19:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
12
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я мог бы использовать функцию line класса Dompdf\Adapter\CPDF.

В качестве интерфейса рендеринга PDF CPDF предоставьте возможность включения php-скрипта на лезвии, используя set_option("enable_php", true)

линейная функция

line($x1, $y1, $x2, $y2, $color, $width, $style = [])

Контроллер

public function downloadPDF () {
    $pdf = PDF::getDomPDF()->set_option("enable_php", true)->loadView('test', [
        'users' => $users //$users is array
    ])->setPaper('a4', 'portrait');
    return $pdf->download("test.pdf");
}
<script type = "text/php">
    if (isset($pdf)) {
        $pdf->page_script('
            $pdf->line(100, 100, 200, 200, array(0,0,0), 0.7);
        ');
    }
</script>

Другие вопросы по теме