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

 Respuesta aceptada

KSSV
KSSV el 12 de Nov. de 2016

17 votos

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 comentarios

za
za el 2 de Jun. de 2017
Is there a way to save it as pdf with fill page?
Ghost
Ghost el 1 de Mzo. de 2019
Editada: Ghost el 1 de Mzo. de 2019
fig=gcf; % your figure
fig.PaperPositionMode='auto';
print('Name_of_file','-dpdf','-fillpage')
Cyril Justin
Cyril Justin el 20 de Nov. de 2019
How do you save multiple figures on the same pdf?
Marco Torres
Marco Torres el 19 de Jul. de 2020
To save several matlab figures on the same pdf, you can use the report generator toolbox.
Michael Judge
Michael Judge el 9 de Abr. de 2021
@KSSV, Thank you so much for this. It's going to save me and my group so much time.
Saunok Chakrabarty
Saunok Chakrabarty el 20 de En. de 2022
Could you explain how you're using screenposition here?

Iniciar sesión para comentar.

Más respuestas (3)

Sujay Kadam
Sujay Kadam el 1 de Jul. de 2021
Editada: Eric Sargent el 20 de Dic. de 2023

9 votos

Update: Starting in R2021b, 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
(Original Answer prior to R2021b)
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
Warning: Style sheets will not be supported in a future release.

6 comentarios

Parth Patel
Parth Patel el 11 de Dic. de 2021
This is the most perfect solution one can find for this problem. Thank you so much :)
Sujay Kadam
Sujay Kadam el 12 de Dic. de 2021
You're welcome! I'm glad you found this helpful.
Md Modassir Firdaus
Md Modassir Firdaus el 19 de Sept. de 2022
Hi Sujay,
How can I change the only font size of legend ? It seems that the font size of every thing is same
Sujay Kadam
Sujay Kadam el 19 de Sept. de 2022
Hi Firdaus,
Kindly change in the following line '12' to 'auto'...
figure_property.FontSizeMin= '12';
Katty
Katty el 25 de Jul. de 2023
Hi! Is it possible to generate this same pdf but in a horizontal format?
Sujay Kadam
Sujay Kadam el 25 de Jul. de 2023
Hi,
You may want to change the values in the following lines:
figure_property.Width= '8'; % Figure width on canvas
figure_property.Height= '11'; % Figure height on canvas
If the width is larger than the height, the resulting plots would have a more horizontal aspect ratio.
For example,
figure_property.Width= '16'; % Figure width on canvas
figure_property.Height= '9'; % Figure height on canvas
would produce plots that would be suitable for a typical computer screen.

Iniciar sesión para comentar.

Richard Quist
Richard Quist el 11 de Dic. de 2021

4 votos

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

1 comentario

Ramprakash Ananthapadmanaban
Ramprakash Ananthapadmanaban el 29 de Ag. de 2023
'exportgraphics' function works well and even in subplots. Thanks

Iniciar sesión para comentar.

Ish Jain
Ish Jain el 9 de Sept. de 2019

0 votos

saveas(gcf,'filename.pdf')
!pdfcrop filename.pdf filename.pdf'
pdfcrop is useful if you are saving pdf for latex and you are using Linux.

Categorías

Más información sobre Printing and Saving en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 12 de Nov. de 2016

Comentada:

hace alrededor de 23 horas

Community Treasure Hunt

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

Start Hunting!

Translated by