Урок по выводу данных в формате PDF на PHP


Содержание материала:

Генерация PDF из данных MySQL с использованием FPDF

В этой статье мы считаем данные из таблицы MySQL с помощью PHP. Затем используем библиотеку FPDF для генерации PDF.

Генерация PDF из табличных данных MySQL с использованием библиотеки FPDF и PHP

Есть таблица БД MySQL. Мы считаем эти данные в массив и передадим их в функцию FPDF для генерации кода.

DBController.php

Этот файл содержит функции для установления соединения с базой данных и считывания информации из нее. Функция runQuery() считывает данные из таблицы и возвращает результаты, пригодные для создания отчета в формате PDF.

SQL-скрипт

Выполните приведенный ниже SQL-код для создания таблицы toy.

Генерация PDF-отчета из данных MySQL с использованием FPDF

На скриншоте, приведенном ниже, показан результат работы программы: выведенный список значений из базы данных с кнопкой «Generate PDF». При ее нажатии вызывается библиотека FPDF, которая используется для создания отчета в формате PDF.

Данная публикация представляет собой перевод статьи « Generate PDF from MySQL Data using FPDF » , подготовленной дружной командой проекта Интернет-технологии.ру

Показать файлы PDF в браузере пользователей через PHP / Perl

Я хочу показать своим пользователям файлы PDF. Причина, по которой я использую cgi для показа pdf, – это то, что я хочу отслеживать клики для pdf и скрывать реальное местоположение сохраненного pdf.

Я искал в Интернете и только нашел, как показать диалог сохранения пользователям и создать pdf-файл, а не показывать файлы пользователям.

То, что я хотел, это показать пользователям мои pdf-файлы, а не создавать или загружать PDF-файлы. Вот что я получил из официальной документации php:

Также мой Perl-код google-search-result:

если вы делаете это на рубине, скажите мне это. Но я не уверен, поддерживает ли мой сервер рельсы.

Извините, если мой код слишком далеко от метода, чтобы показать pdf, так как я ничего не знаю о обработке PDF и о том, как реализовать эту проблему.

Предположим, что у пользователей есть подключаемый модуль Adobe Reader. Итак, как исправить мою проблему?

edit : Я хочу показать простой файл PDF. Моя основная цель: отслеживать мои pdf-файлы и использовать некоторые модные URL-адреса.

edit : Вот мой основной php-код:

edit : Теперь код работает. Но индикатор выполнения загрузки (на плагине Adobe Reader X) не появляется. Зачем? Кто-нибудь может мне помочь? Вот мой основной код:

edit : Все мои проблемы решены. Вот окончательный код:

Я предполагаю, что вы хотите, чтобы PDF отображался в браузере, а не форсировал загрузку. Если это так, попробуйте настроить заголовок Content-Disposition со значением inline .

Также помните, что это также будет зависеть от настроек браузера – некоторые браузеры могут быть настроены так, чтобы всегда загружать PDF-файлы или открывать их в другом приложении (например, Adobe Reader)

Протестировано и отлично работает. Если вы хотите, чтобы файл загружался, замените

Вы можете изменить рендеринг PDF, такой как xpdf, или показать, чтобы отобразить графическое изображение на вашем сервере, а затем доставить изображение пользователю. Это то, как Google быстро просматривает PDF-файлы, они визуализируют его локально, а затем доставляют изображения пользователю. Нет загруженного PDF-файла, и источник довольно хорошо скрыт. ��

Самый безопасный способ отображения PDF-файла вместо загрузки, кажется, встраивает его с помощью object или элемента iframe . Существуют также сторонние решения, такие как Google Viewer Google.

См. Лучший способ вставки PDF в HTML для обзора.

Также есть DoPDF , Java-браузер In-browser PDF. Я не могу говорить о его качестве, но он выглядит интересным.

Генерация PDF на PHP с использованием TCPDF

