2010-10-28 17 views
0

J'ai un problème lorsque j'essaie de convertir un fichier XML dans un fichier PDF, ici je vais expliquer brièvement comment j'essaie de générer un fichier PDF.Convertir xml en pdf en Python

Nous supposons que je reçois les informations à partir d'une base de données, la source de code est le suivant:

import pyodbc,time,os,shutil,types 
import cStringIO 
import ho.pisa as pisa 
import urllib 

def HTML2PDF(data, filename, open=False): 

    """ 
    Simple test showing how to create a PDF file from 
    PML Source String. Also shows errors and tries to start 
    the resulting PDF 
    """ 

    pdf = pisa.CreatePDF(
     cStringIO.StringIO(data), 
     file(filename, "wb")) 

    if open and (not pdf.err): 
     os.startfile(str(filename)) 

    return not pdf.err 


fout = open(BE_Full.xml","w") 
fout.write("<?xml-stylesheet type='text/xsl' href='styles/Full_Report.xslt' alternate='no' title='Short' ?>") 
fout.write("<files>") 
fout.write("<validationreport>") 
fout.write("xmlvalidations/" + row.country + "_validation_" + row.dbversion + ".xml") 
fout.write("</validationreport>") 
fout.write("<reportformat>reports/EN_Report.xml</reportformat>") 
fout.write("</files>") 
fout.write 
fout.close() 
f = urllib.urlopen("file:///C:/Documents%20and%20Settings/dmarban/Escritorio/python/BE_Full.xml") 
s = f.read() 
f.close() 

HTML2PDF(s, "test.pdf", open=True) 

Le premier que je produis est un fichier XML qui a le contenu suivant:

<?xml-stylesheet type='text/xsl' href='styles/Full_Report.xslt' alternate='no' title='Short' ?> 
<files> 
<validationreport>xmlvalidations/BE_validation_mid2010.xml</validationreport> 
<reportformat>reports/EN_Report.xml</reportformat> 
</files> 

Quand j'exécute ce code:

urllib.urlopen("file:///C:/Documents%20and%20Settings/dmarban/Escritorio/python/BE_Full.xml") 
    s = f.read() 
    f.close() 
HTML2PDF(s, " BE_Full.pdf ", open=True) 

Il me génère le fichier suivant "BE_Full.pdf", mais au lieu d'afficher le contenu du dossier « xmlvalidations/BE_validation_mid2010.xml » me montrer le contenu des étiquettes qu'ils sont en format pdf, il montrerait le code suivant:

xmlvalidations/BE_validation_mid2010.xml reports/EN_Report.xml 

Ma question est, comment je peux parser un fichier XML en python, je l'ai lu comme un fichier HTML?

+0

pourquoi faites-vous 'urlopen' sur un fichier local? – SilentGhost

+0

Parce que je veux obtenir le contenu XML, donc je cherchais sur Internet, j'ai vu un site Web qui utilise cette bibliothèque. Tout commentaire sera le bienvenu. Merci à l'avance Nice, ce qui a trait David – user490186

+0

'urlopen' est seulement pour tirer des documents sur le web. Votre fichier XML n'est pas sur le Web. Par conséquent, vous l'ouvrez comme un fichier normal, en utilisant 'open ('myxmlfile.xml', 'r')'. –

Répondre

1

Je ne suis pas sûr de bien comprendre la question, mais attendez-vous que pisa applique la transformation xslt? Je ne pense pas qu'il fera cela (vous pouvez regarder lxml et l'utiliser pour appliquer le xslt avant convertir en pdf avec pisa)