2013-08-06 17 views
6

私のasp.netアプリケーションにevoPDFを統合しようとしています。私は、HTMLファイルのonclickからajaxを通してhtmlの一部を送信しています。この部分まですべてが機能します。今、私はEvoPdf APIからこれらのメソッドを呼び出すとき。CSSをHTML文字列に適用できません

1. GetPdfBytesFromHtmlStream(Stream, Encoding,urlbase) 

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

私が送信しています私のHTMLのチャンクは、外部ファイルにあるCSSは3番目の引数はでなければならないのドキュメントによると

.lol { 

     background-color: red; 

    } 

のようなものである

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

    </ol> 

のようなものです元のHTMLのフルURLで、htmlの塊を抽出した場所です。 localhost/3232が動作しなかったので、私はウェブで自分のアプリをアップロードしました。しかし、私は生成されたHTMLにCSSが適用されているのを見ることができません。また、追加することをお勧めする文書で

 <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男uは、適切な答えを与えることができます私の質問に – aggy

答えて

3

evoPDFを使用して外部ファイルにHTMLを含めることは可能ですが、私はそれをお勧めしません。その代わりに、ドキュメントの先頭にスタイルをインライン化するだけです。私たちがCareers 2.0のPDF Generatorをセットアップしていたとき、URLは同じディレクトリ構造内の相対リンクだけでなく、Webサーバーの背後にあるライブURLでなければならないことを覚えています。 evo pdfにタイムアウトがあり、読み込みに時間がかかりすぎると画像が失われる可能性があります。また、インラインのすべてでよりうまく再生できます。

ビューを生成するために必要なスニペットだけでなく、完全に有効なhtmlを渡すこともおすすめします。シーンの裏側(evoPDFのバージョンでは少なくとも)では、ブラウザのインス​​タンスを取得してスクリーンショットを撮るだけです。それらは、doctypeに応じて少し異なってレンダリングされます。

+0

はい、あなたはインラインCSSについて正しいです。私は大学の開発者です。私は1つのアプリのためにEvopdfを書いていない。しかし、大学で動くすべてのアプリのために。それは2つのことを行うべきです。 1は全体のurl htmlをPdfに変更し、別の変更部分をhtml to pdfに変更します。だからこそ、私はインラインの引用だけをサポートしたくなかったのです。私は他のすべてのアプリから何を期待するのか分からないからです。私もライブURLへのアップロードとCSSの呼び出しを試みました。まだCSSはありません – Rabin

+0

完全な例を見ずに私が考えることができる唯一の他の事は、ベースタグがすべての相対URLのルートであるフォルダを指すことになっていることです。実際のファイルを直接指すことは想定されていません。それ以外の場合、相対URLはすべて破棄されます。 –

0

この問題はEvoPdfで発生しました。私のための修正はweb.configからbaseURLを参照することでした。私はHttpContext.Current.Request.Url.AbsoluteUriを使用しようとしていました。 2つの環境で動作しましたが、別のサーバーでテストした場合は動作しませんでした。

<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); 
関連する問題