2011-07-06 8 views
2

ABCPDFを使用して、HTMlページをPDFに変換します。 highchartsで生成されたチャートを除いて、すべてうまく動作します.usecriptタグはtrueに設定されますが、文字がレンダリングされる領域は空のままです。 IE9では、チャートがレンダリングされます。誰もが解決策を知っていますか?abcpdfでハイチャートのページからPDFを生成

 Doc theDoc = new Doc(); 
     theDoc.HtmlOptions.UseScript = true; 
     theDoc.HtmlOptions.ImageQuality = 100;   

     theDoc.AddImageUrl("/factsheet.html", false, 984, true); 

     byte[] theData = theDoc.GetData(); 
     Response.Clear(); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF"); 
     Response.AddHeader("content-length", theData.Length.ToString()); 
     Response.BinaryWrite(theData); 
     Response.End(); 

答えて

2

この問題は、動的にフェードインアニメーショングラフィックスによって発生することができます。

ABCpdfはすぐにそれが読み込みが完了しているようにページをキャプチャしようとします。したがって、チャートの初期状態が空白の場合、これがレンダリングされたPDFドキュメントにどのように表示されます。

ハイチャートのグラフィックを正しく表示するには、レンダリングを少し遅らせる必要があります。あなたが好きな、何かHTMLレンダリングエンジンとしてのGeckoを指定し、HtmlOptions.OnloadScriptプロパティを経由して遅延を設定することによって、これを達成することができます:上記の例で

Doc doc = new Doc(); 
doc.HtmlOptions.Engine = HTMLEngineType.Gecko; 
doc.HtmlOptions.UseScript = true; 
doc.HtmlOptions.OnLoadScript = "(function(){window.ABCpdf_go = false; setTimeout(function(){window.ABCpdf_go = true;}, 1000);})();"; 
doc.AddImageUrl("http://example.com/"); 
doc.Save("example.pdf"); 

を、JavaScriptがHtmlOptions.OnLoadScriptプロパティに割り当てられていますクライアントサイドを実行し、1秒後に 'window.ABCpdf_go'プロパティを 'true'に設定します。

ABCpdfはHTMLをレンダリングする前にwindow.ABCpdf_goが 'true'または 'undefined'になるのを待ちます。 HtmlOptions.Timeoutを超えた場合、ABCpdfは監視を停止します。

window.ABCpdf_goプロパティはABCpdfに最近追加されたものなので、最新のバージョンで作業していることを確認してください。

関連する問題