0

最近、ASP.NET アプリケーションの組み込みサーバーとして jsreport をセットアップしました。多くの苦労の末、.net jsreport.Client を使用して、次のコードを最も単純な形式で使用して、HTML レポートを生成し、ブラウザーに返すことができました。

善悪を問わず、既存の VB アプリケーションに jsreport を埋め込み、すべてのサンプル コードを C# から変換しました (私は C# の専門家ではありません)。

Imports System.Net
Imports System.Web.Http
Imports System.Net.Http
Imports System.Data
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Net.Http.Headers
Imports jsreport.Client
Imports jsreport.Client.Entities

<ActionName("ProcessReport")>
Public Async Function ProcessReport(ByVal reportID As Integer) As Threading.Tasks.Task(Of HttpResponseMessage)

Dim _reportingService = EmbeddedServer.ReportingService
Dim Report = Await _reportingService.RenderAsync(New RenderRequest() _ 
With {.template = New Template() _
     With {
          .recipe = "html",
          .content = "<h1>Some content</h1>"
         }
    }
)

Dim ReportContent As String = New StreamReader(Report.Content).ReadToEnd()
Dim response = New HttpResponseMessage()
response.StatusCode = HttpStatusCode.OK
response.Content = New StringContent(ReportContent)
response.Content.Headers.ContentType = New MediaTypeHeaderValue(Report.ContentType.MediaType)
Return response

End Function

しかし、私の問題は、以下に示すように、phantom-pdf レシピを使用して PDF を作成できないことです。ReportContent は PDF ドキュメントですが、空で内容がありません。

With {
     .recipe = "phantom-pdf",
     .content = "<h1>Some content</h1>"
    }

私が見たら注意してください:

App_Data >> jsreport-net-embedded >> データ >> temp

上記のコードを実行した後、レンダリングされたコンテンツを含む PDF がありますが、応答で返されません。

4

1 に答える 1

1

そして、私はVBの男ではありません。

ただし、次のコードは正しいpdfをファイルに保存します

Dim fs As New FileStream("f:\\temp\\out.pdf", FileMode.Create)
Report.Content.CopyTo(fs)

次のコードは、asp.net mvc で正しく pdf を返します

Return New FileStreamResult(Report.Content, "application/pdf")

Visual Studio ブラウザー リンクを有効にして PDF を表示する際に問題が発生しました 。 -2013/

オンプレミスの jsreport に完全にインストールするか、Web リクエストのレンダリングを自分で実行することもできます。レンダリング要求を行うための.net 4と互換性のあるプレーンコードは次のとおりです https://gist.github.com/pofider/1897f8a1b6dab72a49b0

于 2015-05-06T08:01:28.310 に答える