Domanda

Sto generando un file pdf dinamico, che contiene i dati di circa 10.000 utenti, in generale l'app è sviluppata utilizzando MySQL e PHP.Il contenuto dinamico è così pesante che ho trovato difficile elaborarlo fpdf() classe.Quindi ho convertito la mia pagina PHP di output come file HTML utilizzando ob_get_clean().Ora il file html viene generato correttamente e anche il file pdf.Ma voglio lasciare un'interruzione di pagina dopo i dati di ogni utente, ovvero i dati di ogni utente devono iniziare in una nuova pagina.Non ho potuto utilizzare alcun tag HTML perché, nel file HTML generato dinamicamente, tutto è fuori dal file <html> E </html> tag.Per favore aiutami in modo che in qualche modo crei un'interruzione di pagina nel file pdf dopo i dati di ogni utente...Grazie in anticipo :)

È stato utile?

Soluzione

ho appena capito questo dopo avere lo stesso problema. il parser che usano supporta il tag page-break-after, ma la html2pdf non funziona.

penso ce l'ho a lavorare facendo le seguenti modifiche al html2pdf.class:

intorno alla linea 4174, la prima cosa dentro:

protected function _tag_close_P($param){

dovrebbe essere:

   if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

intorno alla linea 2961, la prima cosa dentro:

protected function _tag_close_DIV($param, $other='div'){

dovrebbe essere:

 if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

Altri suggerimenti

supporta html2pdf pagina etichetta:

protected function _tag_open_PAGE($param) {} 

alla linea 2229.Qui puoi vedere quali attributi sono supportati.Ad esempio, di seguito viene creata una pagina in orizzontale e una in modalità verticale:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>

Basandosi sul lavoro di macdabby (che non funziona). Ma grazie a lui, l'idea è corretta.

html2pdf V4.03

Per esempio vogliamo analizzare un tag DIV:

Linea html2pdf.class.php 2948:

protected function _tag_close_DIV($param, $other='div')
{
    if ($this->parsingCss->value['page-break-after'] == "always")
      $this->_setNewPage(null, '', null, $this->_defaultTop);
      $this->parsingCss->setPosition();
    ...
}

parsingCss.class.php Linea 114:

//add a new style declaration
public function initStyle()
{
    ...
    $this->value['page-break-after'] = null;
}

Linea 1.024 aggiungere un nuovo gestore per il caso interruttore:

case 'page-break-after':
    $this->value[$nom] = $val;
    break;

E poi per farlo funzionare, il contenuto HTML deve contenere l'elemento di rottura

 <div style="page-break-after:always; clear:both"></div>

Attenzione per stile sensibili caso, non è sicuro se il plugin gestirlo

Probabilmente vuoi utilizzare alcuni CSS, ad esempio:

h1 {page-break-before:always}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top