tfpdf simbolos reconoce imprimir especiales como codificacion caracteres agregar acentos php character fpdf

php - simbolos - tfpdf



Caracteres especiales en FPDF con PHP (8)

Tengo un formulario web que los usuarios pueden completar y ese contenido llena un PDF con FPDF y PHP. Cuando un usuario ingresa una palabra con un apóstrofe, antes de ella aparece una barra en el PDF.

Del mismo modo, los caracteres especiales como los símbolos de marcas registradas están mal codificados.

Las Preguntas Frecuentes de FPDF dicen usar:

$str = utf8_decode($str);

Pero no estoy seguro de cómo aplicar eso a todo el PDF. Estoy tratando de pensarlo como si fuera una página HTML, pero eso no ayuda.

¿Algunas ideas?


Esta clase es una versión modificada de FPDF que agrega compatibilidad con UTF-8. Además, solo incorpora las partes necesarias de las fuentes que se utilizan en el documento, lo que hace que el tamaño del archivo sea mucho más pequeño que si todas las fuentes estuvieran integradas. Estas características fueron desarrolladas originalmente para el proyecto mPDF.

http://fpdf.org/en/script/script92.php


A continuación funciona para mí (usando FPDF):

function em_jaz($word) { $word = str_replace(''+'', '' '', $word); $word = str_replace("%C3%A9","%E9",$word); /* é */ $word = str_replace("%C3%A8","%E8",$word); /* è */ $word = str_replace("%C3%AE","%EE",$word); /* î */ $word = str_replace("%26rsquo%3B","%27",$word); /* '' */ $word = str_replace("%C3%89","%C9",$word); /* É */ $word = str_replace("%C3%8A","%CA",$word); /* Ê */ $word = str_replace("%C3%8B","%CB",$word); /* Ë */ $word = str_replace("%C3%8C","%CC",$word); /* Ì */ $word = str_replace("%C3%8D","%CD",$word); /* Í */ $word = str_replace("%C3%8E","%CE",$word); /* Î */ $word = str_replace("%C3%8F","%CF",$word); /* Ï */ $word = str_replace("%C3%90","%D0",$word); /* Ð */ $word = str_replace("%C3%91","%D1",$word); /* Ñ */ $word = str_replace("%C3%92","%D2",$word); /* Ò */ $word = str_replace("%C3%93","%D3",$word); /* Ó */ $word = str_replace("%C3%94","%D4",$word); /* Ô */ $word = str_replace("%C3%95","%D5",$word); /* Õ */ $word = str_replace("%C3%96","%D6",$word); /* Ö */ $word = str_replace("%C3%98","%D8",$word); /* Ø */ $word = str_replace("%C3%99","%D9",$word); /* Ù */ $word = str_replace("%C3%9A","%DA",$word); /* Ú */ $word = str_replace("%C3%9B","%DB",$word); /* Û */ $word = str_replace("%C3%9C","%DC",$word); /* Ü */ $word = str_replace("%C3%9D","%DD",$word); /* Ý */ $word = str_replace("%C3%9E","%DE",$word); /* Þ */ $word = str_replace("%C3%9F","%DF",$word); /* ß */ $word = str_replace("%C3%A0","%E0",$word); /* à */ $word = str_replace("%C3%A1","%E1",$word); /* á */ $word = str_replace("%C3%A2","%E2",$word); /* â */ $word = str_replace("%C3%A3","%E3",$word); /* ã */ $word = str_replace("%C3%A4","%E4",$word); /* ä */ $word = str_replace("%C3%A5","%E5",$word); /* å */ $word = str_replace("%C3%A6","%E6",$word); /* æ */ $word = str_replace("%C3%A7","%E7",$word); /* ç */ $word = str_replace("%C3%AA","%EA",$word); /* ê */ $word = str_replace("%C3%AB","%EB",$word); /* ë */ $word = str_replace("%C3%AC","%EC",$word); /* ì */ $word = str_replace("%C3%AD","%ED",$word); /* í */ $word = str_replace("%C3%AF","%EF",$word); /* ï */ $word = str_replace("%C3%B0","%F0",$word); /* ð */ $word = str_replace("%C3%B1","%F1",$word); /* ñ */ $word = str_replace("%C3%B2","%F2",$word); /* ò */ $word = str_replace("%C3%B3","%F3",$word); /* ó */ $word = str_replace("%C3%B4","%F4",$word); /* ô */ $word = str_replace("%C3%B5","%F5",$word); /* õ */ $word = str_replace("%C3%B6","%F6",$word); /* ö */ $word = str_replace("%C3%B7","%F7",$word); /* ÷ */ $word = str_replace("%C3%B8","%F8",$word); /* ø */ $word = str_replace("%C3%B9","%F9",$word); /* ù */ $word = str_replace("%C3%BA","%FA",$word); /* ú */ $word = str_replace("%C3%BB","%FB",$word); /* û */ $word = str_replace("%C3%BC","%FC",$word); /* ü */ $word = str_replace("%C3%BD","%FD",$word); /* ý */ $word = str_replace("%C3%BE","%FE",$word); /* þ */ $word = str_replace("%C3%BF","%FF",$word); /* ÿ */ $word = str_replace("%40","%40",$word); /* @ */ $word = str_replace("%60","%60",$word); /* ` */ $word = str_replace("%C2%A2","%A2",$word); /* ¢ */ $word = str_replace("%C2%A3","%A3",$word); /* £ */ $word = str_replace("%C2%A5","%A5",$word); /* ¥ */ $word = str_replace("%7C","%A6",$word); /* | */ $word = str_replace("%C2%AB","%AB",$word); /* « */ $word = str_replace("%C2%AC","%AC",$word); /* ¬ */ $word = str_replace("%C2%AF","%AD",$word); /* ¯ */ $word = str_replace("%C2%BA","%B0",$word); /* º */ $word = str_replace("%C2%B1","%B1",$word); /* ± */ $word = str_replace("%C2%AA","%B2",$word); /* ª */ $word = str_replace("%C2%B5","%B5",$word); /* µ */ $word = str_replace("%C2%BB","%BB",$word); /* » */ $word = str_replace("%C2%BC","%BC",$word); /* ¼ */ $word = str_replace("%C2%BD","%BD",$word); /* ½ */ $word = str_replace("%C2%BF","%BF",$word); /* ¿ */ $word = str_replace("%C3%80","%C0",$word); /* À */ $word = str_replace("%C3%81","%C1",$word); /* Á */ $word = str_replace("%C3%82","%C2",$word); /* Â */ $word = str_replace("%C3%83","%C3",$word); /* Ã */ $word = str_replace("%C3%84","%C4",$word); /* Ä */ $word = str_replace("%C3%85","%C5",$word); /* Å */ $word = str_replace("%C3%86","%C6",$word); /* Æ */ $word = str_replace("%C3%87","%C7",$word); /* Ç */ $word = str_replace("%C3%88","%C8",$word); `/`* È */ return $word; }

