MatLab Report Generator Word Wrap Issues

29 Ansichten (letzte 30 Tage)
Matt O'Brien
Matt O'Brien am 25 Nov. 2022
Kommentiert: Matthew Penning am 4 Nov. 2024 um 19:15
I have a pdf generated via MatLab Report Generator. I have a few remaining issues. I have spent days trying to resolve via search of this and other forums.
I am posting each issue individually.
This issue. Word Wrap at the end of a line in a table.
I am successfully populating a table with text and the table is placed as I wish on the page. The problem is that words are truncated at the end of a line and then continue on the next. I wish to use the behaviour where words are not split at the end of a line before any combination of cr/lf.
Ps. These settings make no difference.
MyDescrTbl.Style = {Hyphenation(true)};
or
MyDescrTbl.Style = {Hyphenation(false)};

Akzeptierte Antwort

Sameer Pujari
Sameer Pujari am 28 Nov. 2022
Hi Matt
To get the text to wrap to the second line by separating at a "space" rather than in the middle of a word when using the MATLAB Report Generator, you need to customize the default PDF template used by performing the following:
1. Create a new PDF template from the default PDF template:
>> mlreportgen.dom.Document.createTemplate('mytemplate','pdf');
2. This creates a new PDF template file, "mytemplate.pdftx". Then unzip the template, to gain access to the "root.css" file which allows you to define PDF styles:
>> unzipTemplate('mytemplate.pdftx')
3. In the new folder that is created go to the "stylesheets" folder and open "root.css" to edit in MATLAB or in a text editor.
4. Add the following style to the "table" entry in the CSS file:
-ah-word-break: keep-all
5. Save the CSS file and now zip the template to create an updated "mytemplate.pdftx" file:
>> zipTemplate('mytemplate.pdftx');
6. Then create a "Report" object, by passing the new template as an input argument:
>> d = Report("mydoc","pdf", "mytemplate.pdftx");
For more information on creating a PDF template please visit the following documentation link:
For more information on the different styles you can modify for a PDF template please visit the following documentation link:
  4 Kommentare
Matt O'Brien
Matt O'Brien am 11 Dez. 2022
Here is where I inserted the code in the CSS file.
I inserted line 182 as recommended above.
I am eternally grateful for this solution. It has worked for all the samples I have tested.
Matthew Penning
Matthew Penning am 4 Nov. 2024 um 19:15
Hello,
Currently I am not able to get this solution to work for me. Was wondering if maybe when I was setting the column and row styles it would override this? Any suggestions? Below is a snip of the code where I am styling the table - in case there is anything in there that may be conflicting.
reftbl = Table([header;row]); % Create the table
%Style overall table
reftbl.Style = {OuterMargin('0pt', '0pt', '0pt', '10pt'), ... % Set table margins
Width('100%')}; % Set table width
reftbl.TableEntriesStyle = {Border('solid','black','1')};
reftbl.HAlign = 'center'; % Center align the table
%Style columns
groups(1) = TableColSpecGroup();
for ww = 1:8
specs(ww) = TableColSpec();
specs(ww).Style = { HAlign('Center'),FontSize('8pt') };
end
groups(1).ColSpecs = specs;
reftbl.ColSpecGroups = groups;
%style top row
topRow = reftbl.Children(1,1);
topRow.Style = {BackgroundColor('lightgrey'),Bold(true)};

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by