Tengo el siguiente código que descarga un archivo PDF de la API de Xero en Zapier. El código funciona bien, pero el archivo PDF siempre es una página en blanco. Inspeccioné el contenido del archivo PDF devuelto (en un archivo de texto) y los caracteres superiores se devuelven como signos de interrogación en forma de diamante (caracteres especiales). Vea la captura de pantalla a continuación.
También lo comparé con un archivo PDF en funcionamiento y los signos de interrogación en forma de diamante se muestran como È en el archivo bueno.
Aquí está mi código:
const pdfURL = { url: 'https://api.xero.com/api.xro/2.0/Quotes/' + bundle.inputData.QuoteID, method: 'GET', headers: { 'Accept': 'application/pdf', 'Authorization': `Bearer ${bundle.authData.access_token}`, 'Xero-tenant-id': bundle.inputData.TenantID, 'Content-type': 'application/pdf' } }; const fileRequest = await z.request(pdfURL); const url = await z.stashFile(fileRequest, fileRequest.length, 'Quote #123' + '.pdf', 'application/pdf;'); // knownLength and filename will be sniffed from the request. contentType will be binary/octet-stream return {url};Aquí hay una captura de pantalla del contenido del archivo PDF corrupto:
¿Alguien sabe cuál podría ser el problema?
He intentado configurar el conjunto de caracteres en 'utf-8' sin éxito.
Cualquier ayuda sería muy apreciada.
Acabo de tener exactamente el mismo problema aquí.
Para resolverlo, simplemente configure el parámetro raw:true en z.request(), evitará analizar y estropear la codificación.
Como eso:
const pdfURL = { ... raw: true };Su archivo se procesará correctamente.