我最近将 jsreport 设置为 ASP.NET 应用程序中的嵌入式服务器。经过多次努力,我已经能够使用 .net jsreport.Client 生成 html 报告并将它们返回到浏览器,并以最简单的形式使用以下代码。
对或错,我已经将 jsreport 嵌入到我现有的 VB 应用程序中,并从 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 >> data >> temp
运行上述代码后,会出现一个包含渲染内容的 PDF,但它没有在响应中返回。