This is a migrated thread and some comments may be shown as answers.

telerik radpdfviewer render arabic letters in reverse

4 Answers 270 Views
PdfViewer
This is a migrated thread and some comments may be shown as answers.
Hazim
Top achievements
Rank 1
Veteran
Hazim asked on 27 Jun 2020, 10:49 PM

You can check your example :https://demos.telerik.com/aspnet-ajax/pdfviewer/applicationscenarios/dplintegration/defaultcs.aspx

 

This is my code:

<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<head runat="server">
    <title>Telerik ASP.NET Example</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.js"></script>
    <link href="styles.css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
        <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" />
        <script type="text/javascript">
            window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.worker.js';
 
            function pageLoad(app, args) {
                var upload = $find('<%= RadAsyncUpload1.ClientID %>');
                $(upload.get_element()).find("input[type='file']").attr("accept", ".docx, .rtf, .html, .txt, .xlsx, .csv");
            }
            function fileUploaded(sender, args) {
                $find('<%= RadAjaxManager1.ClientID %>').ajaxRequest();
            }
        </script>
 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnablePageHeadUpdate="false">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadAsyncUpload1" />
                        <telerik:AjaxUpdatedControl ControlID="RadPdfViewer1" LoadingPanelID="RadAjaxLoadingPanel1" />
                        <telerik:AjaxUpdatedControl ControlID="RadLabel1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
        </telerik:RadAjaxLoadingPanel>
 
        <div class="demo-container size-wide" runat="server">
            <telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server"
                OnClientFileUploaded="fileUploaded" OnFileUploaded="RadAsyncUpload1_FileUploaded"
                AllowedFileExtensions=".docx,.rtf,.html,.txt,.xlsx,.csv" HideFileInput="true"
                AutoAddFileInputs="false" Localization-Select="Upload And Convert" EnableInlineProgress="false"
                MultipleFileSelection="Disabled" />
            <telerik:RadLabel ID="RadLabel1" runat="server" Text="Displayed Document: <b>Document.pdf</b>"
                Style="float: left;">
            </telerik:RadLabel>
            <telerik:RadLabel ID="RadLabel2" runat="server" Text="Supported formats: <b>.docx / .rtf / .html / .txt / .xlsx / .csv</b>"
                Style="float: right;">
            </telerik:RadLabel>
            <br />
            <br />
            <br />
            <div dir="ltr" runat="server">
                <telerik:RadPdfViewer runat="server" ID="RadPdfViewer1" Height="550px" Width="100%" Scale="0.9" Skin="Default" RenderMode="Lightweight">
                    <%--<PdfjsProcessingSettings File="../../Document.pdf"></PdfjsProcessingSettings>--%>
                </telerik:RadPdfViewer>
            </div>
        </div>
 
    </form>
</body>
</html>

 

using System;
using System.IO;
using System.Text.RegularExpressions;
using Telerik.Web.UI;
using Telerik.Windows.Documents.Common.FormatProviders;
using Telerik.Windows.Documents.Flow.FormatProviders.Docx;
using Telerik.Windows.Documents.Flow.FormatProviders.Html;
using Telerik.Windows.Documents.Flow.FormatProviders.Rtf;
using Telerik.Windows.Documents.Flow.FormatProviders.Txt;
using Telerik.Windows.Documents.Flow.Model;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx;
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.TextBased.Csv;
using Telerik.Windows.Documents.Spreadsheet.Model;
 
namespace MCS.Web
{
    public partial class DefaultCS : BasePageClass
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int maxSize = 10 * 1024 * 1024; // 10MB
 
            RadAsyncUpload1.MaxFileSize = maxSize;
            RadPdfViewer1.MaxSerializerLength = maxSize;
        }
        protected void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
        {
            byte[] renderedBytes = null;
            string extention = Path.GetExtension(e.File.FileName);
 
            // RadFlow Documents
            if (Regex.IsMatch(extention, ".docx|.rtf|.html|.txt"))
            {
                IFormatProvider<RadFlowDocument> provider = null;
                RadFlowDocument document = null;
 
                switch (extention)
                {
                    case ".docx": provider = new DocxFormatProvider(); break;
                    case ".rtf": provider = new RtfFormatProvider(); break;
                    case ".html": provider = new HtmlFormatProvider(); break;
                    case ".txt": provider = new TxtFormatProvider(); break;
                    default: provider = null; break;
                }
 
                document = provider.Import(e.File.InputStream);
 
                Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
               Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
 
                using (MemoryStream ms = new MemoryStream())
                {
                    pdfProvider.Export(document, ms);
 
                    renderedBytes = ms.ToArray();
                }
            }
 
            // Workbook Documents
            else if (Regex.IsMatch(extention, ".xlsx|.csv"))
            {
                IWorkbookFormatProvider provider = null;
                Workbook document = null;
 
                switch (extention)
                {
                    case ".xlsx": provider = new XlsxFormatProvider(); break;
                    case ".csv": provider = new CsvFormatProvider(); break;
                    default: provider = null; break;
                }
 
                document = provider.Import(e.File.InputStream);
 
                Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfProvider = new
              Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
 
                using (MemoryStream ms = new MemoryStream())
                {
                    pdfProvider.Export(document, ms);
                    renderedBytes = ms.ToArray();
                }
            }
 
            RadLabel1.Text = "Displayed Document: <b>" + e.File.FileName + "</b>";
 
            RadPdfViewer1.PdfjsProcessingSettings.FileSettings.Data = Convert.ToBase64String(renderedBytes);
        }
    }
}

4 Answers, 1 is accepted

Sort by
0
Eyup
Telerik team
answered on 01 Jul 2020, 08:15 AM

Hi Hazim,

 

If you open a .pdf file with Arabic text directly in the RadPdfViewer, it will work as expected.

However, if you try to convert another format containing Arabic to .pdf, I am afraid DPL libraries do not support this:
https://feedback.telerik.com/document-processing/1356019-pdfprocessing-support-for-rtl-right-to-left-text

 

Regards,
Eyup
Progress Telerik

Progress is here for your business, like always. Read more about the measures we are taking to ensure business continuity and help fight the COVID-19 pandemic.
Our thoughts here at Progress are with those affected by the outbreak.
0
Hazim
Top achievements
Rank 1
Veteran
answered on 01 Jul 2020, 12:34 PM

Dear Eyup,

 

Yes, my case must use convert another format to attach any document types (xlsx,xls,png,bmp,jpeg,pdf,txt,jpg,tiff,doc,docx)

Please confirm what the supported types.

 

Regards,

Hazim Tafour

0
Hazim
Top achievements
Rank 1
Veteran
answered on 01 Jul 2020, 12:42 PM

Dear Eyup,

Do you have any other solution for my case ?
Will you update me with another version?

0
Eyup
Telerik team
answered on 02 Jul 2020, 07:02 AM

Hello Hazim,

 

I am afraid I cannot tell whether this will and when it will be implemented. You can cast your vote and comment in the mentioned feedback item:
https://feedback.telerik.com/document-processing/1356019-pdfprocessing-support-for-rtl-right-to-left-text

 

Regards,
Eyup
Progress Telerik

Progress is here for your business, like always. Read more about the measures we are taking to ensure business continuity and help fight the COVID-19 pandemic.
Our thoughts here at Progress are with those affected by the outbreak.
Tags
PdfViewer
Asked by
Hazim
Top achievements
Rank 1
Veteran
Answers by
Eyup
Telerik team
Hazim
Top achievements
Rank 1
Veteran
Share this question
or