2011-04-11 26 views
11

Estoy tratando de guardar un archivo pdf dinámico generado desde un servidor web utilizando el módulo urllib2 de python. Yo uso siguiente código para obtener datos del servidor y para escribir los datos en un archivo con el fin de almacenar el archivo PDF en un disco local .:Escribir un archivo PDF desde la URL usando urllib2

import urllib2 
import cookielib 

theurl = 'https://myweb.com/?pdf&var1=1' 
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders.append(('Cookie', cookie)) 
request = urllib2.Request(theurl) 

print("... Sending HTTP GET to %s" % theurl) 
f = opener.open(request) 
data = f.read() 
f.close() 
opener.close() 

FILE = open('report.pdf', "w") 
FILE.write(data) 
FILE.close() 

Este código funciona bien pero el archivo pdf escrita no es muy conocido por adobe reader. Si realizo la solicitud manualmente usando firefox, no tengo problemas para recibir el archivo y puedo visualizarlo sin problemas. Comparando los encabezados http recibidos (firefox y urrlib) la única diferencia es un campo de encabezado http llamado "Transferencia-Codificación = fragmentada". Este campo se recibe en firefox pero parece que no se recibe cuando realizo la solicitud urllib. ¿Alguna sugerencia?

Respuesta

17

cambiante intento,

FILE = open('report.pdf', "w") 

a

FILE = open('report.pdf', "wb") 

La 'b' indica adicional para escribir en modo binario. Actualmente estás escribiendo un archivo binario en modo ASCII/texto.

+0

Respuesta directa y simple, muchas gracias. – martinbedouret

+0

Gracias Justin, acabo de comprobar y está funcionando bien ahora, muy apreciado. – martinbedouret

+1

¡Genial! Continúe y haga clic en la marca de verificación a la izquierda de la respuesta para que otras personas sepan que se responde. –

Cuestiones relacionadas