2012-08-28 28 views
5

Al crear una figura simple en MATLAB y guardarla como PDF, el archivo PDF resultante tendrá un cuadro delimitador de lujo.Cuadro delimitador estrecho alrededor de PDF de MATLAB figura

plot(1,1,'x') 
print(gcf, '-dpdf', 'test.pdf'); 

(A partir de la relación de la salida parece que siempre ponen en una A en la página.)

¿Hay una forma sencilla de obtener un cuadro delimitador apretada alrededor del PDF?

Respuesta

3

Puede dar formato al cuadro delimitador de la siguiente manera

figure(1) 
hold on; 
plot(1,1,'x') 

ps = get(gcf, 'Position'); 
ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 
paperWidth = 10; 
paperHeight = paperWidth*ratio; 


set(gcf, 'paperunits', 'centimeters'); 
set(gcf, 'papersize', [paperWidth paperHeight]); 
set(gcf, 'PaperPosition', [0 0 paperWidth paperHeight]); 


print(gcf, '-dpdf', 'test2.pdf'); 

Para fronteras más pequeños, se puede ajustar la propiedad paperposition, por ejemplo,

set(gcf, 'PaperPosition', [-0.5 -0.5 paperWidth+0.5 paperHeight+0.5]); 
+0

Esto modifica la relación de aspecto y produce un PDF que todavía tiene una (pequeña) frontera. ¿Tal vez hay una forma de leer las dimensiones del cuadro delimitador? De todos modos, 'PaperPosition' seguro que es interesante. –

+0

@Nico: actualicé mi respuesta para tener en cuenta la relación de aspecto y los bordes más pequeños. –

1

Una cuestión de edad, pero voy a responder ya que Google considera esta para mí antes de que los Mathworks propia página de ayuda (Lo siento ninguna reputación suficiente para colocar un comentario al anterior). De todos modos

ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 

debería haber

ratio = ps(4)/ps(3); 

como primeros valores son gcf.Position [x, y] ubicación en la pantalla, nada que ver con el tamaño.

también Matlab (R) da una respuesta, especialmente si usted no quiere/necesidad de cambiar el tamaño de la figura: https://se.mathworks.com/help/matlab/creating_plots/save-figure-with-minimal-white-space.html

fig = gcf; 
fig.PaperPositionMode = 'auto' 
fig_pos = fig.PaperPosition; 
fig.PaperSize = [fig_pos(3) fig_pos(4)]; 
Cuestiones relacionadas