Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

481
Vistas
Obtención del contenido del archivo PDF: "Caracteres UTF-8 con formato incorrecto, posiblemente codificados incorrectamente"

Estoy trabajando en una solución donde:

  • una aplicación de una sola página vue está leyendo desde un punto final API basado en PHP (Laravel);
  • un punto final de la API de PHP solicita un servicio externo que, a su vez, utiliza la aplicación express de nodo/titiritero para imprimir una página;

La aplicación Node.js devuelve el archivo de la siguiente manera:

 // create pdf, save it locally .... fs.readFile(pdf, function (err,data){ response.set({ 'content-type': 'application/pdf; charset=utf-8' }); response.send(data); });

El punto final de PHP obtiene binario usando curl:

 $request['url'] = 'https://www.test.com'; $payload = json_encode($request); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,'http://service.url'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json; charset=UTF-8']); curl_setopt($ch, CURLOPT_ENCODING ,'UTF-8'); $data = curl_exec($ch); curl_close($ch); return $this->json(['data' => $data]);

La aplicación vue obtiene el archivo de la siguiente manera:

 async getPdf({ requestId }) { const result = await Api.get(`/pdf`, { timeout: 30000, }); return result.data; }, .... .... const blob = new Blob([response], { type: 'application/pdf' }); const link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); link.download = 'test.pdf'; link.click();

El problema ocurre cuando intento obtener el búfer del archivo. El punto final de PHP me da el error " Malformed UTF-8 characters, possibly incorrectly encoded ".

Traté de resolver esto agregando $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8'); para rizar la respuesta, pero esto resultó en un PDF vacío, supongo que este es el problema de codificación. El archivo PDF está perfectamente bien, ya que primero se guarda localmente y luego lo procesa la aplicación de nodo.

¿Alguna idea sobre cómo resolver el problema de codificación? ¿Hay una mejor manera de transferir el búfer de archivos?

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda