Pending Review
Last Updated: 27 Jun 2025 08:29 by Sergey

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

  1. Save svg content (see below) as a file c:\test_svg_line_stroke.svg
  2. Create an empty report
  3. Add a picture box
  4. Select a value for the picture box - use file c:\test_svg_line_stroke.svg
  5. Go to preview - SVG is correct
  6. Click Export->Acrobat (PDF) file and export a PDF file
  7. Open PDF file to verify that the red line in a bottob does not have stroke-dasharray applied

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

Pending Review
Last Updated: 26 Jun 2025 13:12 by Olivier

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

Pending Review
Last Updated: 14 Dec 2020 10:54 by Fandy Backers

Exporting a report from the Report-Viewer to Word(docx), then opened in Word for Web (browser-version of Word) causes incorrect rendering of the document. Images are replaced with placeholders.

In comparison, exporting the report as PDF, then opening and converting it to Word and uploading it, renders much more correct and with images.

Pending Review
Last Updated: 22 Apr 2020 08:03 by Sascha
The timestamp field of MSSQL databases is recognized as byte[]. When using the Query Builder of the SqlDataSource wizard of the Report Designers, it tries to convert this byte[] to an image, which fails as the field is not a valid image. This doesn't obstruct the set-up of the data source. The query can also be executed successfully.
Pending Review
Last Updated: 29 Jan 2020 21:25 by Mike

Hi

If I run the angular report viewer within my main page, all is well. However if the report viewer is hosted in a <p-dialog> (or <p-overlaypanel>), the report does not render (even though data is loaded and the report can be exported). To confirm this, I even have the report visible in a <tr-viewer> on the main page behind the dialog and load them at the same time.

If the dialog is not visible when the main page opens, then the report viewer toolbar is in a column on the left, and is not operational. (see attached)

If the dialog is visible when the main page opens, then the toolbar appears at the top and functions normally. (see attached)

 

<tr-viewer #rptViewerBody
     [containerStyle]="viewerContainerStyle"
     [serviceUrl]="reportServerUrl"
     [viewMode]="'INTERACTIVE'"
     [scaleMode]="'SPECIFIC'"
     [scale]="1.0">
</tr-viewer>

vs

<p-dialog modal="true"
          appendTo="body" 
          header="Report"
          [(visible)]="showReport"
          [width]="1500" 
          [height]="1500">

        <tr-viewer #rptViewerDialog
            [containerStyle]="viewerContainerStyle"
            [serviceUrl]="reportServerUrl"
            [viewMode]="'INTERACTIVE'"
            [scaleMode]="'SPECIFIC'"
            [scale]="1.0">
        </tr-viewer>
</p-dialog>

 

In the code, I tried both of these container styles. The result for the dialog was that relative position rendered the toolbar (top or left), but absolute position rendered nothing at all (height became 0)

this.viewerContainerStyle = {
      position: 'absolute',
      top: '0px',
      left: '0px',
      right: '0px',
      bottom: '0px',
      ['font-family']: 'ms sans serif'
    };
this.viewerContainerStyle = {
      position: 'relative',
      width: '1300px',
      height: '1300px',
      ['font-family']: 'ms sans serif'
};

 

using @progress/telerik-angular-report-viewer": "7.19.718"

 

Thanks.

Pending Review
Last Updated: 01 Jul 2019 05:25 by ADMIN

Hi,

 

There is an issue where the search window that opens from the Report Viewer tool bar does not allow for deleting text from the search string input box using backspace.

The keyboard command provider seems to have many other keys covered for the intended behavior, but backspace does not seem to be handled appropriately.


Pending Review
Last Updated: 03 May 2019 14:31 by ADMIN
Created by: Anders
Comments: 1
Type: Bug Report
0

In my report, I use font SimSun to display Chinese, when preview it's OK, but after click print, an exception is thrown.

Internal Server Error
Font data for font "SimSun" cannot be obtained. Possible reasons are: The font is not installed in . The font is not found in the directories specified by the "FontLocations" configuration entries. The font is not declared in "" configuration section

In my docker image, run command -list, is there.


C:\Users\Anders> docker exec -it 3485 bash
root@3485bbdabbb3:/app# fc-list
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: DejaVu Sans:style=Book
/usr/share/fonts/simsun.ttf: SimSun,宋体:style=Regular
/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf: DejaVu Sans:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf: DejaVu Sans Mono:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf: DejaVu Serif:style=Book
My report is very simple, just a textbox contains several Chinese Fonts.
My  is below.
FROM /2.2- AS builder
WORKDIR /app

