php - tutorial - Creación de PDF con tcpdf muestra en blanco en iphone
tcpdf writehtml parameters (4)
Estoy usando tcpdf para producir archivos PDF a partir de HTML. Todo funciona bien y cuando veo el PDF en mi computadora puedo verlo bien, pero por alguna razón, cuando veo el PDF en mi iPhone, aparece en blanco. Todo lo que puedo ver son los bordes que creé que contienen valores en ellos pero no se muestran valores.
Aqui esta mi codigo
require_once(''/tcpdf/tcpdf/config/lang/eng.php'');
require_once(''/tcpdf/tcpdf/tcpdf.php'');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ''UTF-8'', false);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->SetFont(''dejavusans'', '''', 10);
$pdf->AddPage();
$html = file_get_contents(''http://www.website.com/invoice.php?invoice_id=''.$invoice_id);
$pdf->writeHTML($html, true, false, true, false, '''');
$pdf->lastPage();
$pdf->Output(''/html/admin/emailattachements/invoice.pdf'', ''F'');
En esa última línea. Copio el PDF en ese directorio cuando lo agarro más tarde con un script de correo electrónico y lo envío a un cliente.
Edición: resuelto
Descubrí que era la fuente que estaba usando para producir el PDF. Los iPhone no pueden leer dejavusans :) Lo cambié a ''veces'' y funciona bien
Editar: Actualizar
Desde este artículo, he tenido que crear muchos más PDF con tcpdf y aunque no puedo explicar por qué algunas fuentes no funcionaban, mientras que otras aplicaron algunas de las sugerencias en http://www.tcpdf.org/fonts.php y aplicado
$fontname = $pdf->addTTFfont(''/path-to-font/DejaVuSans.ttf'', ''TrueTypeUnicode'', '''', 32);
Agregando una fuente manualmente, configurando la ruta del archivo de fuente y subiendo el archivo manualmente, pude obtener fuentes existentes que no funcionaron y hacer que funcionen.
Cambia las siguientes líneas:
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ''UTF-8'', false);
$pdf->SetFont(''dejavusans'', '''', 10);
A:
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, ''ISO-8859-1'', false);
$pdf->SetFont(''helvetica'', '''', 10, '''', true);
Y luego comprobar.
Compruebe que el tipo de fuente que está utilizando es como html, pero no retrocederá.
Crea pdf con texto estático y comprueba.
No estoy seguro de cómo funciona para ti sin el método AddFont, pero tuve el mismo problema y al agregar el cuarto param $ subset = false lo solucioné.
$ subconjunto (mixto) si es verdadero incrustado solo un subconjunto de la fuente (almacena solo la información relacionada con los caracteres utilizados); si es falso embedd fuente completa; si ''predeterminado'' usa el conjunto de valores predeterminado usando setFontSubsetting (). Esta opción es válida solo para las fuentes TrueTypeUnicode. Si desea permitir que los usuarios cambien el documento, establezca este parámetro en falso. Si subcontrata la fuente, la persona que recibe su PDF deberá tener su misma fuente para poder realizar cambios en su PDF. El tamaño de archivo del PDF también sería menor porque está incrustando solo parte de una fuente.
$pdf->AddFont(''dejavusans'', '''', ''dejavusans'', false);
$pdf->AddFont(''dejavusans'', ''B'', ''dejavusans'', false);
$pdf->SetFont(''dejavusans'', '''', 10);
Los dejavusans solucionan varios problemas con los caracteres multibyte, por lo que no es posible cambiarlos simplemente a helvetica. Al hacer este cambio, encontramos que el PDF tiene más del doble de tamaño.
Esto es un poco la misma idea que @ user3548394 pero solo hay que hacer este cambio una vez.