2013-08-06 15 views
6

我正在嘗試在我的asp.net應用程序上集成evoPDF。我通過ajax發送html文件的一部分onclick。一切正常,直到這部分。現在,當我從EvoPdf API調用這些方法時。無法將CSS應用於html字符串

1. GetPdfBytesFromHtmlStream(Stream, Encoding,urlbase) 

2. SavePdfFromHtmlStringToFile(String html,string filename,urlbase) 

我的HTML塊,我送的東西一樣

<ol class = "lol"> 
     <li> HEY </li> 
     <li> Now </li> 

    </ol> 

的CSS這是在外部文件是一樣的東西

.lol { 

     background-color: red; 

    } 

根據文檔的第三個參數必須是原始Html的完整網址,其中提取了html的塊。由於嘗試使用localhost/3232無法正常工作,因此我上傳了我的應用程序。但是,我看不到任何CSS在生成的Html中被應用。在他們還建議追加文件

 <HEAD> <BASE HREF="full url to your html file"> </HEAD> 

而且,使用這種方法。

 pdfConverter.GetPdfBytesFromHtmlString(String html); 

沒有我上面嘗試應用CSS。任何想法....

+0

http://stackoverflow.com/questions/37392418/even-after-providing-fully-qualified-url-in-the-html-string-evopdf-converter-is傢伙可以你給一個合適的回答對我的問題 – aggy

回答

3

雖然它可能有一個外部文件與evoPDF的HTML,我不推薦它。相反,只需在文檔頭部內聯樣式。當我們爲Careers 2.0設置PDF生成器時,我記得這些網址必須是網頁服務器後面的實時URL,而不僅僅是相同目錄結構中的相關鏈接。在evo pdf中也有一個超時,如果加載時間過長,可能會導致圖像丟失,而且在內嵌所有內容時也會更好。

我也建議通過它完全有效的HTML,而不僅僅是你需要生成的視圖片段。在幕後(至少在我們的evoPDF版本中),它只是提升瀏覽器實例並截圖。根據文檔類型的不同,它們呈現出一些不同。

+0

是的,你是正確的內嵌的CSS。我是一所大學的開發人員。我不是爲一個應用程序編寫Evopdf。但是對於大學中運行的所有應用程序。它應該做2件事。 1將整個url html更改爲Pdf,並將html的另一部分更改爲pdf。所以,這就是爲什麼我不想只支持內聯引用,因爲我不知道從所有其他應用程序期望什麼。我也嘗試過,上傳到實時url並調用css。仍然沒有CSS – Rabin

+0

我可以想到的另一個建議,而沒有看到一個完整的例子,基本標籤應該指向所有相關url的根目錄。它不應該直接指向一個實際的文件,否則所有相關的URL都會被破壞。 –

0

我遇到了這個問題與EvoPdf。對我來說,修復是從web.config引用baseURL。我正在嘗試使用HttpContext.Current.Request.Url.AbsoluteUri;它在兩種環境中工作,但在另一臺服務器上測試時沒有。

<appSettings> 
    <add key="baseURL" value="http://your-domain.com/" /> 
    </appSettings> 

因此,您專門設置了它,並且CSS在更改後正確顯示。也適用於https。您可以硬編碼進行測試,不使用ConfigurationManager。

 TextWriter outTextWriter = new StringWriter(); 

     Server.Execute("Page1.aspx", outTextWriter); 
     Server.Execute("Page2.html", outTextWriter); 

     string htmlStringToConvert = outTextWriter.ToString(); 
     outTextWriter.Close(); 

     // Use the current page URL as base URL 
     string baseUrl = ConfigurationManager.AppSettings["baseURL"].ToString(); //HttpContext.Current.Request.Url.AbsoluteUri; 

     // Convert the page HTML string to a PDF document in a memory buffer 
     byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlStringToConvert, baseUrl);