Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/41: Рейтинг темы: голосов - 41, средняя оценка - 4.80
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109

создание таблицы в PDF

02.12.2012, 02:31. Показов 8080. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю таблицу с помощью FPDF.Помогите решить 2 проблемы :1) не получается динамически изменять заголовки таблицы,то есть я могу сделать только так :
PHP
1
$header=array('Name','Surname');
а вот если я попробую сделать вот так :
PHP
1
$header=$pdf->LoadData('headers.txt');
то в заголовке выведется только одно слово Array

2) при выводе ячеек почему-то всегда добавляется одна лишняя пустая ячейка

весь код :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
 
require( "fpdf/fpdf.php" );
 
class PDF extends FPDF
{
// load data
function LoadData($file)
{
    //read from file
    $lines=file($file);
    $data=array();
    foreach($lines as $line)
        $data[]=explode(';',chop($line));
    return $data;
}
 
// table
function MyTable($header,$data)
{
    $this->SetFillColor(0);
    $this->SetTextColor(255);
    //header
    for($i=0;$i<count($header);$i++)
        $this->Cell(40,7,$header[$i],1,0,'C','true');
    $this->Ln(); 
    
    $this->SetFillColor(30,235,255);
    $this->SetTextColor(0);
    //data
    foreach($data as $row)
    {
        foreach($row as $col)
            $this->Cell(40,6,$col,'LR');
        $this->Ln();
    }
}
}
 
$pdf=new PDF();
//load data
$data=$pdf->LoadData('text.txt');
$header=array('Name','Surname');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->MyTable($header,$data);
$pdf->Output();
 
 
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2012, 02:31
Ответы с готовыми решениями:

Чтение таблицы из pdf файла
Привет! Подскажите с помощью какой библиотеки можно произвести чтение таблицы из pdf-ки?

Формирование pdf файлов циклом из таблицы
Доброго времени суток. на данный момент макрос формирует из заданной строки файл pdf,сохраняет его в определенной папке и записывает в...

как конвертировать таблицы Excel в PDF?
привет.скажите пожалуста как я могу конвертировать таблиц Excel в PDF для Delphi

15
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 08:00
PHP
1
2
$header=$pdf->LoadData('headers.txt');
var_dump($header);
что выводит?
0
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 13:26  [ТС]
alpex, выводит данную ошибку : array(1) { [0]=> array(3) { [0]=> string(4) "Name" [1]=> string(7) "Surname" [2]=> string(0) "" } } FPDF error: Some data has already been output, can't send PDF file (output started at Z:\home\localhost\www\phptask\pdf.php:43 )

Добавлено через 3 минуты
на всякий случай кидаю ещё код,где считывание в файл производится из формы,может где-то там косяки :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>таблица в PDF формате</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
  <label for="textfield">Введите названия столбцов через точку с запятой</label><br>
  <textarea name="memoheaders" cols ="50" rows="2"></textarea><br>
  <input type="submit" name="sendheaders" value="Сохранить" /><br> 
  
  <label for="textfield">Введите элементы строки через точку с запятой</label><br>
  <textarea name="memocells" cols ="50" rows="2"></textarea><br>
  <input type="submit" name="sendrow" value="Ещё строка" />  
</form>
<?php
$memocells=$_POST['memocells'];
if(isset($_POST['sendrow']))
{
$fs=fopen('text.txt',"a+");
$text=fwrite($fs,$memocells."\r\n");
fclose($fs);
}
 
$memoheaders=$_POST['memoheaders'];
if(isset($_POST['sendheaders']))
{
$fs2=fopen('headers.txt',"w");
$text=fwrite($fs2,$memoheaders);
fclose($fs2);
}
?>
<br>
<form id="form2" name="form2" method="POST" action="pdf.php">
  <input type="submit" name="button" id="button" value="Вывести таблицу" />
