6

asp.net アプリに evoPDF を統合しようとしています。ajaxを介してonclickでhtmlファイルからhtmlの一部を送信しています。この部分まではすべてうまくいきます。これらのメソッドを EvoPdf API から呼び出すと、

 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;

  }

ドキュメントによると、3 番目の引数は、html のチャンクを抽出した元の Html の完全な URL でなければなりません。localhost/323​​2 を試してもうまくいかなかったため、アプリを Web にアップロードしました。しかし、生成された Html に適用されている CSS が表示されません。ドキュメントでは、追加することも推奨されています

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

そして、この方法を使用してください。

        pdfConverter.GetPdfBytesFromHtmlString(String html);

上記で試したものはCSSを適用しません。何かご意見は....

4

2 に答える 2

3

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

ビューを生成するために必要なスニペットだけでなく、完全に有効な html を渡すこともお勧めします。舞台裏では (少なくとも私たちのバージョンの evoPDF では)、ブラウザ インスタンスを巻き上げてスクリーンショットを撮っているだけです。doctype によってレンダリングが少し異なります。

于 2013-08-06T14:15:29.423 に答える
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);
于 2017-06-16T00:15:31.547 に答える