How do I add a high resolution figure to a Word template using Report Generator?

17 ビュー (過去 30 日間)
RGB85
RGB85 2022 年 6 月 16 日
コメント済み: RGB85 2022 年 6 月 21 日
I am using Report Generator to populate a Word template with text/numerical data and plots from laboratory testing. The template has Word-formatted tables with fillable holes followed by holes between tables to fill with figures. I'm currently using the approach below to sequentially fill holes. The entry below shows a text entry followed by a figure.
import mlreportgen.dom.*
D = Document('FromTemplate','docx', 'UCS_Word_Template.dotx');
open(D)
moveToNextHole(D);
append(D, app.ProjectEditField.Value);
moveToNextHole(D);
myfig=figure();
%plot code in this section working as intended. Not included here to
%simplify description.
fontsize(myfig,0.25,"centimeters")
myfig.PaperPositionMode = 'manual';
myfig.PaperUnits = 'inches';
myfig.PaperPosition = [0 0 4.75 3];
saveas(myfig,'myfig','png');
imgPath = which("myfig.png");
img1 = Image(imgPath);
append(D,img1);
This code is working as intended, but saveas uses a set resolution that is not adjustable (to my knowledge). The resulting figure has fine detail that is blurry in the printed report.
I have also tried using the exportgraphics function and setting the size as shown below:
import mlreportgen.dom.*
D = Document('FromTemplate','docx', 'UCS_Word_Template.dotx');
open(D)
moveToNextHole(D);
append(D, app.ProjectEditField.Value);
moveToNextHole(D);
t = tiledlayout(1,1, 'Padding','tight');
t.Units = 'inches';
t.OuterPosition = [0.25 0.25 4.75 3];
nexttile;
%plot code in this section working as intended. Not included here to
%simplify description.
exportgraphics(t, 'myfig.png','Resolution', 600);
imgPath = which("myfig.png");
img1 = Image(imgPath);
append(D,img1);
This code also works, but the figure filled into the word template is approximately 18x22 inches.
Is there a way to append an image into the template with both a set size and set resolution?

採用された回答

Mary Abbott
Mary Abbott 2022 年 6 月 21 日
Hi Richard,
You can specify the height and width of an image in a report with properties of the mlreportgen.dom.Image class. For example, using your "exportgraphics" approach, you can resize the image in the following way:
imgPath = which("myfig.png");
img1 = Image(imgPath);
img1.Width = "4.75in";
img1.Height = "3in"
append(D,img1);
To get the highest quality image, I recommend using the SVG file format, as long as you are using Word 2016 or later. With your "saveas" approach, this would look like:
saveas(myfig,'myfig','svg');
imgPath = which("myfig.svg");
img1 = Image(imgPath);
% (you can also change the image width and height here instead of adjusting
% the figure's PaperPosition)
append(D,img1);
  1 件のコメント
RGB85
RGB85 2022 年 6 月 21 日
Hi Mary,
This approach works great! Thanks for your help!

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by