Als Python Greenhorn werde ich mir Mühe geben meine Frage/Problem so weit ich mir vorstellen kann, möglichst detailliert zu definieren. Kann aber aus Unwissenheit sein dass ich nicht alle nötigen Infos eingepackt habe.
Ich bin dabei mit Python 2.6.6 auf Debian Squeeze und apache eine webseite zu erstellen.
Dafür habe ich das Verzeichnis "/opt/reporting/htdocs/reporting" als web start-Verzeichnis definiert. Darin auch eine datei "index.py" plaziert die mir ein pdf generiert und im Verzechnis "/opt/reporting/htdocs/reporting/pdf_reports" ablegt.
Nun möchte ich nach dem Abspeichern der pdf Datei, dass ein neuer tab im web-browser geöffnet wird und die pdf Datei angezeigt wird. Dafür habe ich den Befehl "webbrowser.open" gefunden, aber mit dem relative Pfad scheitert es.
Code: Alles auswählen
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
pdf_report_path="/opt/reporting/htdocs/pdf_reports/"
report_list_path="/opt/reporting/htdocs/report_list/"
from mod_python import apache,util
import sys, os, pprint
from lib import *
import defaults, config, htmllib, pickle, webbrowser
from urlparse import urlparse
sys.path.append("/usr/share/pyshared/jasperclient")
from jasperclient import JasperClient
def handler ( request ):
url = 'http://10.10.100.10:8080/jasperserver/services/repository?wsdl'
j = JasperClient(url,'jasperadmin','jasperadmin')
report_list = j.listReports(dir="")
report_list = j.listReports("/reports/samples")
f = file(report_list_path+'reportList.txt','w')
pickle.dump(report_list, f)
f.close()
url = 'http://10.10.100.10:8080/jasperserver/services/repository?wsdl'
j = JasperClient(url,'jasperadmin','jasperadmin')
ret = j.runReport("/reports/samples/AllAccounts","PDF")
f = file(pdf_report_path+'AllAccounts.pdf','w')
f.write(ret['data'])
f.close()
webbrowser.open("./pdf_reports/AllAccounts.pdf",2,)
request.content_type = 'text/html'
request.write ( "<html>" )
request.write ( "<head>" )
request.write ( "<title>Text Document</title>" )
request.write ( "</head>" )
request.write ( "<body bgcolor='#D2D2D2'>" )
request.write ( "<table align='center' bgcolor='#000000' cellspacing='1px' cellpadding='5px' width='60%'>" )
request.write ( "<tr><td bgcolor='#FFFFFF' align='center'>" )
request.write ( "REPORTING" )
request.write ( "</td></tr>" )
request.write ( "</table>" )
request.write ( "</body>" )
request.write ( "</html>" )
return apache.OK
Ich auf den Befehl "webbrowser.open("./pdf_reports/AllAccounts.pdf",2,)" die Fehlermeldung im apache error_log
"w3m: Can't load ./pdf_reports/AllAccounts.pdf." bekommen. Auch andere Versuche scheiterten.
Die Datei kann ich mit manuell eingetragenem Pfad im web-browser ansehen.
Gibt es für Aufrufe von Dateien in anderen Verzeichnissen und den Wechsel in andere Verzeichnisse irgendwie ein Konzept oder bewährtes Verfahren ???
Ich hoffe, dass es irgendwie relativ (zB. zum Webseiten Startverzeichnis) und ohne absoluten Pfad, wie "http://www.testseite.com/reporting/pfd_ ... counts.pdf" gehen sollte. Oder irre ich mich ???
Nur da stehe ich auf dem Schlauch.
Vielen Dank für Eure Anworten
Stefano