2015-10-06 4 views
0

У меня есть веб-страница, на которой есть диаграмма jvas canvas. Когда я сгенерировал pdf-файл, единственная таблица jas canvas не отображается в pdf. Как я могу решить эту проблему?Экспорт веб-страницы в pdf

+0

как вы создаете диаграмму js? это svg? –

+0

В функции jquery. – Vicky

+0

$(). Canvasjschart(); – Vicky

ответ

0

У меня была эта проблема, мы закончили тем, что использовали: http://www.highcharts.com/, а затем экспортировали в png ->http://www.highcharts.com/docs/export-module/export-module-overview.

После преобразования svg-> png мы преобразовали в PDF с использованием стандартных библиотек.

+0

Прошел через сайт. Что будет писать в C# для экспорта в pdf? – Vicky

+0

хорошо, вам нужно сделать графики png/gif перед тем, как сделать преобразование в pdf. Поскольку у вас уже есть преобразование PDF на месте, используйте тот же механизм, что и вы изначально, просто убедитесь, что вы конвертируете в PDF после преобразования изображений. –

0


Чтобы экспортировать диаграмму JS в PDF, сначала вам необходимо преобразовать данные диаграммы в поток байтов изображения холста, а затем в PDF.
Следующий код поможет вам конвертировать JS таблицу в формате PDF
В ASPX Page

<asp:HiddenField ID="hfImageData" runat="server" /> 
    <div id="dvTable"> 
     <div class="row"> 
        <div class="col-md-6 col-sm-6 col-xs-12"> 
           <div class="x_panel"> 
            <div class="x_title"> Your chart data comes here         <h2>           SLA         </h2>          

            </div> 
            <div class="x_content"> 
             <canvas id="canvas000"></canvas> 
            </div> 
           </div> 
       </div> 
     </div> 
</div> 
    <asp:Button ID="btnExport" runat="server" Text="Export to PDF" CssClass="btn btn-primary" onclick="btnExport_Click" OnClientClick="return ConvertToImage(this)" /> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript" src="http://cdn.rawgit.com/niklasvh/html2canvas/master/dist/html2canvas.min.js"></script> 
    <script type="text/javascript"> 
     function ConvertToImage(btnExport) { 

      html2canvas($("#dvTable")[0]).then(function (canvas) { 

       var base64 = canvas.toDataURL(); 

       $("[id*=hfImageData]").val(base64); 
       __doPostBack(btnExport.name, ""); 
      }); 
      return false; 
     } 
    </script> 

В Aspx.cs Page

protected void btnExport_Click(object sender, EventArgs e) 
    { 
     string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1]; 
     byte[] bytes = Convert.FromBase64String(base64); 


     string fileName = "Chart.pdf"; 
     iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(bytes); 
     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      var pgSize = new iTextSharp.text.Rectangle(1600, 1000); 
      Document document = new Document(pgSize, 88f, 88f, 10f, 10f); 
      PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); 
      document.Open(); 
      document.Add(image); 
      document.Close(); 
      bytes = memoryStream.ToArray(); 
      memoryStream.Close(); 
     } 
     Response.Clear(); 
     Response.Buffer = true; 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/pdf"; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); 
     Response.BinaryWrite(bytes); 
     Response.Flush(); 
     Response.End(); 
    } 

независимо присутствуют данные под сНу ид «dvTable "будет преобразовано в PDF, когда мы нажмем на Export

+0

Для этого требуется iTextSharp dll –