# caches restore result by copying  file separately
COPY * config/
RUN  restore

COPY .
RUN  publish --output /app/ --configuration Release
RUN  -n 's:.*<AssemblyName>\(.*\)</AssemblyName>.*:\1:p' * > __assemblyname
RUN if [ - __assemblyname; then filename=$ *); echo $filename%*} > __assemblyname; 

# Stage 2
FROM /2.2--runtime

ENV PORT 80
EXPOSE 80

COPY simsun.ttf /usr/share/fonts/simsun.ttf

RUN apt-get update \ 
    && apt-get install -y \ 
        libc6-dev \ 
         \ 
        libx11-dev \ 
		 \
    && rm -rf /var/lib/apt/lists/*

RUN fc-cache -f -v

WORKDIR /app
COPY --from=builder /app

ENTRYPOINT  $cat /app/__assemblyname)
Pending Review
Last Updated: 23 Apr 2019 07:45 by Anders
Created by: Anders
Comments: 1
Type: Bug Report
0

In CSharp.ReportExamples.VS2017, I copy all reports into project CSharpAspNetCoreDemo, and make them always copy.

Then I change ReportsController to the Reports directory above.

When Run it in IIS, it's OK, but when check into Docker, there is an exception thrown.

{
	"message": "An error has occurred.",
	"exceptionMessage": "Type: Telerik.Reporting.XmlSerialization.Current.ReportSerializable`1[Telerik.Reporting.Report]",
	"exceptionType": "System.MissingMethodException",
	"stackTrace": "   at Telerik.Reporting.Xml.ObjectXmlReader.CreateInstance(Type type, String name)\n   at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)\n   at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)\n   at Telerik.Reporting.Xml.XmlSerializer.Deserialize(Stream stream, IResourceHandler resourceHandler)\n   at Telerik.Reporting.XmlSerialization.ReportXmlSerializer.Telerik.Reporting.XmlSerialization.IXmlSerializer.Deserialize(Stream stream, IResourceHandler resourceHandler)\n   at Telerik.Reporting.ReportPackager.UnpackageDocument(Stream packageStream)\n   at Telerik.Reporting.Processing.UriReportDocumentResolver.Resolve(IProcessingContext context, UriReportSource rs)\n   at Telerik.Reporting.Processing.ReportDocumentResolver.Bind[T](IProcessingContext context, ReportSource source, Func`2 func)\n   at Telerik.Reporting.Processing.ResolvedReportDocument.ResolveReportsRecursively(ReportSource rs, IProcessingContext context, IDictionary`2 parentRsParameters, Boolean parentShouldDispose, List`1 result, IReportDocument& definition, ResolvedReport& tocReport, ReportBookTocPosition& tocReportPosition)\n   at Telerik.Reporting.Processing.ResolvedReportDocument.Create(ReportSource rs, IProcessingContext context)\n   at Telerik.Reporting.Services.Engine.ReportEngine.GetParameters(String clientID, String report, Dictionary`2 parameterValues)\n   at Telerik.Reporting.Services.AspNetCore.ReportsControllerBase.GetParameters(String clientID, ClientReportSource reportSource)\n   at lambda_method(Closure , Object , Object[] )\n   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()\n   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()\n   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)\n   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()\n   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()"
}

This is my Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /
COPY ["AspNetCoreDemo/CSharpAspNetCoreDemo", "AspNetCoreDemo/"]
RUN  restore "AspNetCoreDemo/CSharpAspNetCoreDemo"
COPY .
WORKDIR "/src/AspNetCoreDemo"
RUN  build "CSharpAspNetCoreDemo" -c Release -o /app

FROM  AS publish
RUN  publish "CSharpAspNetCoreDemo" -c Release -o /app

FROM base AS final
RUN apt-get update \ 
    && apt-get install -y --allow-unauthenticated \ 
        libc6-dev \ 
         \ 
        libx11-dev \ 
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=publish /app
ENTRYPOINT ["", "CSharpAspNetCoreDemo"]

Pending Review
Last Updated: 18 Mar 2019 08:05 by ADMIN
I have tried like operation in condition formatting and it is not working.
Pending Review
Last Updated: 19 Feb 2019 14:07 by ADMIN

 Using Roboto Medium changes values  "FVS!dBTI"  should be "EUR Cash" (shift characters by 1) weird !!!!