В предыдущей статье я писал про то, как генерировать PDF-файл на PHP с использованием библиотеки PDFLib. Однако, данная библиотека в пакет Denwer не входит. Установить данную библиотеку под Windows и более-менее свежую версию PHP сложно. Так как компилировать через Visual Studio весьма сомнительное и неудобное решение. Вдобавок, в бесплатной версии PDFLib нет возможности редактировать PDF-файл. Поэтому в этой статье я расскажу, как генерировать PDF на PHP с использованием TCPDF.

Первым делом, необходимо скачать архив со всеми файлами TCPDF: http://sourceforge.net/projects/tcpdf/files/. Данный архив извлеките в корень своего сайта.

Теперь привожу код, в котором происходит генерация PDF на PHP с использованием TCPDF:

SetMargins(20, 30, 20);
$pdf->AddPage(); // Добавляем страницу
$pdf->SetXY(20, 50); // Установка текущей точки (в мм)
$pdf->SetDrawColor(100, 100, 0); // Установка цвета (RGB)
$pdf->SetTextColor(200, 0, 0); // Установка цвета текста (RGB)
/* Выводим надпись.
— Ширина 30 мм
— Высота 10 мм
— Текст «Hello, World»
*/
$pdf->Cell(30, 10, ‘Hello, World!’);
$pdf->Output(‘test.pdf’); // Выводим в браузер
?>

В результате выполнения скрипта у нас откроется PDF-файл, в котором будет надпись «Hello World«.