</form>
</body>
</html>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 13:28
PHP
1
$header=extract($pdf->LoadData('headers.txt'));
вот так должно работать
0
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 14:07  [ТС]
Цитата Сообщение от alpex Посмотреть сообщение
PHP
1
$header=extract($pdf->LoadData('headers.txt'));
вот так должно работать
к сожалению, теперь даже просто слово Array в заголовке не появляется - просто пустая ячейка
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 14:10
а так?
PHP
1
2
$header=$pdf->LoadData('headers.txt');
$header = $header[0];
Добавлено через 1 минуту
и уберите в файле перевод строки в конце
1
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 14:15  [ТС]
Цитата Сообщение от alpex Посмотреть сообщение
а так?
PHP
1
2
$header=$pdf->LoadData('headers.txt');
$header = $header[0];
Добавлено через 1 минуту
и уберите в файле перевод строки в конце
мне просто нужно,чтобы каждая новая запись в файле начиналась с новой строки

Добавлено через 1 минуту
alpex, заработало!) правда косяк такой же появился,как и с ячейками : появляется одна лишняя - пустая)
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 14:17
ну просто изза этого перевода в массиве появляется 3 пустой елемент, а передавать нужн о же 2, знач нужно отфильтровать пустые ячейки

Добавлено через 40 секунд
loadData это ваша функция, покажите код?
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.12.2012, 14:18
greenEYE, вот так попробуйте:
PHP
1
2
$header=$pdf->LoadData('headers.txt');
$header = $header[0][0]; # Должно вывести "Name"
1
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 14:18  [ТС]
alpex,
PHP
1
2
3
4
5
6
7
8
9
function LoadData($file)
{
    //read from file
    $lines=file($file);
    $data=array();
    foreach($lines as $line)
        $data[]=explode(';',chop($line));
    return $data;
}
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 14:22
добавьте флаг в file
PHP
1
$lines=file($file, FILE_IGNORE_NEW_LINES);
Добавлено через 43 секунды
он будет игнорировать переводы строк
1
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 15:09  [ТС]
alpex, как раз-таки chop,по идее, должен был решить проблему с пробелами,но увы =/

Добавлено через 2 минуты
Цитата Сообщение от alpex Посмотреть сообщение
добавьте флаг в file
PHP
1
$lines=file($file, FILE_IGNORE_NEW_LINES);
Добавлено через 43 секунды
он будет игнорировать переводы строк
не помогло

Добавлено через 28 минут
alpex, к тому же в файл headers запись идёт без "\r\n",а баг такой же
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
02.12.2012, 15:24
такой фллаг еще опробуйте FILE_SKIP_EMPTY_LINES
1
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 15:33  [ТС]
alpex, ничего не изменилось =/ может попробовать как-то по-другому записывать и читать? например : записывать всё в одну строку,а при считывании,к примеру,если count($header) равно 4,то после каждого 4го эл-та ставить Ln(),то есть,чтобы перенос был в таблице(кол-во эл-ов в строке должно быть равно кол-ву header'ов)

Добавлено через 1 минуту
alpex, даже когда я в ручную в файле ввожу данные - всё равно лишняя ячейка появляется
0
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 15:43  [ТС]
прикрепляю весь проект :
Вложения
Тип файла: rar phptask.rar (182.5 Кб, 36 просмотров)
0
 Аватар для greenEYE
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
02.12.2012, 15:50  [ТС]
ребят всем большое спасибо)) сам решил проблему)) оказывается после последней записи достаточно убрать точку с запятой и всё будет ок)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2012, 15:50
Помогаю со студенческими работами здесь

Создание PDF
Ребзя, посоветуйте удобный PDF creator для чайника. Цель: создание мануала с использованием графики Что требуется: 1. Возможность...

Как создать PDF документ из содержимого таблицы в БД?
как создать PDF документ с помощью РНР и баз данных MySQL?

Отчет в формате pdf на основе таблицы TDBGrid
Кто нибудь знает как в Embarcadero Rad Studio 10 сделать отчет в формате pdf на основе таблицы TDBGrid?

Создание и работа с pdf
Доброго времени суток! Надобно мне библиотеку найти с pdf работать позволяющую. Чтоб создавать и заполнять файлы формата этого могла она....

Создание PDF-документа
У меня вопрос, написал программу, которая строит некоторый график. Как теперь создать форму PDF с этим графиком и таблицей его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru