Save a figure as pdf

1,857 views (last 30 days)
friet
friet on 12 Nov 2016
Commented: Sujay Kadam on 19 Sep 2022 at 7:07
I have figures and I am using the command below to save it as pdf. Is there any way to save it directly as pdf instead of saving as .ps and convert to .pdf.
print(figure(i), '-append', '-dpsc2', 'E:\myfigure.ps');
Thanks

Accepted Answer

KSSV
KSSV on 12 Nov 2016
saveas(gcf,'myfigure.pdf')
Or
set(gcf,'Units','inches');
screenposition = get(gcf,'Position');
set(gcf,...
'PaperPosition',[0 0 screenposition(3:4)],...
'PaperSize',[screenposition(3:4)]);
print -dpdf -painters epsFig
The first two lines measure the size of your figure (in inches). The next line configures the print paper size to fit the figure size. The last line uses the print command and exports a vector pdf document as the output.
  6 Comments
Saunok Chakrabarty
Saunok Chakrabarty on 20 Jan 2022
Could you explain how you're using screenposition here?

Sign in to comment.

More Answers (3)

Sujay Kadam
Sujay Kadam on 1 Jul 2021
May be this has already been answered somewhere else, but I thought I would share what I usually do for generating plots in pdf format. Run the following code after generating a figure:
clear figure_property;
figure_property.units = 'inches';
figure_property.format = 'pdf';
figure_property.Preview= 'none';
figure_property.Width= '8'; % Figure width on canvas
figure_property.Height= '11'; % Figure height on canvas
figure_property.Units= 'inches';
figure_property.Color= 'rgb';
figure_property.Background= 'w';
figure_property.FixedfontSize= '12';
figure_property.ScaledfontSize= 'auto';
figure_property.FontMode= 'scaled';
figure_property.FontSizeMin= '12';
figure_property.FixedLineWidth= '1';
figure_property.ScaledLineWidth= 'auto';
figure_property.LineMode= 'none';
figure_property.LineWidthMin= '0.1';
figure_property.FontName= 'Times New Roman';% Might want to change this to something that is available
figure_property.FontWeight= 'auto';
figure_property.FontAngle= 'auto';
figure_property.FontEncoding= 'latin1';
figure_property.PSLevel= '3';
figure_property.Renderer= 'painters';
figure_property.Resolution= '600';
figure_property.LineStyleMap= 'none';
figure_property.ApplyStyle= '0';
figure_property.Bounds= 'tight';
figure_property.LockAxes= 'off';
figure_property.LockAxesTicks= 'off';
figure_property.ShowUI= 'off';
figure_property.SeparateText= 'off';
chosen_figure=gcf;
set(chosen_figure,'PaperUnits','inches');
set(chosen_figure,'PaperPositionMode','auto');
set(chosen_figure,'PaperSize',[str2num(figure_property.Width) str2num(figure_property.Height)]); % Canvas Size
set(chosen_figure,'Units','inches');
hgexport(gcf,'filename.pdf',figure_property); %Set desired file name
  4 Comments
Sujay Kadam
Sujay Kadam on 19 Sep 2022 at 7:07
Hi Firdaus,
Kindly change in the following line '12' to 'auto'...
figure_property.FontSizeMin= '12';

Sign in to comment.


Richard Quist
Richard Quist on 11 Dec 2021
In R2021b and later you can use exportgraphics to directly create PDF files containing multiple figures:
% append each of the figures to output.pdf
for i=1:numFigs
exportgraphics(figure(i), 'output.pdf', 'Append', true);
end

Ish Jain
Ish Jain on 9 Sep 2019
saveas(gcf,'filename.pdf')
!pdfcrop filename.pdf filename.pdf'
pdfcrop is useful if you are saving pdf for latex and you are using Linux.

Tags

Community Treasure Hunt

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

Start Hunting!