Возможностей у TCPDF очень много. В данном коде я просто показал пример использования, а чтобы применять серьёзно данную библиотеку придётся изучить документацию: http://www.tcpdf.org/doc/.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Топ-пост этого месяца:  Как набрать много подписчиков в Instagram Советы от IM.

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 8 ):

    А можно ли сделать так, чтобы методом post в php скрипт, который вы приводите в статье передавались и сразу же отображались в обозначеном месте?

    Можно. $some = $_POST[«some»]; Далее эту переменную можете размещать в PDF-файле.

    а если pdf документ уже создан отдельно и содержит напечатанную таблицу, можно ли туда в нее вписать?

    Читайте документацию по TCPDF.

    У Вас опечатка. В Комментариях к коду написано ширина 40мм, а в коде 30

    Созданные файлы не открываются FoxitReaderом. Выдаёт ошибку: Format Error: Not a PDF or corrupted. Все другие PDF файлы открываются нормально.

    Доброго времени суток! Михаил, подскажите, пожалуйста. Сделал генерацию pdf страницы с помощью tcpdf, на денвере все нормально генерируется, заливаю на хостинг, не хочет, браузер пишет: сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится. Заранее благодарю!

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    Генерация счета на оплату PDF PHP

    С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf – это конвертер HTML в PDF который поддерживает CSS, атрибуты style и другие.

    • Поддерживает большинство свойств CSS 2.1.
    • Поддерживает сложные таблицы, включая индивидуальный стили ячеек.
    • Поддержка изображений gif, png с прозрачностью, bmp и jpeg.
    • PHP => 5.3 с установленными расширениями DOM, GD, MBString, php-font-lib, php-svg-lib.

    Проект на GitHub.
    Класс с установленным кириллическим шрифтом Arial – dompdf.zip

    Для примера сделаем счет на оплату:

    Для удобства сформируем массив товаров по которому скрипт выведет таблицу и посчитает итоговую сумму и НДС.

    Также понадобятся функции для форматирования цен и вывода суммы прописью.

    Далее нужно сверстать счет в обычном HTML с CSS.

    Некоторые замечания:

    • Адреса картинок в должны быть указаны относительно сервера.
    • У таблиц не получится задать ширину колонок тегом .

    Создание PDF-файлов с помощью PHP

    PDF-файлы вполне могут быть лучшим форматом для распространения документов в Интернете. В сегодняшнем учебнике я покажу вам, как вы можете создавать PDF-файлы с помощью PHP. Давай сделаем это!

    Начнем

    Существует несколько методов, которые вы можете использовать для создания PDF-файлов с помощью PHP. Вы можете использовать библиотеку PDFlib, но это довольно дорого, по крайней мере, для коммерческой работы. Сегодня мы будем работать с библиотекой FPDF, которая бесплатна как для личного, так и для коммерческого использования, и совсем не сложная в работе.

    Для начала перейдите на сайт FPDF и нажмите загрузки слева. Под всеми руководствами получите zip-архив версии 1.6 (хотя с момента последнего обновления прошло некоторое время, форумы на сайте все еще довольно активны). Разархивируйте файлы; все, что вам нужно из этой папки, это файл fpdf.php и каталог шрифтов.

    Давайте сделаем например «Hello, World!». чтобы ускорить процесс. Конечно, первое, что вам нужно сделать, — подключить библиотеку; затем мы создаем новый экземпляр класса FPDF.

    hello_world.php

    Обратите внимание, что мы передали три значения конструктору FPDF; первое — ориентация нашей страницы; в нашем случае это портрет (вы также можете сделать «L’andscape»). Следующий параметр — тип единиц, который мы хотим использовать; мы выбираем точки, потому что это то, что будут измерять шрифты; мы могли бы выбрать mm, cm или in. Наконец, у нас есть формат бумаги, который мы, очевидно, обозначили буквой; мы могли бы установить его Legal, A3, A4 или A5. Все три из этих параметров являются опциональными, их значения по умолчанию (‘P’, ‘mm’, ‘A4’) .

    Прежде чем мы начнем добавлять текст к вашему документу, нам нужно сделать две вещи: 1) добавить страницу в pdf и 2) установить шрифт.

    Вы также можете использовать AddPage всякий раз, когда хотите вставить разрыв страницы; сначала мы устанавливаем тип шрифта; это может быть один из встроенных семейств шрифтов (Courier, Helvetica/Arial, Times, Symbol или ZapfDingbats) или любой добавленный с помощью метода AddFont . Далее следует формат шрифта; мы установили наш как обычный, но мы могли бы сделать «B’old», «Italic», «U’nderline» или любую комбинацию из них («BUI»). Наконец, мы устанавливаем размер шрифта в точках.

    Теперь мы готовы добавить текст. Весь текст, который вы пишете в PDF-файле, будет записан в ячейки.

    Так что же это делает? Первый параметр — ширина ячейки; вторая — высота. Конечно, третий — это текст для ячейки. Есть еще немало других параметров, но сначала посмотрим, как это выглядит. Чтобы закончить PDF, давайте используем метод output.

    Мы могли бы передать этому методу два параметра, но на данный момент мы их просто оставим. Теперь, когда это произойдет, PDF-файл будет отображаться при посещении страницы. Итак, давайте сделаем это прямо сейчас! Вот что я получаю:

    Отличная работа! Вы создали свой первый PDF-файл. Вернемся к строке, которая создала текстовую ячейку и внесем изменения:

    Мы добавили четвертый параметр; это граница. В нашем случае мы поставили границу вокруг. Вы можете сделать частичную границу со строкой: «LB» добавит границы слева и внизу; «TLBR» — это то же самое, что и 1.

    Если вы перезагрузите страницу сейчас и обнаружите, что ничего не произошло, просто добавьте случайную строку запроса в URL-адрес, чтобы принудительно обновить содержимое.

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

    Полный скринкаст

    SetFillColor / SetTextColor

    Вы можете заполнять текстовые ячейки цветом фона; мы увидим, как это сделать в нашем приложении, но сначала вы должны установить цвет заливки. Просто передайте этой функции значения красного, зеленого и синего (от 0 до 255). Вы можете установить цвет текста таким же образом.

    Если вы хотите установить все три цвета в одно и то же значение, просто используйте один параметр.

    SetLineWidth

    При рисовании границы на ячейках нетрудно настроить ширину границы. Просто назовите этот метод, передав число с плавающей точкой; помните, что вы установили единицы измерения, когда вы создали экземпляр FPDF. Когда вы начинаете, границы имеют ширину 0,2 мм.

    SetAuthor / SetTitle / SetSubject / SetCreator / SetKeywords

    Эти методы предназначены для установки свойств PDF, метаданных. Каждый из них берет строку с соответствующим контентом. Они также могут взять необязательное логическое значение, которое определяет кодировку: true — это UTF-8, а false — ISO-8859-1.


    SetMargins / SetTopMargin / SetLeftMargin / SetRightMargin

    По умолчанию поля вашей страницы составляют 1 см. Вы можете установить верхнее, левое и правое поля отдельно с их соответствующими функциями или установить их все сразу.

    Но как насчет нижней границы? Я рад, что вы спросили, о чем позаботилась другая функция.

    SetAutoPageBreak

    Эта функция принимает логическое значение, определяя, хотите ли вы, чтобы библиотека добавляла разрыв страницы при необходимости или вы хотите сделать это вручную. Если значение равно true (по умолчанию), вы можете добавить второй параметр, определяющий, как близко вы хотите получить разрыв. По умолчанию это 2 см.

    Топ-пост этого месяца:  Киви кошелек — регистрация и вход в Visa QIWI Wallet через сайт и терминал — как пользоваться

    Создание чека

    Теперь, когда у нас есть понимание того, как создать PDF-файл, давайте начнем наше небольшое приложение. Мы начнем с создания HTML-формы. Когда пользователь нажимает «Отправить», мы берем значения из формы и используем их для создания квитанции для нашего клиента.

    Прежде всего, небольшая оболочка HTML:

    Вы можете видеть, что мы создали форму, которая будет отправляться в файл create_reciept.php , который мы сделаем в ближайшее время. Давайте добавим набор полей и заполним его элементом для личной информации нашего клиента.

    index.html

    Обратите внимание на две вещи: мы увидим стиль для .col , когда мы перейдем к CSS; это позволит нам упорядочить эти поля в двух столбцах. Во-вторых, я дал все значения инпутам, просто чтобы сэкономить потом время.

    Мы добавим еще один набор полей для продуктов, которые покупает пользователь:

    Я думаю, что информация, которую мы показываем здесь, подходит для таблицы, так что это то, что мы используем. Кроме того, я поставил набор квадратных скобок в конце имен инпутов; обратите внимание, что у нас есть набор инпутом с именем product[] и набор с именем price[] . Они будут размещены как массивы.

    Конечно, наша форма заканчивается кнопкой отправки.

    Теперь мы можем перейти к CSS. Мы не будем подробно останавливаться на этом, но здесь совсем не сложно. Вы можете поместить его в style.css , который мы используем в HTML.

    style.css

    Как вы можете видеть, мы придаем большинству элементов некоторый минималистский стиль. Вот как выглядит наша форма:

    Таким образом, когда ваш клиент заполняет форму и нажимает кнопку отправки, данные формы будут отправлены на файл create_receipt.php . Итак, давайте создадим файл прямо сейчас!

    Генератор чеков

    Сейчас мы снова вернулись к PHP. Прежде всего: подключить библиотеку:

    Затем вместо создания экземпляра класса FPDF мы собираемся наследовать его на собственный класс. Это позволит нам сделать некоторые изящные вещи. Смотрите внимательно сейчас:

    Мы начали свой новый класс, написав конструктор. Мы указали все значения параметров по умолчанию, поэтому наш конструктор можно вызвать и без них. Внутри функции мы вызываем конструктор родительского класса, а затем устанавливаем поля.

    Теперь мы подключаемся к двум специальным функциям: Верхний и нижний колонтитулы.

    Эта функция будет вызываться в начале каждой страницы нашего PDF-файла. Сначала мы устанавливаем шрифт, цвет заливки и цвет текста. Затем мы выводим нашу ячейку. Обратите внимание, что мы установили ширину в 0. Это специальное значение; ячейка будет занимать все пространство справа от начальной точки (пока она не встретится с правым краем). Поскольку мы начинаем с левого поля, мы получим ячейку по всей ширине страницы (минус поля).

    Теперь для функции нижнего колонтитула:

    Опять же, мы начинаем с установки цвета шрифта и текста; мы не можем быть уверены в том, какими будут эти значения, когда мы перейдем к заголовку, поэтому мы поставим их для уверенности. Затем мы устанавливаем координаты X и Y. Это устанавливает верхнюю левую угловую позицию нашей следующей ячейки. Мы устанавливаем X равным 0, просто чтобы убедиться, что находимся в начале строки. Устанавливаем Y в -60; отрицательное число относится к нижней части страницы, поэтому это устанавливает наш курсор на 60 пикселей выше нижней границы страницы.

    Затем мы создаем ячейку; опять же, мы используем трюк 0-ширины; мы установили высоту 20pts. Мы устанавливаем текст, придаем ему верхнюю границу и центрируем. Готово!

    Мы снова вернемся к нашему классу, но пока давайте начнем создавать квитанцию. Создав экземпляр нашего класса, добавив страницу и установив шрифт, мы можем перейти к делу.

    Первое, что мы сделаем, это перемещаем наш курсор; мы можем сделать это, используя метод SetY .

    Это не перенесет нас вниз на 100 точек; это устанавливает 100 точек от верхней части страницы. Это не включает поля, поэтому мы на 30 пунктов ниже от нашего заголовка.

    Начнем с создания ячейки шириной 100pt и 13pt с текстом «Ordered By». Затем мы удаляем шрифт, чтобы удалить полужирный шрифт. Затем мы создаем другую ячейку и передаем ей имя, которое мы получили от нашей формы. Конечно, в реальном проекте вы будете проверять эти значения перед их использованием.

    Двигаясь дальше, мы добавим дату покупки:

    Опять же, мы устанавливаем шрифт жирным шрифтом; после записи «Дата» мы удаляем полужирный шрифт и печатаем текущую дату, используя функцию date PHP. Указанный формат даст нам название месяца, число дней, за которым следует запятая, и четырехзначный год. Мы помещаем границу как 0 (по умолчанию), чтобы мы могли перейти к параметру линии. Мы устанавливаем его как 1, что поместит нашу позицию в начало следующей строки; это эквивалент использованию «enter» в текстовом процессоре.

    Функция SetX выполняет ту же функцию, что и функция SetY , за исключением того, что она передвигает нас справа. Мы ставим нашу позицию на 100 пунктов справа от левого края. Затем мы выделяем курсив и начинаем выводить адрес. Все три строки адреса имеют ширину 200pt и высоту 15 футов. Важно отметить, что наш параметр линии равен 2. Это означает, что после каждой ячейки мы перейдем к следующей строке и «вкладке», чтобы соответствовать предыдущей ячейке. Наконец, мы вызываем метод Ln , который добавляет разрыв строки. Без параметра он будет перемещать нашу позицию вниз по высоте последней отпечатанной ячейки. Мы передали ему параметр, поэтому мы движемся вниз на 100 точек.

    Вот как это выглядит сейчас:

    image: adress / date

    Теперь давайте распечатаем таблицу продуктов, приобретенных нашим клиентом.

    Мы передали их в двух массивах, которые мы получили из нашего HTML-файла. Но откуда этот метод PriceTable ? Мы собираемся сделать это прямо сейчас, в рамках нашего класса PDF_receipt . Это еще одно преимущество расширения класса: мы можем уместить потенциально трудоемкую функциональность в методе.

    Вот функция. Начнем с установки шрифта, цвета текста, цвета заливки и ширины линии. Затем мы настраиваем ячейки заголовка. Каждая из них имеет границу слева, сверху и справа, текст по центру и заполнение.

    Затем мы удалим «bold» с шрифта и сбросим цвет заливки и ширину линии. Мы также создаем переменную $fill , заданную как false. Мы будем использовать это, чтобы добавить чередование зебры к нашей таблице.

    Цикл for-loop проходит через массив продуктов и цен (они должны иметь одинаковое количество элементов, основанное на таблице в нашем HTML-файле). Мы создаем ячейку для каждой записи, помещая имя продукта под заголовком «Описание элемента» и ценой в заголовке «Цена». У них обоих есть граница. Продукт выравнивается по левому краю, цена выравнивается по правому краю. Наконец, они оба используют $fill , который в настоящее время содержит false. После каждой строки мы переключаем значение $fill на противоположное логическое значение, поэтому в следующей строке будет серый фон.

    Топ-пост этого месяца:  Социальная сеть на joomla

    После того, как мы выведем все покупки, мы хотим отобразить общую цену. Мы удалим наш курсор на 367pt с левого края страницы. Затем мы создаем ячейку «Total», и, наконец, мы используем функцию php array_sum для добавления всех цен в $price . И это цена таблицы!

    Возвращаясь к тексту нашего PDF-документа, мы теперь пропустим 50 точек.

    До сих пор мы использовали функцию Cell для печати на нашей странице. Есть еще два метода, которые мы можем использовать: MultiCell и Write . Обе эти функции предназначены для строк текста, которые слишком длинные для одной ячейки полной ширины. Давайте сначала рассмотрим MultiCell .

    MultiCell довольно похож на Cell , за исключением того, что когда он достигает ширины, указанной вами для ячейки, она создаст еще одну под ней и продолжит вывод. Он также сделает разрыв, когда достигнет «\n». Из-за этого ему не нужен параметр свойства линии. Он также не имеет параметра ссылки в отличие от Cell . Что? Мы еще не упоминали параметр ссылки? Итак, Cell может принять еще один параметр после параметра fill: это либо строка ссылки, либо объект ссылки, указывающий на другое место в PDF, созданное с помощью функции AddLink .

    Текст не слишком важен, но слишком длинный для одной линии; плюс, в нем есть несколько разрывов строк. Хотя мы не используем их здесь, MultiCell также принимает параметры границ, выравнивания и заполнения.

    Метод Write принимает только три параметра: высоту, текст и необязательную ссылку. Нет параметра ширины, потому что он перейдет на правый край, прежде чем будет разрыв линии. Хотя это не лучшее его использование, мы будем использовать его для добавления ссылки:

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

    На этом с PHP все. Давайте добавим еще одну функцию: мы отправим нашу форму с помощью Ajax. Перед тем, как вернуться к index.html, внесите эти изменения для вызова Output :

    Первый параметр — это имя нашего файла; второй — это то, что мы хотим сделать с файлом, в этом случае сохраним его на сервере. Вы также можете принудительно загрузить с помощью «D», вернуть его как строку с «S». Значение по умолчанию, выводимое в браузер, — «I» (для встроенного).

    Вернемся в HTML, давайте импортируем jQuery и добавим наш обработчик клика в кнопку отправки:

    Когда кнопка нажата, мы отправим форму. При успешном возврате мы прячем второй div, очищаем его содержимое и перезагружаем его с помощью функции HTML. У этого нового HTML есть ссылка для получения чека. Затем мы снова отображаем div. Не забудьте вернуть false, чтобы форма не отправлялась сама.

    Вот что мы получаем

    И вот наш готовый PDF.

    И это все, ребята! Используйте комментарии для замечаний или предложений!

    Отдать PDF на скачку

    При проектировании одного проекта столкнулся с проблемой некоторых браузеров открывать PDF-документ непосредственно в окне браузера. Это чревато тем, что вы вообще ничего никогда не сможете просмотреть, либо при сохранении открытого файла получите «битый» документ.

    Было принято решение отдавать файлы скриптом. Чтобы не мудрить с движком — подпилил все напильником через mod_rewrite.

    В .htaccess пишем:

    Ссмысл правила в том, что все запросы, которые оканчиваются на .pdf, заворачиваются на файл load.php в корне сайта.

    В самом этом файле пишем нечто подобное (проверки опущены):

    Способ второй

    Основан на использовании модуля mod_headers и директивы FilesMatch:

    Если возникнут вопросы — пишите в комментах.

    чтение файла pdf из базы данных mysql

    Часть загрузки происходит без каких-либо проблем. Но я сталкиваюсь с множеством проблем в части загрузки. Я хочу создать ссылку, по которой пользователь нажимает, а затем он может загрузить соответствующий PDF-файл. Но страница запускается, и якорный тег виден. Но когда я нажимаю на него, файл .htm загружается
    ниже мой download.php

    Решение

    Проблема заключается в том, что в верхней части страницы вы начинаете вывод html независимо от того, хочет ли пользователь видеть файлы для загрузки или хочет загрузить сам файл. В этот момент загружаемый файл становится HTML-страницей.

    Ваш код должен начинаться с проверки, установлен ли параметр id. Если нет, то вы начинаете генерировать HTML-страницу. Если да, то вы читаете файл из базы данных, устанавливаете заголовки и отправляете содержимое обратно.

    Или просто используйте другую страницу php для отображения списка файлов и загрузки одного из файлов.

    Генерация PDF из MySQL(php5) как?

    Как сгенерировать PDF из данных хранящихся в MySQL. Используя в PHP класс mysqli. Пробовал старым классом mysql , большое количество примеров. Не один не помог. Библиотеки которыми были попытки: FPDF и mPDF. Сейчас роюсь в TCPDF положительный результат отсутствует.

    2 ответа 2

    1 если я правильно понимаю через mysqli подключаться надо так $link = mysqli_connect($hostname, $database, $username, $password);- это если с базой даных проблема. если проблема с пустым PDF при использовании TCPDF то насколько я помню для записи в PDF надо использовать метод writeHTML класса pdf теесть примерно так

    где $yourVar это то что вам нужно записать в pdf фаил остальное это служебная информация вот здесь документация

    В итоге сгенерировал через библиотеку html2pdf рабочий пример ниже.

    Урок 1 Вывод данных в формате PDF на PHP

    Урок 1. Физические величины и их измерение

    АНГЛИЙСКИЙ ЯЗЫК ПО ПЛЕЙЛИСТАМ

    АНГЛИЙСКИЙ ЯЗЫК ДО АВТОМАТИЗМА — УРОК 1 УРОКИ АНГЛИЙСКОГО ЯЗЫКА. АНГЛИЙСКИЙ ДЛЯ НАЧИНАЮЩИХ С НУЛЯ

    Полиглот. Выучим английский за 16 часов! Урок №1 / Телеканал Культура

    ВПЕРВЫЕ: РЕБЁНОК АЛЬПАКИ У МЕНЯ ДОМА// КОРМЛЮ ИЗ БУТЫЛОЧКИ ДВУХНЕДЕЛЬНОГО ДЕТЕНЫША

    Переглядів 406 917

    13 лайфхаков и пранков с клеем

    Переглядів 658 100

    Развивайки Для Детей

    �� Уроки 1-3 . Учим буквы А, О, У, соединяем буквы, учим буквы М и С вместе с киcой Алисой(0+)

    АЛФАВИТ Английский.НАУЧУ ЧИТАТЬ ЛЮБОГО ЗА 15 уроков! Уроки английского чтения с нуля. Урок 1.

    Гитара с нуля- уроки игры на гитаре

    Гитара с нуля- (урок1) ритмический рисунок(бой №1) и первые аккорды Звезда по имени солнце.

    Чтение и разбор pdf-файла

    Подскажите библиотеку или технологию чтения и разбора pdf файла из php на составные части.

    Мне необходимо выдернуть фоновую картинку, и текст. Для текста определить шрифт, положение, цвет. Если возможно, то еще и выдернуть с сохранением шрифт текста в файлик ttf , например.

    Fpdf вроде только для создания годится. Поправьте меня, если я не прав, ссылкой на хороший пример.

    Вопрос в стиле погуглите за меня, но я не смог найти — не знаю нужных слов для поисковика!

    Добавить комментарий