![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 3.10.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam dziwny problem: eksportuję dane z tabeli do PDFa. Wszystko działa prawie dobrze, ale jak ustawię rozmiar strony A4 pionowo, to wszystko jest ok, natomiast jak ustawię A4 poziomo, to występuje problem: Wyświetlane są wszystkie wiersze, ale wygląda na to, że kilka z nich ma nieprawidłowo obliczoną odległość od góry strony i są przykrywane następnymi. Niezależnie od ilości danych (stron) zawsze dzieje się to w tym samym miejscu strony (w tej samej odległości od góry). Poniżej kod nieco okrojony, żeby nie zaśmiecać grupy. Usunięty jest podział na strony i rysowanie ramek, ale idea działania pozostała. CODE function makePdf($columns = array(), $values = array(), $reportname = 'raport', $landscape = 0) function mm2pt($val) { return floatval($val * 2.835016835017); } function printtext($pdfdoc, $text, $x, $y, $w, $align) { $f = PDF_get_value($pdfdoc, 'font', 0); $fs = PDF_get_value($pdfdoc, 'fontsize', 0); $textLength = PDF_stringwidth($pdfdoc, $text, $f, $fs); $textHeight = ceil($textLength / $w) * $fs; if ($textLength > $w) while(PDF_show_boxed($pdfdoc, $text, $x, $y, $w, $textHeight, $align, 'blind') > 1) $textHeight += $fs; PDF_show_boxed($pdfdoc, $text, $x, $y - $textHeight, $w, $textHeight, $align, ''); return $textHeight + 4; } if ($landscape) { $pageWidth = mm2pt(297); $pageHeight = mm2pt(210); } else { $pageWidth = mm2pt(210); $pageHeight = mm2pt(297); }; $pdf = PDF_new(); PDF_open_file($pdf, ''); PDF_set_info($pdf, 'Author', 'autor'); PDF_set_info($pdf, 'Title', 'tytul'); PDF_set_info($pdf, 'Subject', 'report'); PDF_set_parameter($pdf, 'FontOutline', "Courier=cour.ttf"); $font = PDF_load_font($pdf, 'Courier', 'iso8859-2', ''); PDF_setfont($pdf, $font, 14); $colWidth = ($pageWidth - 20) / count($columns); $top = $pageHeight - 10; foreach($values as $array) { $boxH = 0; foreach ($array as $name) { $boxH = max($boxH, printtext($pdf, $name, 12 + ($colWidth * $x), $top, $colWidth, $colAligns[$x])); $x++; } $top -= $boxH; } } // Wywołanie funkcji: $columns = array('opis' => 'left', 'data ostatniego nadania' => 'center', 'minęło' => 'center', 'klient' => 'left'); $values = array(); foreach($devices as $key => $array) { $val = array(); $val[] = $array[description]; $val[] = date('H:i Y-m-d', $array[lasttimeutc]); $val[] = $array[age]; $val[] = $array[client]; $values[] = $val; } makePdf($columns, $values, $raportTitle, 1); Co jest nie tak z tym kodem? Dlaczego błąd występuje tylko przy poziomej orientracji strony? Dziękuję za odpowiedzi i pozdrawiam Suazael |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 07:02 |