Перейти к содержимому


Генерация файла (шаблон) и его сохранение в базе


Сообщений в теме: 10

#1 plotnikov

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений

Отправлено 24 Июнь 2017 - 14:27

2 вопроса:

1. Необходимо вычислением распечатать файл (шаблон печати) и его результат (pdf файл) сохранить в поле типа Файл. Натолкните на мысли, как это сделать?

2. Как скопировать файл из поля одной таблицы в поле другой таблицы? Я ранее пытался решить эту задачу, но что-то пошло не так. Есть у кого готовое решение или идеи?

#2 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 24 Июнь 2017 - 15:42

Просмотр сообщенияplotnikov (24 Июнь 2017 - 14:27) писал:

2 вопроса:

1. Необходимо вычислением распечатать файл (шаблон печати) и его результат (pdf файл) сохранить в поле типа Файл. Натолкните на мысли, как это сделать?

2. Как скопировать файл из поля одной таблицы в поле другой таблицы? Я ранее пытался решить эту задачу, но что-то пошло не так. Есть у кого готовое решение или идеи?

Ну, как то так
$body_html = "";
/**********Получим данные по той записи, которую нужно распечатать из таблицы с ID=XXXX***************/
$line_record = data_select_array(XXXX, "`id`=".$line['id']);
/*************Начитаем шаблон. Предположим, что его ID=111**************/
$form = sql_select_array(FORMS_TABLE, "id=111");
$body_html = form_template($form, $line_record, 'body_form');
include($_SERVER['DOCUMENT_ROOT']."/include/mpdf/mpdf.php");
$mpdf = new mPDF('utf-8', 'A4', '8', '', 10, 10, 7, 7, 10, 10); ///задаем формат, отступы и.т.д.
			$mpdf->charset_in = 'utf-8';
			$mpdf->WriteHTML($body_html);
			$PDF_file_str = $mpdf->Output('', 'S'); //Получим строку с PDF
			//Если нужно вывести на монитор для печати, то
			//$PDF_file = $mpdf->Output('', 'I'); //Вывод в браузер
/****************Запишем в нужное поле нужной таблицы************/
$file_name = 'НУЖНОЕ ИМЯ.pdf';
$need_field_id = 123;// где 123 - ID поля, куда пишем файл
$need_line_id = $line['id']; //ID записи, куда пишем файл

save_data_file($need_field_id,$need_line_id,$file_name,$PDF_file_str);
/********Теперь уже не помню - нужно или нет делать прямую запись имени файла. Если нужно, то код ниже*********/
$line['Имя поля с файлом'] = $file_name;
Что касается копирования из одного поля одной таблицы в другую таблицу, то....
Сначала получите строковое значение нужного файла с помощью get_file_content() и get_file_path()
Затем запишите его с помощью save_data_file См. код выше

Сообщение отредактировал maksn: 24 Июнь 2017 - 15:48

"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 plotnikov

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений

Отправлено 24 Июнь 2017 - 16:15

maksn, очень круто, спасибо! Вечером буду разбираться.

get_file_content() и get_file_path()
а где-то подробнее про эти функции можно почитать?

Сообщение отредактировал plotnikov: 24 Июнь 2017 - 16:16


#4 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 24 Июнь 2017 - 16:56

Просмотр сообщенияplotnikov (24 Июнь 2017 - 16:15) писал:

maksn, очень круто, спасибо! Вечером буду разбираться.

get_file_content() и get_file_path()
а где-то подробнее про эти функции можно почитать?

Упс... Немного перепутал название стандартной функции PHP file_get_contents и SQL функции get_file_content от Oracle

Чтобы прочитать файл из нужной записи нужной таблицы,

// XYZ - это ID поля, где храниться файл
//$line_id - ID той записи, откуда берем файд
//$file_name - собственно, имя файла, записаного в поле

$file_str = file_get_contents(get_file_path(XYZ, $line_id, $file_name));	
Функция get_file_path() описана в functions1.php, помоему. Это функция КБ. Читает реальный путь к файлу по ID поля, ID записи и имени файла.
file_get_contents - стандартная PHP функция. Читает содержимое файла

Переменную $file_str пишем туда, куда нужно с помощью save_data_file

Сообщение отредактировал maksn: 24 Июнь 2017 - 17:15

"...Сижу, паяю. CRM починяю..."
Мои разработки

#5 plotnikov

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений

Отправлено 24 Июнь 2017 - 19:33

А я все надеялся, что это "нестандартная функция".
file_get_contents - выключена на SaaS версии КБ... cURL как альтернатива.

Еще раз спасибо, буду пробовать.

Сообщение отредактировал plotnikov: 24 Июнь 2017 - 19:36


#6 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 24 Июнь 2017 - 21:24

Просмотр сообщенияplotnikov (24 Июнь 2017 - 19:33) писал:


file_get_contents - выключена на SaaS версии КБ... cURL как альтернатива.

Еще раз спасибо, буду пробовать.
Да ничего она не выключена, для локальных файлов по крайней мере. Более того, она используется ядром
Вы же из таблиц КБ будете читать, а не со сторонних ресурсов
"...Сижу, паяю. CRM починяю..."
Мои разработки

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Июнь 2017 - 12:36

Цитата

file_get_contents - выключена на SaaS версии КБ... cURL как альтернатива

Не путайте чтение по локальному пути (работает всегда) и чтение удаленных файлов по http/ftp/... - вот это зависит от настроек сервера и поэтому не рекомендуется делать через file_get_contents.

#8 plotnikov

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений

Отправлено 30 Июнь 2017 - 07:08

Спасибо за ответы! Хорошего дня!

#9 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 28 Июль 2017 - 10:37

Привет )) попробовал код, но у меня не читаются header footer и стили из шапки, как то можно решить ?

#10 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 28 Июль 2017 - 21:50

Просмотр сообщенияDinak (28 Июль 2017 - 10:37) писал:

Привет )) попробовал код, но у меня не читаются header footer и стили из шапки, как то можно решить ?
А том коде никто и не читал ни header, ни footer.
Если нужно, то добавьте

$header_html = form_template($form, $line_record, 'head_form');
$footer_html = form_template($form, $line_record, 'foot_form');
"...Сижу, паяю. CRM починяю..."
Мои разработки

#11 maksbazhin

    Активный участник

  • Пользователи
  • PipPipPip
  • 62 сообщений
  • Пол:Мужчина

Отправлено 29 Август 2018 - 23:47

$mpdf =new mPDF('utf-8','A4','8','',10,10,7,7,10,10);///задаем формат, отступы и.т.д.
ошибка:
Uncaught Error: Class 'mPDF' not found in /var/www/html/clientbase/include/functions1.php(633) : eval()'d code:8 Stack trace: #0 /var/www/html/clientbase/include/functions1.php(633): eval() #1 /var/www/html/clientbase/user_button.php(74): calc_line(Array, Array, Array, Array) #2 {main} thrown
версия локальная 2.11 debian php7.0
проблема в настройках сервера?





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных