Перейти к содержанию
Официальный форум поддержки Simpla
  • Новые сообщения

    • Ну в общем получилось:

      Подключаем composer require tecnickcom/tcpdf

      Если нет composer, то устанавливаем его.

      В корне проекта создаём generate_pdf.php

      <?php
      
      require_once '/vendor/tecnickcom/tcpdf/tcpdf.php';
      
      
      
      
      $pdf = new TCPDF();
      
      // Вертикальный отступ после шапки
      $pdf->Ln(5);
      $pdf->SetCreator(PDF_CREATOR);
      $pdf->SetAuthor('Название сайта');
      $pdf->SetTitle('Информация о продукте');
      $pdf->SetSubject('Экспорт информации о товаре в PDF');
      $pdf->SetFont('dejavusans', '', 10, '', true);
      
      
      
      $pdf->AddPage();
      
      $pdf->SetY(15);
      
      // Логотип
      $logoFile = 'https://прямой_путь_до/logo.png';
      $logoWidth = 70;
      $pdf->Image($logoFile, $pdf->GetX(), $pdf->GetY(), $logoWidth, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);
      
      $productData = [
          'url' => $_POST['url'] ?? 'Недоступно',
      ];
      
      // Информация о компании
      $companyInfo = '<h3>Название проекта</h3>
                      <p>Сайт: <a href="ссылка">название</a></p>
                      <p>Ссылка на товар: <a href="https://прямой_путь_до/products/' . $productData['url'] . '">смотреть</a></p>';
      $pdf->writeHTMLCell(0, 0, $pdf->GetX() + $logoWidth - 10, $pdf->GetY(), $companyInfo, 0, 1, 0, true, 'L', true);
      
      // Добавление горизонтальной линии
      $pdf->SetDrawColor(0, 0, 0);
      $pdf->SetLineWidth(0.5);
      $yPosition = $pdf->GetY() + 10;
      $pdf->Line($pdf->GetX(), $yPosition, $pdf->GetPageWidth() - $pdf->GetX(), $yPosition);
      
      // Установка новой Y-позиции после линии для начала контента
      $pdf->SetY($yPosition + 5);
      
      // Извлечение данных из POST
      $productData = [
          'name' => $_POST['name'] ?? 'Недоступно',
          'description' => $_POST['description'] ?? 'Недоступно',
      ];
      
      
      // Формирование HTML-контента для PDF
      $htmlContent = "";
      
      // Имя продукта
      if (!empty($_POST['name'])) {
          // Очистка строки от нежелательных символов и сокращение до 50 символов
          $safeName = mb_substr(trim($_POST['name']), 0, 50);
          $safeName = preg_replace('/[^A-Za-z0-9А-Яа-яёЁ\s\-]/u', '', $safeName);
          $safeName = str_replace(' ', '_', $safeName);
      } else {
          $safeName = 'Недоступно';
      }
      
      // Описание
      if (!empty($productData['description'])) {
          $htmlContent .= "<p><strong>Описание:</strong> {$productData['description']}</p>";
      }
      
      // Вывод HTML-контента в PDF
      $pdf->writeHTML($htmlContent, true, false, true, false, '');
      
      // Вывод каждого изображения после текста
      $pageWidth = $pdf->GetPageWidth() - $pdf->getMargins()['left'] - $pdf->getMargins()['right']; // ширина страницы минус поля
      $imageWidth = $pageWidth * 1;
      $marginTop = 4;
      $marginBottom = 4;
      
      foreach ($_POST['images'] as $imageFilename) {
          $imageUrl = 'https://прямой_путь_до/files/originals/' . $imageFilename;
          if (@getimagesize($imageUrl)) {
              // Добавление отступа сверху
              $pdf->Ln($marginTop);
              
              // Получение размеров изображения
              $sizes = getimagesize($imageUrl);
              // Вычисление высоты изображения, сохраняя пропорции
              $imageHeight = $imageWidth * $sizes[1] / $sizes[0];
      
              // Добавление изображения и выравнивание его по центру
              $pdf->Image($imageUrl, ($pageWidth - $imageWidth) / 2, '', $imageWidth, $imageHeight, 'JPG', '', 'T', false, 300, 'C', false, false, 1, false, false, false);
              
              // Добавление отступа снизу
              $pdf->Ln($imageHeight + $marginBottom);
          }
      }
      
      // После добавления всего контента, футер на последней странице
      $pdf->lastPage();
      
      // Установка Y-позиции для футера
      $footerY = $pdf->GetPageHeight() - 24;
      $pdf->SetY($footerY);
      
      // Установка шрифта для футера
      $pdf->SetFont('dejavusans', '', 9);
      
      // Текст футера и ссылки
      $footerContent = 'Посетите наш сайт: <a href="ссылка">ссылка</a>';
      
      // Добавление футера на страницу
      $pdf->writeHTMLCell(0, 0, '', '', $footerContent, 0, 1, 0, true, 'C', true);
      
      $fileName = "SITE_экспорт_информации_о_товаре_{$safeName}.pdf";
      
      // Вывод документа
      $pdf->Output($fileName, 'I');

      Необходимо прописать относительный путь до файлов (https://прямой_путь_до) и вставить ссылки на свой проект

      И в product.tpl воткнуть форму сбора информации

      <form action="generate_pdf.php" method="post" target="_blank">
      	<input type="hidden" name="url" value="{$product->url|escape}">
          <input type="hidden" name="name" value="{$product->name|escape}">
          <input type="hidden" name="description" value="{$product->body|escape}">
      
          <!-- Для фотографий: предполагаем, что у вас есть массив $product->images с URL-адресами -->
          {foreach from=$product->images item=image}
          <input type="hidden" name="images[]" value="{$image->filename|escape}">
          {/foreach}
      
          <button type="submit">Скачать PDF</button>
      </form>

       

      Изменено пользователем Chudo
    • Названия файлов уже получает)

      В .tpl

      
      {foreach from=$product->images item=image}
      <input type="hidden" name="images[]" value="{$image->filename|escape}">
      {/foreach}

      и в php 
       

      // Добавление названий изображений
      if (!empty($_POST['images'])) {
          $htmlContent .= "<h2>Изображения товара:</h2><ul>";
          foreach ($_POST['images'] as $image) {
              $filename = basename($image); // Извлекаем имя файла из полного пути
              $htmlContent .= "<li>{$filename}</li>"; // Добавляем только имя файла в список
          }
          $htmlContent .= "</ul>";
      }

       

      Изменено пользователем Chudo
    • Как бы получить изображение в pdf, хотя бы первое, подскажете плиз)

    • generate_pdf
      <?php
      
      require_once '/vendor/tecnickcom/tcpdf/tcpdf.php'; // Путь к файлу TCPDF
      
      $productData = [
          'id' => $_POST['id'],
          'url' => $_POST['url'],
          'name' => $_POST['name'],
          // Заполните остальные данные
      ];
      
      $pdf = new TCPDF();
      $pdf->AddPage();
      $pdf->SetFont('dejavusans', '', 12);
      
      $htmlContent = "<h1>{$productData['name']}</h1>
      <p><strong>ID:</strong> {$productData['id']}</p>
                      <p><strong>URL:</strong> {$productData['url']}</p>
      
      $pdf->writeHTML($htmlContent, true, false, true, false, '');
      $pdf->Output('product_info.pdf', 'I');

      и кнопка в tpl
       

      <form action="generate_pdf.php" method="post" target="_blank">
      			<input type="hidden" name="id" value="{$product->id|escape}">
      			<input type="hidden" name="url" value="{$product->url|escape}">
      		    <input type="hidden" name="name" value="{$product->name|escape}">
      		    <button type="submit">Скачать PDF</button>
      		</form>

      Начал выводить ID, url и name поля

      Изменено пользователем Chudo
    • Создаю я значит generate_pdf.php в корне проекта

       

      <?php
      require_once '/vendor/tecnickcom/tcpdf/tcpdf.php'; // Путь к файлу TCPDF
      
      // Создание нового PDF документа
      $pdf = new TCPDF();
      
      // Добавление страницы
      $pdf->AddPage();
      
      // Установка шрифта
      $pdf->SetFont('dejavusans', '', 12);
      
      // Формирование HTML-контента
      $htmlContent = <<<EOD
      <h1>{$product['name']}</h1>
      
      EOD;
      
      // Вывод HTML-контента в PDF
      $pdf->writeHTML($htmlContent, true, false, true, false, '');
      
      // Вывод PDF
      $pdf->Output('product_info.pdf', 'I');

      И кнопку в product.tpl
       

      <a href="generate_pdf.php?product_id={$product->id}" target="_blank">Скачать PDF</a>

      В итоге данные не передаются из карточки товара =(

      Изменено пользователем Chudo
  • Новые темы

  1. Simpla CMS

    1. Новости Simpla CMS

      Официальные новости от автора Simpla CMS

      1.2т
      сообщения
    2. Предложения по развитию Simpla CMS

      Обсуждение идей и предложений по дальнейшему развитию Simpla

      534
      сообщения
    3. Общие вопросы по функционалу и дизайну

      Здесь обсуждаются общие вопросы, которые касаются CMS Simpla

      60.6т
      сообщение
    4. Готовые решения

      В этом разделе выложены готовые бесплатные решения (доработки).

      10.7т
      сообщения
    5. Безопасность

      В разделе освещаются вопросы связанные с безопасностью Simpla CMS. Уязвимости, проблемы с разделением прав и прочее

      6.8т
      сообщения
  2. Дизайн и шаблоны

    1. Бесплатные шаблоны

      В этой категории выкладываем бесплатные шаблоны.

      455
      сообщений
    2. Платные шаблоны

      В этой категории выкладываем платные шаблоны.

      1.9т
      сообщений
  3. Платные модули и услуги

    1. Платные модули и услуги

      Готовые платные модули от программистов и дизайнеров: Модули, шаблоны, доработки, программы

      сообщение
    2. Отзывы о исполнителях и заказчиках (ex. Фриланс)

      Обсуждение исполнителей и заказчиков, "черные" списки форума и всё что связанно с фрилансом

      1.4т
      сообщений
    3. Продвижение и поисковая оптимизация (SEO)

      Вопросы и платные услуги по тематике SEO

      510
      сообщений
  4. Разное

    1. 447
      сообщений
    2. Обсуждение хостингов

      Обсуждение хостинг-компаний. Название обсуждения должно быть названием хостинга.

      309
      сообщений
    3. Разные скрипты магазинов

      Обсуждение различных движков магазинов

      143
      сообщения
  • Кто в онлайне   0 пользователей, 0 анонимных, 117 гостей (Посмотреть всех)

    Зарегистрированных пользователей в онлайне нет

  • Статистика пользователей

    15116
    Пользователей
    1517
    Максимум онлайн
    Сергейиванов
    Новый пользователь
    Сергейиванов
    Регистрация
  • Новые сообщения

    • Ну в общем получилось: Подключаем composer require tecnickcom/tcpdf Если нет composer, то устанавливаем его. В корне проекта создаём generate_pdf.php <?php require_once '/vendor/tecnickcom/tcpdf/tcpdf.php'; $pdf = new TCPDF(); // Вертикальный отступ после шапки $pdf->Ln(5); $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Название сайта'); $pdf->SetTitle('Информация о продукте'); $pdf->SetSubject('Экспорт информации о товаре в PDF'); $pdf->SetFont('dejavusans', '', 10, '', true); $pdf->AddPage(); $pdf->SetY(15); // Логотип $logoFile = 'https://прямой_путь_до/logo.png'; $logoWidth = 70; $pdf->Image($logoFile, $pdf->GetX(), $pdf->GetY(), $logoWidth, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false); $productData = [ 'url' => $_POST['url'] ?? 'Недоступно', ]; // Информация о компании $companyInfo = '<h3>Название проекта</h3> <p>Сайт: <a href="ссылка">название</a></p> <p>Ссылка на товар: <a href="https://прямой_путь_до/products/' . $productData['url'] . '">смотреть</a></p>'; $pdf->writeHTMLCell(0, 0, $pdf->GetX() + $logoWidth - 10, $pdf->GetY(), $companyInfo, 0, 1, 0, true, 'L', true); // Добавление горизонтальной линии $pdf->SetDrawColor(0, 0, 0); $pdf->SetLineWidth(0.5); $yPosition = $pdf->GetY() + 10; $pdf->Line($pdf->GetX(), $yPosition, $pdf->GetPageWidth() - $pdf->GetX(), $yPosition); // Установка новой Y-позиции после линии для начала контента $pdf->SetY($yPosition + 5); // Извлечение данных из POST $productData = [ 'name' => $_POST['name'] ?? 'Недоступно', 'description' => $_POST['description'] ?? 'Недоступно', ]; // Формирование HTML-контента для PDF $htmlContent = ""; // Имя продукта if (!empty($_POST['name'])) { // Очистка строки от нежелательных символов и сокращение до 50 символов $safeName = mb_substr(trim($_POST['name']), 0, 50); $safeName = preg_replace('/[^A-Za-z0-9А-Яа-яёЁ\s\-]/u', '', $safeName); $safeName = str_replace(' ', '_', $safeName); } else { $safeName = 'Недоступно'; } // Описание if (!empty($productData['description'])) { $htmlContent .= "<p><strong>Описание:</strong> {$productData['description']}</p>"; } // Вывод HTML-контента в PDF $pdf->writeHTML($htmlContent, true, false, true, false, ''); // Вывод каждого изображения после текста $pageWidth = $pdf->GetPageWidth() - $pdf->getMargins()['left'] - $pdf->getMargins()['right']; // ширина страницы минус поля $imageWidth = $pageWidth * 1; $marginTop = 4; $marginBottom = 4; foreach ($_POST['images'] as $imageFilename) { $imageUrl = 'https://прямой_путь_до/files/originals/' . $imageFilename; if (@getimagesize($imageUrl)) { // Добавление отступа сверху $pdf->Ln($marginTop); // Получение размеров изображения $sizes = getimagesize($imageUrl); // Вычисление высоты изображения, сохраняя пропорции $imageHeight = $imageWidth * $sizes[1] / $sizes[0]; // Добавление изображения и выравнивание его по центру $pdf->Image($imageUrl, ($pageWidth - $imageWidth) / 2, '', $imageWidth, $imageHeight, 'JPG', '', 'T', false, 300, 'C', false, false, 1, false, false, false); // Добавление отступа снизу $pdf->Ln($imageHeight + $marginBottom); } } // После добавления всего контента, футер на последней странице $pdf->lastPage(); // Установка Y-позиции для футера $footerY = $pdf->GetPageHeight() - 24; $pdf->SetY($footerY); // Установка шрифта для футера $pdf->SetFont('dejavusans', '', 9); // Текст футера и ссылки $footerContent = 'Посетите наш сайт: <a href="ссылка">ссылка</a>'; // Добавление футера на страницу $pdf->writeHTMLCell(0, 0, '', '', $footerContent, 0, 1, 0, true, 'C', true); $fileName = "SITE_экспорт_информации_о_товаре_{$safeName}.pdf"; // Вывод документа $pdf->Output($fileName, 'I'); Необходимо прописать относительный путь до файлов (https://прямой_путь_до) и вставить ссылки на свой проект И в product.tpl воткнуть форму сбора информации <form action="generate_pdf.php" method="post" target="_blank"> <input type="hidden" name="url" value="{$product->url|escape}"> <input type="hidden" name="name" value="{$product->name|escape}"> <input type="hidden" name="description" value="{$product->body|escape}"> <!-- Для фотографий: предполагаем, что у вас есть массив $product->images с URL-адресами --> {foreach from=$product->images item=image} <input type="hidden" name="images[]" value="{$image->filename|escape}"> {/foreach} <button type="submit">Скачать PDF</button> </form>  
    • Названия файлов уже получает) В .tpl {foreach from=$product->images item=image} <input type="hidden" name="images[]" value="{$image->filename|escape}"> {/foreach} и в php    // Добавление названий изображений if (!empty($_POST['images'])) { $htmlContent .= "<h2>Изображения товара:</h2><ul>"; foreach ($_POST['images'] as $image) { $filename = basename($image); // Извлекаем имя файла из полного пути $htmlContent .= "<li>{$filename}</li>"; // Добавляем только имя файла в список } $htmlContent .= "</ul>"; }  
    • Как бы получить изображение в pdf, хотя бы первое, подскажете плиз)
    • generate_pdf <?php require_once '/vendor/tecnickcom/tcpdf/tcpdf.php'; // Путь к файлу TCPDF $productData = [ 'id' => $_POST['id'], 'url' => $_POST['url'], 'name' => $_POST['name'], // Заполните остальные данные ]; $pdf = new TCPDF(); $pdf->AddPage(); $pdf->SetFont('dejavusans', '', 12); $htmlContent = "<h1>{$productData['name']}</h1> <p><strong>ID:</strong> {$productData['id']}</p> <p><strong>URL:</strong> {$productData['url']}</p> $pdf->writeHTML($htmlContent, true, false, true, false, ''); $pdf->Output('product_info.pdf', 'I'); и кнопка в tpl   <form action="generate_pdf.php" method="post" target="_blank"> <input type="hidden" name="id" value="{$product->id|escape}"> <input type="hidden" name="url" value="{$product->url|escape}"> <input type="hidden" name="name" value="{$product->name|escape}"> <button type="submit">Скачать PDF</button> </form> Начал выводить ID, url и name поля
    • Создаю я значит generate_pdf.php в корне проекта   <?php require_once '/vendor/tecnickcom/tcpdf/tcpdf.php'; // Путь к файлу TCPDF // Создание нового PDF документа $pdf = new TCPDF(); // Добавление страницы $pdf->AddPage(); // Установка шрифта $pdf->SetFont('dejavusans', '', 12); // Формирование HTML-контента $htmlContent = <<<EOD <h1>{$product['name']}</h1> EOD; // Вывод HTML-контента в PDF $pdf->writeHTML($htmlContent, true, false, true, false, ''); // Вывод PDF $pdf->Output('product_info.pdf', 'I'); И кнопку в product.tpl   <a href="generate_pdf.php?product_id={$product->id}" target="_blank">Скачать PDF</a> В итоге данные не передаются из карточки товара =(
  • Статистика форума

    • Всего тем
      12312
    • Всего сообщений
      95834
×
×
  • Создать...