Tema siempre complicado, sobre todo porque hay que leer bastante... te paso esto... leelo.
http://mpdf1.com/manual/
aqui un ejemplo de uso, espero te sirva:
Código PHP:
<?php
// se hace el include de la clase que tiene que bajarla
include('../MPDF56/mpdf.php');
include('../../link/connect.php');
//esta parte esta toda escrita a mano para que se entienda nada mas, por lo general
//se arman dinamicamente con includes y otras tecnicas
if($_POST){
$sql="SELECT nombre, apellido, trato FROM usuarios WHERE id_usuario=".$_SESSION["k_idcliente"];
$query= mysql_query($sql, $conn) or die(mysql_error());
$row = mysql_fetch_array($query);
if($row["trato"]==""){
$docente = $row["nombre"]." ".$row["apellido"];
}else{
$docente = $row["trato"]." ".$row["nombre"]." ".$row["apellido"];
}
$inst= $_POST['institucion'];
$secc= $_POST['seccion'];
$turno= $_POST['turno'];
//en esta variable html guardo mi estructura.
$html = '<style type="text/css">
p, li{
font-family:"Times New Roman", Times;
font-size:12px;
}
h2{
font-family: "Trebuchet MS";
font-size:24px;
color:#333;
font-weight:normal;
margin: 0;
}
#cuadro1{
width:30px;
height:180px;
background-color:#423f40;
float:left;
}
#cuadro2{
width:625px;
height:40px;
background-color:#87868a;
margin-left:10px;
padding-top:140px;
padding-left: 15px;
float:left;
font-family:Trebuchet MS;
font-size: 28px;
color:#FFF;
}
#contenedor{
width:700px;
margin:0 auto;
padding-left:55px;
}
#datos{
width:100%;
font-family: Times New Roman, Times, serif;
font-size:13px;
}
#datos table{
width:650px;
}
#competencias{
width:100%;
}
#competencias ul li,#competencias p{
text-align:justify;
}
.titulacion{
font-weight: bold;
font-size: 13px;
}
.guia{
font-family:"Trebuchet MS";
font-size:10px;
font-weight: bold;
color: #666;
}
.materia{
font-family:"Trebuchet MS";
font-size:10px;
color: #999;
}
.data{
font-family:"Trebuchet MS";
font-size:13px;
}
.table-line{
border-bottom:#666666 thin solid;
}
.epigrafe-der{
font-family:"Trebuchet MS";
font-size:9px;
font-style:italic;
color:#999999;
}
#foot{
position:absolute;
clear:both;
top:1000px;
}
.obs{
padding:20px;
background-color:#999;
}
</style>';
//cuadro1
$html .= '<div id="cuadro1"> </div>';
//cuadro2
$html.='<div id="cuadro2">PROYECTO/PLAN ANUAL</div>';
//contenedor INICIO
$html.='<div id="contenedor">';
//encabezado
$html .= '<div style="clear:both;"><h2>IDENTIFICACIÓN:</h2></div>';
//datos docentes
$html.='<div id="datos">
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td width="90">Institución:</td>
<td width="550" class="table-line"><span class="data">'.$inst.'</span></td>
</tr>
<tr>
<td>Docente:</td>
<td class="table-line"><span class="data">'.$docente.'</span></td>
</tr>
<tr>
<td>Grado:</td>
<td class="table-line"><span class="data">7.°</span></td>
</tr>
<tr>
<td>Sección:</td>
<td class="table-line"><span class="data">'.$secc.'</span></td>
</tr>
<tr>
<td>Turno:</td>
<td class="table-line"><span class="data">'.$turno.'</span></td>
</tr>
</table>
</div>';
//competencias
$html.='<div id="competencias">
<p class="titulacion">Competencia del área para el tercer ciclo de la EEB</p>
<p>Formula y resuelve situaciones problemáticas que involucren la utilización de: operaciones matemáticas
con números reales y expresiones algebraicas; unidades de medidas; conceptos, principios y
elementos de la Geometría plana y del espacio; procedimientos básicos de la Estadística descriptiva y
de la Probabilidad, en variados contextos.</p>
<p class="titulacion">Alcance de la competencia en el séptimo grado</p>
<p>En relación con la competencia del ciclo, se espera que el estudiante al término del 7.° grado:
<ul>
<li>Comprenda conceptos y procedimientos fundamentales del sistema numérico referidos a: conjuntos
de números enteros y racionales y, de la Geometría plana referidos a: ángulos y polígonos de tres
y cuatro lados; y del álgebra relacionados a ecuaciones lineales. Asimismo, se espera que formule y
resuelva situaciones problemáticas que involucren la utilización de algoritmos y propiedades de las
operaciones fundamentales con números enteros y racionales, y resuelva situaciones que involucren
la utilización de: a) la potenciación y la radicación; con números enteros y racionales, b) ecuaciones
lineales con una incógnita y, c) el Teorema de Pitágoras. Se espera también que interprete el comportamiento
de datos y elabore conclusiones a partir de la recolección, la organización, la representación
en tablas de frecuencias y gráficos circulares, y la determinación de la moda para datos no agrupados.</li>
</ul>
</p>
<div class="obs">
<p class="titulacion">Para tener en cuenta:</p>
<p>En el mes de febrero, habitualmente, las instituciones educativas dan orientaciones generales relacionadas con el año lectivo.</p>
</div>
</div>';
//contenedor FINAL
$html.='</div>';
//llamamos a la clase mPDF
$mpdf=new mPDF();
//creamos una nueva pagina por defecto A4, con 2cm de left, 1cm de right
//0,8cm de top y 2 cm de bot en margenes de hoja..
$mpdf->AddPage('P','','','','',20,10,8,20,'','');
//habilito para que me lea html
$mpdf->WriteHTML($html);
//le creo un pie de pagina
//tambien puedes poner un encabezado con setHeader, hay que leer el manual
$mpdf->SetFooter('Guía didáctica / Matemática 7');
//personalizo mi footer con el tamaño de letra, estilo BI = Bold Italic
$mpdf->defaultfooterfontsize=9;
$mpdf->defaultfooterfontstyle='BI';
$mpdf->defaultfooterline=0;
//esta parte es muy importante, ya que el Output sin parametros solo te mostrará
//el archivo en el navegador
//EN este caso le pongo parámetros para que cuando se genere el pdf, automáticamente
//me lo renombre como "matematica 7.pdf" el segundo parámetro es una D que indica DOWNLOAD
// es decir, que no se abrirá el archivo en el navegador, sino que se descargará cuando se genere
//puedes cambiar los parametros
//aqui tienes mas detalles http://mpdf1.com/manual/index.php?tid=125&searchstring=Output
$mpdf->Output('Matematica 7.pdf','D');
}
?>
Tambien existe otra clase llamada FPDF pero me cuesta trabajarlo con HTML y CSS