2016-03-31 38 views
2

私は、VB.NETのSelectPDFを使用してページからpdfへhtmlを保存しようとしています。 私はWebページjsonからhtmlで渡して保存し、サーバー側で取得します。コンバータはhtmlを正常に変換します(エラーはスローされません)。selectPDFはHTML文字列からPDFを保存しません

Javascriptを:

 var dataToSend = JSON.stringify({ 'html': $("#content").html() }); 
       $.ajax({ 
        url: "/leaderboards/pdf.aspx", 
        type: 'POST', 
        data: dataToSend, 
        contentType: "application/json; charset=utf-8", 
        success: function (data) { 
         $("#dialog").dialog("close"); 
         console.log(data); 
        }, 
        error: function (errorText) { 
         console.log(errorText); 
        } 
       }); 

pdf.aspx

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Try 
     Dim jsonString = New StreamReader(Request.InputStream).ReadToEnd() 
     Dim jsonObj As JObject = JObject.Parse(jsonString) 
     Dim html As String = jsonObj.Item("html") 


     If html.Length > 0 Then 
      html = "<html><body>" & html & "</body></html>" 


      ' read parameters from the webpage 
      Dim webPageWidth As Integer = 1024 
      Dim webPageHeight As Integer = 0 


      ' instantiate a html to pdf converter object 
      Dim converter As New HtmlToPdf() 

      ' create a new pdf document converting an url 
      Dim doc As PdfDocument = converter.ConvertHtmlString(html, Request.Url.AbsoluteUri) 
      ' save pdf document 

      ' !!! code breaks here with exception: Unable to evaluate expression.!!! 
      doc.Save(Response, False, "C:\MyProject\Pdf\Sample.pdf") 

      ' close pdf document 
      doc.Close() 
     Else 

      Response.Write("No Data") 
     End If 
    Catch ex As Exception 
     Response.Write("Error :" + ex.Message) 
    End Try 

End Sub 

私は

doc.Save("C:\MyProject\Pdf\Sample.pdf") 

にコードを改行を変更した場合、私はその場所に保存された空のPDFを持っています。私はまた、HTMLで文字列を保存しようとしたが、例えば成功しませんでした:

html = "<html><body>hello world</body></html>" 

がHTMLを表す文字列からこのSelectPDFライブラリとPDFを保存することが可能ですか?はいの場合、私は何故 "doc.Save(Response、False、" C:\ MyProject \ Pdf \ Sample.pdf ")というエラーが出るのですか?ありがとう

答えて

2

pdfドキュメントをディスクに保存する必要がある場合は、doc.Save(Response、False、 "C:\ MyProject \ Pdf \ Sample.pdf")メソッドコールを使用しないでください。 doc.Save(Response、False、 "Sample.pdf")の目的は、PDFをブラウザに送信し、ダウンロード名を提案することです(Sample.pdf - パスなし)。

ディスクにPDFを保存するには、doc.Save( "C:\ MyProject \ Pdf \ Sample.pdf")を使用します。

簡単なテストを実行してください、それが正常に動作します:htmlとbaseUrlにあなたが何であるかを確認し、

あなたは変換は、単純なHTMLで正常に動作確認した後
Dim html as String = "<html><body>hello world</body></html>" 
Dim doc As PdfDocument = converter.ConvertHtmlString(html, "") 
doc.Save("C:\MyProject\Pdf\Sample.pdf") 

は(問題になることはありません)変換メソッドConvertHtmlStringに送信します。それらをファイルに記録します。彼らがあなたが期待しているものかどうかを見てください。

は、ロードに時間がかかる場合がありますJavaScriptを使用して、その変換前の遅延を入力しようとしているので:

' specify the number of seconds the conversion is delayed 
converter.Options.MinPageLoadTime = 2 
+0

は非常にありがとう: http://selectpdf.com/docs/ConversionDelay.htm

それはこのようなものになります多く! converter.Options.MinPageLoadTime = 2を追加すると助けになりました! – kaplievabell

+0

物理ファイルに保存する代わりに、このPDFファイルをバイト配列に変換する方法を教えてください。親切に私を助けてください。 –

関連する問題