In Development
Last Updated: 15 Mar 2024 16:26 by ADMIN
The text in the footer remains under the image while drawing the PDF content.
Unplanned
Last Updated: 15 Mar 2024 11:54 by ADMIN
ADMIN
Created by: Peshito
Comments: 5
Category: WordsProcessing
Type: Bug Report
4

List indent is not correct when exported to PDF. All indents start from the same position.

Completed
Last Updated: 14 Mar 2024 08:59 by ADMIN
Release 2024.1.305 (2024 Q1)
HtmlFormatProvider: Paragraph property AutomaticSpacingBefore is set to true instead of false.
Completed
Last Updated: 14 Mar 2024 08:59 by ADMIN
Release 2024.1.305 (2024 Q1)

StackOverflowException when importing a document with style based on itself.

Use the following code to strip the faulty "based on" definition from the RTF:

RtfFormatProvider provider = new RtfFormatProvider();
var rtf = File.ReadAllText(ofd.FileName);
rtf = this.ReplaceSelfBasedOnStyle(rtf);
this.flowDocument = provider.Import(rtf);

...

private string ReplaceSelfBasedOnStyle(string rtf)
{
    string pattern = @"{[\n]*\\s[0-9]+[^;]* \\\w* (Normal);}";

    var matches = Regex.Matches(rtf, pattern);
    foreach (Match match in matches)
    {
        string oldValue = match.Value;
        string newValue = oldValue.Replace(@"\sbasedon0 ", string.Empty);

        rtf = rtf.Replace(oldValue, newValue);
    }

    return rtf;
}

Unplanned
Last Updated: 12 Mar 2024 13:50 by Stefan

Import the following HTML content:

<ol type="a">
<li>
<div><p>WordsProcessing</p>
</div></li>
<li>
<div>
<p>SpreadProcessing</p>
</div>
</li>
<li>
<div>
<p>PdfProcessing</p>
</div>
</li>
</ol>

The following error occurs:

Unplanned
Last Updated: 07 Mar 2024 12:51 by ADMIN
At this point, the justify alignment is not supported. Provide the ability to export text with this setting.
Unplanned
Last Updated: 07 Mar 2024 12:49 by ADMIN
ADMIN
Created by: Deyan
Comments: 2
Category: WordsProcessing
Type: Feature Request
11

			
Unplanned
Last Updated: 07 Mar 2024 05:55 by ADMIN
ADMIN
Created by: Tanya
Comments: 2
Category: WordsProcessing
Type: Feature Request
13
Add support for horizontal lines in documents.

In DOCX, such lines are defined using the legacy VML definitions:
<w:pict w14:anchorId="324D5836">
  <v:rect id="_x0000_i1025" style="width:0;height:1.5pt" o:hralign="center" o:hrstd="t" o:hr="t" fillcolor="#a0a0a0" stroked="f"/>
</w:pict>
The definitions above and the <hr/> HTML tag are currently not supported and skipped on import, leading to missing horizontal lines in the document.
Unplanned
Last Updated: 04 Mar 2024 11:55 by Jolly
Unplanned
Last Updated: 27 Feb 2024 13:41 by Jagadish

PdfFormatProvider: Table cells are exported with the wrong width when the table is nested in another table and the cells of the nested one have a preferred width set to 100%.

Workaround: Clear the cell PreferredWidth property.

Unplanned
Last Updated: 23 Feb 2024 14:19 by RainMaker
Created by: RainMaker
Comments: 0
Category: WordsProcessing
Type: Feature Request
0
Unplanned
Last Updated: 21 Feb 2024 10:23 by n/a
PdfFormatProvider: Endless loop when exporting a document with specific floating image.
In Development
Last Updated: 13 Feb 2024 12:27 by ADMIN

Styles with names only different in spaces are treated as one.

Workaround:

var rtf = File.ReadAllText(fileName);
rtf = this.RenameStyleDifferentInOnlySpaces(rtf);
var document = provider.Import(rtf);

...

private string RenameStyleDifferentInOnlySpaces(string rtf)
{
    HashSet<string> styles = new HashSet<string>();

    string pattern = @"{\\(?:\*\\c)?s([0-9]+)[^}]*\n?[^}]*\\[^' ]* ?'?([^;]*)";

    var matches = Regex.Matches(rtf, pattern);
    foreach (Match match in matches)
    {
        string styleName = match.Groups[2].Value.Replace(" ", string.Empty);
        if (styles.Contains(styleName))
        {
            styleName = this.ReplaceOldStyleName(ref rtf, styles, match).Replace(" ", string.Empty);
        }

        styles.Add(styleName);
    }

    return rtf;
}

private string ReplaceOldStyleName(ref string rtf, HashSet<string> styles, Match match)
{
    string oldStyleName = match.Groups[2].Value;
    StringBuilder styleNameBuilder = new StringBuilder(oldStyleName + "0");
    while (styles.Contains(styleNameBuilder.ToString().Replace(" ", string.Empty)))
    {
        styleNameBuilder.Append("0");
    }

    string oldMatch = match.Groups[0].Value;
    string newMatch = oldMatch.Replace(oldStyleName, styleNameBuilder.ToString());
    rtf = rtf.Replace(oldMatch, newMatch);
    return styleNameBuilder.ToString();
}

