@Bart-Slegers - we moved from Crystal to JSReport almost 3 years ago. Obviously, these are two completely different architectures; so comparisons aren't really valid. The number of records is almost irrelevant. For our reports they take approximately 5 pages per seconds. One other reason for performance degradation was dynamic headers or footers (for example, if the footer says page x of y). We found some settings that speed footers up.
But if we estimate that the number of pages is going to be very large, then we split the job and submit to JSReport in parallel, and then merge the parts using PDFSharp.
Overall, we found that using some analysis, and asking questions on this forum, we were able to achieve acceptable performance even in very complex reports.
Note: We are only JSReport customer; @jan_blaha doesn't pay me for saying good things about his software; although I don't mind ;)
Posts made by virshu
-
RE: slow performance - timeout on 1000+ records
-
RE: Chromium revision is not downloaded. Run "npm install" or "yarn install
We had the same problem at the customer site. Turns out, they opened access to npm repositories; but in order to download Chromium, puppeteer tries to download from https://XXX.1e100.net which was blocked (it's Google download site, but it shows up on suspicious lists; so it was blocked). Third-level domain varies, but it is something like mia07s48-in-f16. Anyway, once they opened 172.217.8.0/24 subnet, it started working.
Hope that helps somebody -
studio doesn't refresh the files from the disk
Does the jsreport studio cache template files somewhere? when I make the changes in the file with the editor, studio doesn't reflect the changes. Similar, when I run the template from the studio or from .NET code, it also runs the old (cached) version.
I know it is the right file because if I save from the studio, it saves (and overwrites) the file on the drive. -
RE: Looks like a typo in SerializerHelper.ParseReportMeta
OK, I think I know what happened... We had
jsreport.Types
2.2.7 installed, but we did not havejsreport.Shared
installed at all (it says "internal" and it seems that it worked fine without it being explicitly installed). I don't know how package dependencies are configured - but it looks like we had earlier version reference Shared 2.0.0; and after we upgraded Types - it continued to reference 2.0.0, rather than force upgrade to 2.0.1You are right - we could install Shared 2.0.1 explicitly (which we just did, and it indeed works fine), or (what we did) we reverted Types to 2.2.6 that continued to use Shared 2.0.0 implicitly.
Thank you, it's all good now!
-
RE: Looks like a typo in SerializerHelper.ParseReportMeta
No. I had a problem with Shared 2.0.1 and Types 2.2.7... after downgrading both the problem went away. As I said in the original post - the problem is pretty obvious ;)
-
Looks like a typo in SerializerHelper.ParseReportMeta
A few days ago my jsReports started throwing an exception. I am running in the "remote" mode - ASP.NET Core Web application invoking jsReport running as a separate application. I have
jsreport.Clinet
,jsreport.Shared
andjsreport.Types
installed. I can see that report gets submitted and executed successfully.However, after return I am getting the following exception:
Method not found: 'Void jsreport.Types.ReportMeta.set_ReportPernamentLink(System.String)' at jsreport.Shared.SerializerHelper.ParseReportMeta(IDictionary`2 meta) at jsreport.Shared.SerializerHelper.ParseReportMetaFromHeaders(IDictionary`2 headers) at jsreport.Client.ReportingService.ReportFromResponse(HttpResponseMessage response) at jsreport.Client.ReportingService.RenderAsync(String request, CancellationToken ct)
I see
ReportMeta.ReportPermanentLink
as opposed toreportMeta.set_ReportPernamentLink(meta.MetaValue("pernamentLink"));
inSerializerHelper.ParseReportMeta
. Should be easy to fix - although I don't understand how it worked until now...Thank you
UPDATE: The problem is apparently in new versions of jsreport.Shared. Reverting jsreport.Shared to 2.0.0 and jsreport.Types to 2.2.6 (not sure if this was necessary) provided the temporary solution, and explained why it worked before
-
RE: Is it possible to split templates into directories?
Thank you. That's what we are doing now. The mess is not as much in the studio; but in the version control / file explorer / etc. We can certainly wait a month :)
-
Is it possible to split templates into directories?
We've been using jsreport for awhile, and everybody loves it. Now we have close to a hundred reports, all smashed into a single directory. Is it possible to specify, for example,
finance/Purchase Order
orhr/Vacation Request
? I see that I can configure the top directory fromdata
to something else; but I can't find anything that would allow me to split templates or data underneath -
RE: InvoiceDebugLogs() throws an exception
Disregard... After updating NuGet packages the problem went away
-
InvoiceDebugLogs() throws an exception
I am running .NET Core sample without any changes. Most examples work great and give me great opportunity to learn from code. Thank you! However, invoking "PDF with Debug" throws an exception:
System.MissingMethodException: Method not found: 'Void jsreport.Types.DebugOptions.set_LogsToResponse(Boolean)'. at Microsoft.AspNetCore.Mvc.Internal.MiddlewareFilterBuilder.<>c.<<BuildPipeline>b__8_0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at jsreport.AspNetCore.JsReportMiddleware.<Invoke>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextResourceFilter>d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeFilterPipelineAsync>d__17.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeAsync>d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()
Any package or
using
needs to be added?
PS. Since I am studying sample from "Getting Started" tutorial, it goes without saying that I am new to jsreport, but I am not using it as an excuse in case my question is sloppy or doesn't make sense :)