Формирование pdf в Laravel + dompdf

Сразу к теме.

Необходимо сформировать pdf файл, в котором будет повернутый текст. Используется библиотека dompdf (возможно есть другие хорошие? подскажите)

Данная библиотека не поддерживает css3, соответственно свойство writing-mode и display:flex ей не знакомы.

Значит пытаюсь делать на таблице. Пробовал данным образом

<td rowspan="2" ><p class="vertical-rl" style="border:solid; width:150;">№ по порядку</p></td>

.vertical-rl {
        text-align: center;
        transform: rotate(-90deg);
    }

Но при этом невозможно установить ширину ячейки, так как она выставляется по ширине тега <p> до поворота.

Нашел вот такой код, в песочнице работает, но пдфку выдает кривую (Пробовал пофиксить, никак не получается).

<table>
  <tr>
    <th><div></div></th>
    <th><div><span>Tickets Included</span></div></th>
    <th><div><span>Best Seats</span></div></th>
    <th><div><span>Parking at the Firehall Theatre</span></div></th>
    <th><div><span>Tax Receipt Over Ticket Value</span></div></th>
    <th><div><span>Repeat Visits</span></div></th>
    <th><div><span>Voting Rights at the AGM</span></div></th>
    <th><div><span>Playbill Listing</span></div></th>
    <th><div><span>Page to Stage Events</span></div></th>
    <th><div><span>Discounted Patron Rates for Additional Tickets</span></div></th>
    <th><div><span>Complimentary Beverage on Opening Night</span></div></th>
    <th><div><span>Front of the Line Access</span></div></th>
    <th><div><span>Brochure Listing</span></div></th>
    <th><div><span>Parking at the Springer Theatre</span></div></th>
    <th><div><span>Invitation to First Day of Rehearsals</span></div></th>
    <th><div><span>Monthly 'Insider's Group'</span></div></th>
    <th><div><span>End of Season Dinner</span></div></th>
  </tr>
  <tr><td>Visionary<br>($10,000+)</td><td>30</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td></tr>
  <tr><td>Champion<br>($4,000-9,995)</td><td>20</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td></tr>
  <tr><td>Guardian<br>($1,400-3,995)</td><td>16</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td></td></tr>
  <tr><td>Benefactor<br>($690-1,399)</td><td>10</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td></td><td></td><td></td><td></td></tr>
  <tr><td>Partner<br>($490-685)</td><td>7</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
  <tr><td>Supporter<br>($390-485)</td><td>5</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</table>


table, tr, td, th {
  border: 1px solid;
  border-collapse: collapse;
  text-align: center;
}

table {
  width: 100%;
}

th {
  padding: .5em 0;
}

div {
  overflow: hidden;
  line-height: 1.5;
  width: 1.5em;
  margin: auto;
}

span {
  display: inline-block;
  white-space: nowrap;
  transform-origin: center;
  transform: rotate(-90deg);
}

span:before {
  content: "";
  padding-top: 100%;
  float: left;
}

Нашел способ, где генерируют картинку из текста и вставляют, вроде дело сдвинулось с мертвого места, но нет - не поддерживается кириллица.

  • imagestring() - все четко крутит и нормально отображает текст, но кириллицы нет

  • imagettftext() - нужен кастомный фонт, нигде не нашел, попытался загрузить обычный шрифт, не принимает

  • imageloadfont() так же пытался загрузить шрифт - ни в какую не хочет. Файлик положил рядом с контроллером, который генерит картинку.

Подскажите пожалуйста, как все таки повернуть текст и положить его в пдфку?


(Ответ)

Ребята, кто столкнулся с данной проблемой, не мучайте dompdf, он не умеет. Я в итоге поставил библиотеку mpdf, которая под php, но она может пережевать view. Я использовал WriteHTML(view("моя вьюшка"));


Ответы (0 шт):