When text content (text in paragraph, text in span) in HTML contains line break (\r, \n, or \r\n), it should be imported as space. Instead, the new lines are currently removed. For example, <p>first\nsecond</p> (line feed between the words) is imported as run with content "firstsecond" instead of "first second".
When a document has a list in it and the element containing it is cloned into another document, there is a key not found exception if you try to export the second document.
RadFlowDocument document = new RadFlowDocument();
if (tableDocument.Sections.First().Blocks.First() is Table workSheetTable)
{
Table clonedTable = workSheetTable.Clone(document);
var newSection = document.Sections.AddSection();
newSection.Blocks.Add(clonedTable);
}
byte[] pdfBytes = pdfProvider.Export(document);
byte[] docBytes = docxProvider.Export(document);
The Spacing Before property of the paragraph at the start of the page should not be respected if it is not the first one inside the current section.
Manually overriding the Spacing Before property would resolve the issue.
Updating a Table of Contents field with a custom TOC Style does not respect it.
As a workaround modify the style after the TOC fields are updated.
When the last element in a table cell is an empty paragraph, the latter is skipped and not imported. It should be imported even if it's the only paragraph in the cell, as its properties could affect the layout and presentation (borders, colors, spacings).
When the document is encoded in two-byte encoding using Little-Endian, the CsQuery HTML parser provides the entire document as FirstChild of the <body> tag, which leads to incorrect import. This seems to be occurring with MS Outlook messages saved as HTML. Workaround: convert the file to Big-Endian encoding before importing.
Using a RadFlowDocumentEditor to add a page break and then insert a table, adds an additional paragraph in between.
As a workaround you can call the CleanParagraphsBeforeTablesOnNewPage() method:
private void CleanParagraphsBeforeTablesOnNewPage()
{
List<Paragraph> paragraphs = this.flowDocument.EnumerateChildrenOfType<Paragraph>().ToList();
foreach (var paragraph in paragraphs)
{
BlockContainerBase parent = (BlockContainerBase)paragraph.Parent;
int paragraphIndex = parent.Blocks.IndexOf(paragraph);
int blocksCount = parent.Blocks.Count;
bool isAfterPageBreak = paragraphIndex > 0 && this.PreviousBlockEndsWithPageBreak(parent.Blocks[paragraphIndex - 1]);
int nextIndex = paragraphIndex + 1;
bool nextBlockIsTable = nextIndex < blocksCount && parent.Blocks[nextIndex] is Table;
if (isAfterPageBreak && nextBlockIsTable)
{
parent.Blocks.Remove(paragraph);
}
}
}
private bool PreviousBlockEndsWithPageBreak(BlockBase blockBase)
{
bool isLastInlinePageBreak = false;
bool isParagraph = blockBase is Paragraph;
if (isParagraph)
{
Paragraph paragraph = (Paragraph)blockBase;
InlineBase lastInline = paragraph.Inlines.Last();
bool isBreak = lastInline is Break;
if (isBreak)
{
isLastInlinePageBreak = ((Break)lastInline).BreakType == BreakType.PageBreak;
}
}
return isLastInlinePageBreak;
}
The image in the header is not exported to pdf.
Workaround: Use version R1 2022 where this is working.
Currently some properties are supported only in their shorthand forms, and others - only in their longhand forms: - 'background' shorthand is not supported. - 'margin' shorthand is not supported.
- 'padding' shorthand is not supported. - 'border' shorthand is supported, but 'border-bottom-color', 'border-bottom-style', 'border-bottom-width', 'border-left-color', 'border-left-style', 'border-left-width', 'border-right-color', 'border-right-style', 'border-right-width', 'border-style', 'border-top-color', 'border-top-style', 'border-top-width', 'border-width' are not supported.
IMPORTANT: This feature is available in .NET Core, .NET 6 and above.
When table row is empty, it's exported to PDF with incorrect height - depending on the type of height set with 0 or with the height of an empty paragraph.
TableRow which has defined an only val attribute of the trHeight is imported as a row with auto height. By the specification, this is right, but MS Word takes the val value as row height. Also MS Word exports "At Least" row height with only 'val' set.
Workaround: Iterate through the table rows and set them HeightType to Exact or AtLeast:
foreach (var row in this.document.EnumerateChildrenOfType<TableRow>())
{
row.Height = new TableRowHeight(HeightType.AtLeast, row.Height.Value);
}