Значения свойств элемента инфоблока в PDF

Расширяем стандартные возможности бизнес процессов битрикс.

Создадим действие которое будет выгружать значение полей элемента инфоблока в pdf файл.

В визуальный редактор бизнес процессов добавляем действие PHP код.

Открываем на редактирование и добавляем следующий код ниже.

В самом коде подключается модуль sale, форматируется время, устанавливаются шрифты, размеры и отступы.

Сохраняется файл в /upload/request_'.$ID.'.pdf' - где в переменную $ID подставляется значение id элемента инфоблока по которому запускается бизнес процесс.

В этом примере устанавливается заголовок  Заявка номер: {=Document:ID}

И сами поля со значениями:

Автор заявки: {=Document:CREATED_BY_PRINTABLE} и Номер формы:{=Document:ID}

    CModule::IncludeModule("sale");
    use Bitrix\Main\Type\DateTime;
    $date = new DateTime('{=Document:DATE_CREATE}');
    $date=$date->format("d-m-Y");
    if (!CSalePdf::isPdfAvailable()) die();
    $ID = {=Document:ID};
    $IBLOCK_ID = {=Document:IBLOCK_ID};
  
    $pdf = new CSalePdf('P', 'pt', 'A4');
    $pageWidth  = $pdf->GetPageWidth();
    $pageHeight = $pdf->GetPageHeight();
    $pdf->AddFont('Font', '', 'pt_sans-regular.ttf', true);
    $pdf->AddFont('Font', 'B', 'pt_sans-bold.ttf', true);
    $fontFamily = 'Font';
    $fontSize   = 10.5;
    $margin = array(
        'top' => 15 * 72/25.4,
        'right' => 15 * 72/25.4,
        'bottom' => 15 * 72/25.4,
        'left' => 15 * 72/25.4
    );
    $width = $pageWidth - $margin['left'] - $margin['right'];
    $pdf->SetDisplayMode(100, 'continuous');
    $pdf->SetMargins($margin['left'], $margin['top'], $margin['right']);
    $pdf->SetAutoPageBreak(true, $margin['bottom']);
    $pdf->AddPage();
    $pdf->SetFont($fontFamily, 'B', $fontSize*2);
    $pdf->Cell(0, 30, $pdf->prepareToPdf('Заявка номер: {=Document:ID}'), 0, 0, 'C');
    $pdf->Ln();
    $pdf->Ln();
    $pdf->Ln();
    $pdf->Ln();
    $pdf->SetFont($fontFamily, '', $fontSize);
    $ROW1=200;
    $Y=15;
    $pdf->Cell($ROW1, $Y, $pdf->prepareToPdf('Автор заявки:'), 0, 0, 'L');
    $pdf->MultiCell(0, $Y, $pdf->prepareToPdf('{=Document:CREATED_BY_PRINTABLE}'), 0, 'L');
    $pdf->Cell($ROW1, $Y, $pdf->prepareToPdf('Номер формы:'), 0, 0, 'L');
    $pdf->MultiCell(0, $Y, $pdf->prepareToPdf('{=Document:ID}'), 0, 'L');
    $myfile='temp.pdf';
    $pdf->Output($myfile, 'F');
    if (!copy($myfile,$_SERVER['DOCUMENT_ROOT'].'/upload/request_'.$ID.'.pdf'))
    {  }
    else{  unlink($myfile);  }

Данный пример показывает автоматически формирующегося pdf файла со значениями элемента инфоблока по которому запускается бизнес процесс битрикс.

Благодарим за внимание.



Возврат к списку

Сделать заказ

Отправьте заявку и получите квалифицированную помощь


Отправить