$ content = urlencode ($ content);

$ content = urldecode ($ pdf-> em_jaz ($ content));


Descubrí esto haciendo lo siguiente (el título de página es el nombre del campo de texto en el formulario):

$reportSubtitle = stripslashes($_POST[''pagesubtitle'']); $reportSubtitle = iconv(''UTF-8'', ''windows-1252'', $reportSubtitle);

Luego imprímelo:

$pdf->Write (6, $reportSubtitle);

Esto eliminará cualquier barra no deseada después de los apóstrofes, así como también usará la función ''iconv'' para imprimir caracteres especiales como ™


Ninguno de los anteriores había resuelto mi problema. Lo había resuelto de la siguiente manera:

setlocale(LC_CTYPE, ''en_US''); $value = iconv(''UTF-8'', ''ASCII//TRANSLIT'', $value); $fpdf->Cell(140, 6, $value, 1);

Espero que seas de ayuda

Referencia: Link


Pruebe esta función simple: utf8_encode($txt) . Esto funciona para mi.


Suena como que tienes magic_quotes habilitados. Vea el enlace para desactivar magic_quotes.


Todo lo anterior no funcionó para mí, pero lo logré.

Logré hacerlo "a la manera de los bárbaros" simplemente traduciendo cada carácter extraño a su valor de URL. Entonces simplemente descifra la url y listo!

function em($word) { $word = str_replace("@","%40",$word); $word = str_replace("`","%60",$word); $word = str_replace("¢","%A2",$word); $word = str_replace("£","%A3",$word); $word = str_replace("¥","%A5",$word); $word = str_replace("|","%A6",$word); $word = str_replace("«","%AB",$word); $word = str_replace("¬","%AC",$word); $word = str_replace("¯","%AD",$word); $word = str_replace("º","%B0",$word); $word = str_replace("±","%B1",$word); $word = str_replace("ª","%B2",$word); $word = str_replace("µ","%B5",$word); $word = str_replace("»","%BB",$word); $word = str_replace("¼","%BC",$word); $word = str_replace("½","%BD",$word); $word = str_replace("¿","%BF",$word); $word = str_replace("À","%C0",$word); $word = str_replace("Á","%C1",$word); $word = str_replace("Â","%C2",$word); $word = str_replace("Ã","%C3",$word); $word = str_replace("Ä","%C4",$word); $word = str_replace("Å","%C5",$word); $word = str_replace("Æ","%C6",$word); $word = str_replace("Ç","%C7",$word); $word = str_replace("È","%C8",$word); $word = str_replace("É","%C9",$word); $word = str_replace("Ê","%CA",$word); $word = str_replace("Ë","%CB",$word); $word = str_replace("Ì","%CC",$word); $word = str_replace("Í","%CD",$word); $word = str_replace("Î","%CE",$word); $word = str_replace("Ï","%CF",$word); $word = str_replace("Ð","%D0",$word); $word = str_replace("Ñ","%D1",$word); $word = str_replace("Ò","%D2",$word); $word = str_replace("Ó","%D3",$word); $word = str_replace("Ô","%D4",$word); $word = str_replace("Õ","%D5",$word); $word = str_replace("Ö","%D6",$word); $word = str_replace("Ø","%D8",$word); $word = str_replace("Ù","%D9",$word); $word = str_replace("Ú","%DA",$word); $word = str_replace("Û","%DB",$word); $word = str_replace("Ü","%DC",$word); $word = str_replace("Ý","%DD",$word); $word = str_replace("Þ","%DE",$word); $word = str_replace("ß","%DF",$word); $word = str_replace("à","%E0",$word); $word = str_replace("á","%E1",$word); $word = str_replace("â","%E2",$word); $word = str_replace("ã","%E3",$word); $word = str_replace("ä","%E4",$word); $word = str_replace("å","%E5",$word); $word = str_replace("æ","%E6",$word); $word = str_replace("ç","%E7",$word); $word = str_replace("è","%E8",$word); $word = str_replace("é","%E9",$word); $word = str_replace("ê","%EA",$word); $word = str_replace("ë","%EB",$word); $word = str_replace("ì","%EC",$word); $word = str_replace("í","%ED",$word); $word = str_replace("î","%EE",$word); $word = str_replace("ï","%EF",$word); $word = str_replace("ð","%F0",$word); $word = str_replace("ñ","%F1",$word); $word = str_replace("ò","%F2",$word); $word = str_replace("ó","%F3",$word); $word = str_replace("ô","%F4",$word); $word = str_replace("õ","%F5",$word); $word = str_replace("ö","%F6",$word); $word = str_replace("÷","%F7",$word); $word = str_replace("ø","%F8",$word); $word = str_replace("ù","%F9",$word); $word = str_replace("ú","%FA",$word); $word = str_replace("û","%FB",$word); $word = str_replace("ü","%FC",$word); $word = str_replace("ý","%FD",$word); $word = str_replace("þ","%FE",$word); $word = str_replace("ÿ","%FF",$word); return $word; }

Y por supuesto me llama la función.

$weirdword = "Días, Miércoles, Sábado,miércoles"; //Some spanish days $weirdword = em($weirdword); $weirdword = urldecode($weirdword); echo $weirdword;

Dando salida:

Días, Miércoles, Sábado, Miércoles


ninguna de las soluciones anteriores funcionó para mí, así que resolví el problema de esta manera:

$this->AddFont(''Arial'','''',''arial.php''); $this->SetFont(''Arial'','''',12); $this->Cell(0,5,iconv("UTF-8", "CP1250//TRANSLIT", $string),0,1,''L'');

Antes de intentar las líneas anteriores, haga lo siguiente:

Copie desde c: /Windows/Fonts/Arial.ttf a la carpeta / tutorial de FPDF.

Editar el contenido de makefont.php

require(''../makefont/makefont.php''); MakeFont(''arial.ttf'',''cp1250'');

Ejecutar makefont.php

Copie los siguientes archivos en la carpeta / font de FPDF: arial.php arial.ttf arial.z

Finalmente, defina la "carpeta de fuentes". Abra fpdf.php (archivo de la biblioteca principal) y agregue:

define(''FPDF_FONTPATH'',''font'');

El PDF me funciona con todos los caracteres especiales, creo que fue el problema en la fuente Arial, que FPDF usa originalmente. También debería funcionar con otras fuentes, si son compatibles con tus personajes. ¡Buena suerte!