2012-12-24 10 views
6

Chcę zrobić plik PDF, który będzie zawierał ogromne dane, takie jak 12-miesięczne dane. Każdy miesiąc zawiera 500 wierszy z tabeli MySQL. Próbowałem z FPDF, ale zajmuje to zbyt dużo czasu, co jest nie do przyjęcia. Jeśli jest jakaś inna biblioteka lub klasa PHP, która ułatwiłaby pracę i nie sprawiłaby, że system byłby zajęty?Utwórz plik PDF pobierający ogromne ilości danych z MySQL przy użyciu PHP

Jeśli istnieje skrypt, który zajmie 12 miesięcy danych miesiąc po miesiącu i zapisze go w formacie PDF jeden po drugim, a następnie utworzy plik PDF?

+0

Chcesz coś takiego jak html do pdf? –

+0

Czy stare dane (np. W poprzednich miesiącach) ulegną zmianie w ogóle? Jeśli nie, możesz zachować kopię pliku 'previous-months.pdf' i zregenerować bieżący miesiąc. Następnie przy podawaniu użytkownikowi scal dwa pliki PDF - prawdopodobnie będzie to szybsze. – halfer

+1

Alternatywnie, gdy użytkownik chce pobrać długi raport w formacie PDF, należy umieścić go w tabeli i użyć generowania zadania cron plus e-mail, aby wysłać je do niego. – halfer

Odpowiedz

1

Tworzenie pliku PDF jest zawsze bardzo długie. Jeśli masz dużą ilość zasobów, to będzie bardzo, bardzo długo, nie możesz tego uniknąć. Widzę jeden sposób, aby zrobić to w sposób, który jest bardziej miękki dla użytkowników:

Wysyłanie ich renderowania HTML, a następnie z Ajax powodują asynchroniczne generowanie PDF. Możesz więc wyświetlić pasek stanu. i informuj użytkowników, że wykonują swoje żądanie.

Potem pokolenie może być strony technicznej wykonywane przez trzy sposoby:

  • korzystających FPDF i ciężko kodowania dyspozycję
  • użyciu dom2pdf lub taką bibliotekę, aby twój html renderowania pliku pdf
  • utworzyć łańcuch lateksowy, a następnie za pomocą proc_open poprosić kompilator lateksowy o utworzenie pliku PDF. Jest to naprawdę szybkie i niezawodne narzędzie, ale wymaga posiadania serwera dedykowanego, a nie hosta współdzielonego.
1
// you can used fpdf like this. 
<?php 
require('fpdf.php'); 

class PDF extends FPDF 
{ 
    // Page header 
    function Header() 
    { 
    // Logo 
    $this->Image('logo.png',10,6,30); 
    // Arial bold 15 
    $this->SetFont('Arial','B',15); 
    // Move to the right 
    $this->Cell(80); 
    // Title 
    $this->Cell(30,10,'Title',1,0,'C'); 
    // Line break 
    $this->Ln(20); 
    } 

    // Page footer 
function Footer() 
{ 
    // Position at 1.5 cm from bottom 
    $this->SetY(-15); 
    // Arial italic 8 
    $this->SetFont('Arial','I',8); 
    // Page number 
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); 
} 
} 

// Instanciation of inherited class 
$pdf = new PDF(); 
$pdf->AliasNbPages(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','',12); 
for($i=1;$i<=40;$i++) 
$pdf->Cell(0,10,'Printing line number '.$i,0,1); 
$pdf->Output(); 
?> 
2

rutynowo tworzenia bardzo dużych PDF z PHP z użyciem (zazwyczaj) w ten sam sposób. Najpierw tworzę wersję strony internetowej dokumentu i wyprowadzam go do pliku. Następnie uruchamiam plik przez wkhtmltopdf. Miałem konsekwentnie więcej sukcesów tą metodą niż jakikolwiek inny. HTML powinien szybko wygenerować, a wkhtmltopdf jest zaskakująco szybki i wydajny. Dodatkowo możesz użyć technik CSS3 do skomplikowanego formatowania.

W przypadku bardzo dużych plików PDF wygenerowałem również mniejsze, a następnie scalono je z pdfmeld. Daje to również możliwość dodawania zakładek.

+0

Dziękujemy za cenne sugestie. Podaj link demo, jeśli to możliwe? – Nantu

Powiązane problemy