When exporting an SVG image to PDF, polylines with stroke-dasharray are rendered incorrectly — the dash pattern is not applied.
Additionally, polylines with a stroke-width exhibit visual artifacts such as pixelation or inconsistent thickness.
Step by step instructions or code snippets how to reproduce the problem
If there's no black line with no stroke-dasharray - the red line in a bottom looks correct
test_svg_line_stroke.svg
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xml="http://www.w3.org/XML/1998/namespace" width="500" height="400" viewBox="0, 0, 500, 400" preserveAspectRatio="xMinYMin" transform="scale(1)">
<polyline points="100, 100 400, 100" stroke-width="7" stroke-dasharray="40 40" style="fill:none;stroke:#FF0000;" />
<polyline points="100, 200 400, 200" stroke-width="5" style="fill:none;stroke:#000000;" />
<polyline points="100, 300 400, 300" stroke-width="7" stroke-dasharray="40 40" style="fill:none;stroke:#FF0000;" />
</svg>
test_svg_line_stroke.svg - svg source file
test_svg_line_stroke.trdp - report with a picture box with SVG image
test_svg_line_stroke.pdf - generated PDF file
Hi,
I'm working on a multiplatform project, using Telerik Reporting to generate PDF reports. The development is taking place on Windows.
The report is loaded programmatically (ReportPackager.Unpackage(...)), and the data is injected directly into the reports.
Some reports requires specific charts that are created as images and inserted into the PictureBox elements of the report before rendering. We are using SkiaSharp to generate these images, and I'm now trying to inject these images into the PictureBox elements.
For my first attempt, I have used the Gdi by first converting the SKImage to a System.Drawing.Image and it worked fine although it does not seem optimal.
Now I'm trying to write directly the SKImage to the PictureBox :
public bool SetPictureBoxImage(string pictureBoxName, SKImage image)
{
PictureBox? pictureBox = (PictureBox?)_telerikReport.Items.Find(pictureBoxName, true).FirstOrDefault();
if (pictureBox is null) return false;
DrawingFactory.CurrentGraphicsEngine = GraphicsEngine.Skia;
using var bitmap = SKBitmap.FromImage(image);
IImage tlkImage = DrawingFactory.CreateImage(bitmap);
pictureBox.Value = tlkImage;
return true;
}However, when calling 'ReportProcessor.RenderReport(...)', a 'System.ExecutionEngineException' is thrown (no call stack, no additional details available).
I have tried to move the call 'DrawingFactory.CurrentGraphicsEngine = GraphicsEngine.Skia' before loading the report with no luck.
Is the 'Skia' rendering not available on Windows?
Please note that I cannot rely on the 'appsettings.json' file to configure the graphic engine.
I have tried to set the configuration programmatically through a custom implementation of 'Microsoft.Extensions.Configuration.IConfiguration' passed as an argument to 'ReportProcessor' constructors, but it had no effect. I have searched your code to find another way to set the configuration but it does not seem possible as everything is static and internal.
Kind regards
Hi Telerik team
I'd like to implement customer specific colors based on a report variable or database field.
Currently it looks like the color properties only give us a color picker but does not support using an expression, is this correct?
As for context, I do not know the color in advance and it is used at 100+ different objects.
Same problem with conditional formats
Please let me know how to choose colors based on expressions.
If this is not possible yet, I'd like to request it as a new featur.
Best regards,
Hello SupportTeam,
when using privateFonts, the WPF-ReportViewer does not use the correct-FontFile when multiple Font-Files are present in the same folder.
The used Graphics-Engine is GDI.
Example 1:
When putting every File in its own Folder it works as expected.
Example 2:
During debugging, we noticed that in case of WPF, the Directory is passed instead of the Full file Path:
In class: Telerik.Reporting.Processing.Common.FontContainer
Best regards
Alexander Schneider
Having the ability to be able to set properties of the HTML5 report viewer globally would be a nice addition. This functionality already exists for other controls and it would have saved me lots of work when I needed to set a template url to over 50 pages.
Hopefully this gets implemented and saves someone else some of their time and if so, your welcome :)
Add the ability to specify rounded corners for the border of TextBoxes, Pictures, Tables and all other similar controls.
In version 19.1.25.521, I am updating the report source of the viewer immediately after calling $("#reportViewer1").telerik_ReportViewer. This now results in an error:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
In previous versions, it used to work.
I have a main report - "MainReport.trdp" and a report that I use in the detail section of the main report as a subreport twice - "SubReport.trdp".
In "SubReport.trdp", I have a report parameter whose value I use in one of the calculated fields in its data source component.
The calculated field's expression is evaluated based on the report parameter value passed with the SubReport's ReportSource object of the first SubReport item for both subreports.
For example, if I pass the string "A" to the first subreport's parameter and the string "B" to the second, the calculated field in both instances will evaluate based on the first value, in this case - "A".
The second subreport should evaluate the calculated field based on the value passed to its report parameter, it should not matter if I have the same report rendered as a subreport multiple times and whether a different parameter value is passed to them.
If you embed an iframe that points to a report viewer on a page, and the page is hosted on a web server on a different origin, the print functionality does not work.
Consider implementing a workaround to enable it.
I’m working on a project that requires generating Section 508-compliant PDFs, and I’m using Telerik Reporting to build the accessible reports. However, I’ve run into a problem with how screen readers—specifically NVDA—are interpreting table content.
In my report’s table, some values like 12/01/2023 aren’t being read as dates, and values like (192,340.00)—which represent negative numbers—aren’t being interpreted as “negative” or addressing the parenthesis.
In the Telerik Reporting Designer there are already quite a few Chart Diagrams included but the one that is missing is a Sankey Diagram. This is already integrated in the Charts in KendoReact for example and I would like to request to also add this in Telerik Reporting because I think it would be a great addition and also we would for sure need this.
Thanks,
Regards,
Bernd
Our clients enter information using the radeditor and in many cases want to embedded tables and graphics into their text. Using your reporting tool there is no way to print this information. I know you have suggested using your table and image tools, but that doesn't work when you are dealing with freely formatted text so the existance and location of the tables and images cannot be predicted.
<dependencies>
<group targetFramework=".NETFramework4.6.2">
<dependency id="Newtonsoft.Json" version="13.0.1" />
<dependency id="Telerik.Reporting" version="[19.0.25.313]" />
<dependency id="Microsoft.Net.Http" version="2.2.29" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="Newtonsoft.Json" version="13.0.1" />
<dependency id="Telerik.Reporting" version="[19.0.25.313]" />
</group>
</dependencies>
The package "Microsoft.Net.Http" is with the latest available version and depends on:
Microsoft.Bcl (>= 1.1.10)
Microsoft.Bcl.Build (>= 1.0.14)
The package "Microsoft.Bcl" is indeed deprecated.
With the 2025 Q2 release, the 3-parameter AddTelerikReporting static method was replaced with a 4-parameter method containing an additional argument for the optional AIClientFactory method of the REST Service.
The original method should be returned to avoid breaking projects that do not implement an AIClientFactory.
The property UserIdentity.Current is decorated with a [ThreadStatic] attribute, that guarantees a new instance will be created per each thread, when used in a synchronous context.
In asynchronous context, e.g. when an await operation is performed, the current thread is released, and another thread from the thread pool may take over. This can lead to the UserIdentity being overridden or conflicting with another request.