Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dynamiczne generowanie pdf-ów
Forum PHP.pl > Forum > PHP
piotrek8
nie jestem pewien czy pisze pod dobry adres...
czy ktos sie orientuje jak podzielic bardzo dlugi tekst znajdujacy sie w jednej zmiennej, aby umiescic go w boxach na kilku stronach w formacie pdf... szukalem w wielu ksiazkach w empiku odpowiedzi na to pytanie, jednak wszedzie znajduja sie tylko podstawy dotyczace budowy pdfow...
orson
witam smile.gif

chcesz podzielic text na strony questionmark.gif czyli nie odpowiada ci dzielenie automatyczne questionmark.gif w css jest wskaznik page-break ... moze on ci pomoze ...
link do wc3 ref
czyli jak masz text w zmiennej to wstawiasz znacznik np:
Kod
<br style="page-break-after:always;">
potem zmiana na tablice i funkcja zmieniajaca zawartosc tablicy na strony dokumentu i dodajaca np do kazdej strony stopke inne ....
mam nadzieje ze to to questionmark.gif

cya [/code]
spenalzo
Koledze raczej chodziło od PDF a nie HTML.
orson
witam smile.gif

hmm ... dluuuuuuuugi text w zmiennej ... dzielisz na tablice co n znakow ... wsadzasz tablice do funkcji ... w funkcji petelka ktora przyjmuje tablice i wypluwa ladnie sformatowane stronki ... to nawet prosciej bedzie chyba ...
lnk do manuala na temat funkci pdf

cya
piotrek8
dzieki za link, na pewno go przestudiuje i to dokladnie...
problem jednak polega na tym jak podzielic ten tekst i co ile... nie wiem przeciez czy na stronie zmiesci sie 1000, 2000 czy 3000 znakow... po drugie pierwsza strona moze zawierac mniej znakow niz druga, ale wiecej niz trzecia...
myslalem o wykorzystaniu funkcji PDF_stringwidth() ale ona odmierza tekst tylko o dlugosci do 4095 znakow...
moze ktos zna jakies forum bardziej zblizone do tematyki PDF...
piotrek8
wlasnie udalo mi sie cos wyskrobac... problem z tym, ze w ten kod dzieli tekst na akapity i kazdy musi byc krotszy niz 4095 pikseli (przy okreslonej czcionce)... poza tym nie bierze pod uwage, ze wiersze sa zawijane, jesli dany wyraz nie miesci sie w jednym wierszu...


[php:1:14f4376a19]<?php
$p = PDF_new();

PDF_open_file($p, "");
PDF_set_info($p, "Creator", "potang");
PDF_set_info($p, "Author", $added_by);
PDF_set_info($p, "Title", ucfirst($nazwa_przedmiotu_arch[$przedmiot]));
PDF_set_info($p, "Subject", $subject);


PDF_begin_page($p, 595, 842);
$font = PDF_load_font($p, "Times New Roman", "iso8859-2", "");
PDF_setfont($p, $font, 15);

PDF_set_text_pos($p, 45, 790);

PDF_show($p, ucfirst($nazwa_przedmiotu_arch[$przedmiot]));


PDF_setfont($p, $font, 13);

PDF_set_text_pos($p, 45, 770);

PDF_show($p, $subject);

$akapit = explode("r", $text);
$szerokosc = "505";
$wysokosc = "690";
$ile_stron = "1";

//umiesc wszystkie akapity na stronach
for ($i=0; $i<count($akapit); $i++)
{
$ile_wierszy = ceil($wysokosc/11);

//sprawdz czy dany akapit zmiesci sie na jednej stronie (jesli nie!?!?)
if (PDF_stringwidth($p, $akapit[$i], $font, 11)/$szerokosc <= $ile_wierszy)
{
//umiesc akapit w boxie
PDF_show_boxed($p, $akapit[$i], 45, 65, $szerokosc, $wysokosc, "left", "");

//zmniejsz wysokosc boxu w zaleznosci czy tekst zajmuje wiecej niz jeden
//wiersz
if (PDF_stringwidth($p, $akapit[$i], $font, 11) < $szerokosc)
{$wysokosc=$wysokosc-15;}

else
{$wysokosc = $wysokosc -
ceil((PDF_stringwidth($p, $akapit[$i], $font, 11)/$szerokosc))*15;}

//jesli w zmniejszonym boxie nie zmiesci sie nastepny akapit to zakoncz
//aktualna strone i rozpocznij nastepna
if ($wysokosc <=
ceil((PDF_stringwidth($p, $akapit[$i++], $font, 11)/$szerokosc)*15))
{
PDF_rect($p, 45, 60, $szerokosc, 0);
PDF_stroke($p);
$font = PDF_load_font($p, "Times New Roman", "iso8859-2", "");
PDF_setfont($p, $font, 10);

PDF_show_boxed($p, "Tekst został dodany przez ".$added_by.", dnia ".$time, 45, 49, 350, 10, "left", "");

PDF_show_boxed($p, "Strona $ile_stron z questionmark.gif?", 450, 49, 100, 10, "right", "");

PDF_end_page($p);

PDF_begin_page($p, 595, 842);
$font = PDF_load_font($p, "Times New Roman", "iso8859-2", "");
PDF_setfont($p, $font, 15);

PDF_set_text_pos($p, 45, 790);

PDF_show($p, ucfirst($nazwa_przedmiotu_arch[$przedmiot]));


PDF_setfont($p, $font, 13);

PDF_set_text_pos($p, 45, 770);

PDF_show($p, $subject);

$wysokosc = "690";
$ile_stron++;
}

$i--;
}
}

//zakoncz ostatnia strone, zamknij plik i wyslij go do uzytkownika
PDF_rect($p, 45, 60, $szerokosc, 0);
PDF_stroke($p);
$font = PDF_load_font($p, "Times New Roman", "iso8859-2", "");
PDF_setfont($p, $font, 10);

PDF_show_boxed($p, "Tekst został dodany przez ".$added_by.", dnia ".$time, 45, 49, 350, 10, "left", "");

PDF_show_boxed($p, "Strona $ile_stron z $ile_stron", 450, 49, 100, 10, "right", "");
PDF_end_page($p);

PDF_close($p);
?>[/php:1:14f4376a19]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.