Unplanned
Last Updated: 12 Feb 2024 11:36 by Joshua
DocxFormatProvider: Persist run properties (rPr) for the start of FieldCharacter.
Unplanned
Last Updated: 12 Feb 2024 10:56 by Uwe

PdfFormatProvider: Tab stop distance different from the default is not exported correctly.

Workaround: Use spaces instead.

In Development
Last Updated: 07 Feb 2024 13:13 by ADMIN

Handle import of documents with self-referring styles.

As a workaround, you can go through the RTF document structure of a single file and utilize Regex to resolve the self-referring styles like this:

string rtf = File.ReadAllText("inputFile.rtf");
rtf = FixSelfReferringStyles(rtf);

Telerik.Windows.Documents.Flow.FormatProviders.Rtf.RtfFormatProvider provider = new Telerik.Windows.Documents.Flow.FormatProviders.Rtf.RtfFormatProvider(); 

 var document = provider.Import(rtf);

...

private static string FixSelfReferringStyles(string rtf)
{
    string regexString = @"{\\s([0-9]+)[^}]*\\slink([0-9]+)";

    var matches = Regex.Matches(rtf, regexString);
    foreach (Match match in matches)
    {
        if (match.Groups[1].Value == match.Groups[2].Value)
        {
            var oldValue = match.Groups[0].Value;
            var newValue = oldValue.Replace(@" \slink" + match.Groups[1].Value, string.Empty);
            rtf = rtf.Replace(oldValue, newValue);
        }
    }

    return rtf;
}

 

Unplanned
Last Updated: 02 Feb 2024 12:54 by Joshua

When a document containing a field without a separator is inserted using the RadFlowDocumentEditor.InsertDocument(*) method, the following error is thrown: 

System.InvalidOperationException: 'Start and end inlines should belong to paragraph in one block container.'

Workaround: 

        static void Main(string[] args)
        {
            DocxFormatProvider _DocXProvider = new DocxFormatProvider();
            string outputFile = $@"..\..\MergedResult.docx";
            File.Delete(outputFile); 

            RadFlowDocument target = _DocXProvider.Import(File.ReadAllBytes(@"..\..\HeaderFooter.docx"));
            RadFlowDocument source = _DocXProvider.Import(File.ReadAllBytes(@"..\..\SubHeaderFooter.docx"));
            RadFlowDocument contentSource = _DocXProvider.Import(File.ReadAllBytes(@"..\..\ContentOnly.docx"));

            MergeHeaders(target, source);
            MergeFooters(target, source);


            MergeContent(target, source);
            MergeContent(target, contentSource);
            System.IO.File.WriteAllBytes(outputFile, _DocXProvider.Export(target));
            Process.Start(outputFile);
        }

        private static void MergeContent(RadFlowDocument target, RadFlowDocument source)
        {
            DocumentElementImporter importer = new DocumentElementImporter(target, source, ConflictingStylesResolutionMode.UseTargetStyle);

            foreach (Telerik.Windows.Documents.Flow.Model.Section section in source.Sections)
            {
                foreach (BlockBase block in section.Blocks)
                {
                    BlockBase importBlock = importer.Import(block);
                    target.Sections.Last().Blocks.Add(importBlock);
                }
            }
        }

        private static void MergeHeaders(RadFlowDocument target, RadFlowDocument source)
        {
            Header targetHeader = target.Sections.First().Headers.Default;
            Header sourceHeader = source.Sections.First().Headers.Default;

            DocumentElementImporter importer = new DocumentElementImporter(target, source, ConflictingStylesResolutionMode.UseTargetStyle);
            foreach (BlockBase block in sourceHeader.Blocks)
            {
                BlockBase importedBlock = importer.Import(block);
                targetHeader.Blocks.Add(importedBlock);
            }
        }

        private static void MergeFooters(RadFlowDocument target, RadFlowDocument source)
        {
            Footer targetFooter = target.Sections.First().Footers.Default;
            Footer sourceFooter = source.Sections.First().Footers.Default;

            DocumentElementImporter importer = new DocumentElementImporter(target, source, ConflictingStylesResolutionMode.UseTargetStyle);
            int i = 0;
            foreach (BlockBase block in sourceFooter.Blocks)
            {
                BlockBase importedBlock = importer.Import(block);
                targetFooter.Blocks.Insert(i++, importedBlock);
            }
        }

 

Unplanned
Last Updated: 01 Feb 2024 06:59 by Paolo
DocFormatProvider: EndOfStreamException when importing document with specific image.
Unplanned
Last Updated: 29 Jan 2024 16:58 by ADMIN
Styles defined in a glossary part overwrites the styles defined in the main document part.
1 2 3 4 5 6