2016-01-05 91 views
2

我有一個在MS Excel中創建的模板文件,導出爲html。模板文件包含多個字段,需要使用交互式PyQt4表單應用程序填充參數。問題是PyQt4 webview正確地呈現文件,並且只能在單個html文件但是對於多個文件(即生成css和xml文檔)時才能直接打印,並且不會返回正確的輸出。沒有css和xml文件,佈局和樣式不匹配,會產生亂碼。 代碼是作爲使用pyqt webview的pdf渲染

dpi = 50 
printer = QtGui.QPrinter() 
printer.setResolution(dpi) 
printer.setPageSize(QPrinter.A4) 
printer.setPageMargins(12, 20, 10, 5, QPrinter.Millimeter) 

document = QtWebKit.QWebView(self) 
document.setHtml(self.template_html 
       ,QUrl("./misc/")) // here "misc" folder contains another 
            // folder "template_html_files" containing 
            // the css and xml file 

printer.setOutputFormat(QPrinter.PdfFormat) 
printer.setOutputFileName("added.pdf") 

self.template_html包含主要生成的頁面的html標籤(手動使用利用open加載)和以下文件是由MS Excel的產生,其將被包含

filelist.xml 
sheet001.htm 
stylesheet.css 
tabstrip.htm 

目錄結構是

./ 
| 
|-----MainApplication.py 
|-----misc 
     | 
     |-----template_html.html 
     |-----template_html_files 
       | 
       |-------filelist.xml 
       |-------sheet001.htm 
       |-------stylesheet.css 
       |-------tabstrip.htm 

回答

1

QWebView,setHtml()第二個參數必須是一個QUrl。我認爲,QUrl不能是路徑字符串,它必須是url,請參閱 Qt Documentation QUrl

最簡單的方法是,使用HTML文件直接:

self.load(QtCore.QUrl('file://path to file') 

鏈接在HTML的腦袋像被發現

<LINK type="text/css" rel="stylesheet" href="./misc/Formatierung.CSS"> 

我只得到它具有絕對的工作,則下列html文件的路徑