在 MATLAB 中创建简单图形并将其保存为 PDF 时,生成的 PDF 文件将具有豪华的边界框。
plot(1,1,'x')
print(gcf, '-dpdf', 'test.pdf');
(从输出比例来看,它们似乎总是在A页面上放置。)
有没有一种简单的方法来获取PDF文件的紧密边界框?
plot(1,1,'x')
print(gcf, '-dpdf', 'test.pdf');
(从输出比例来看,它们似乎总是在A页面上放置。)
有没有一种简单的方法来获取PDF文件的紧密边界框?
figure(1)
hold on;
plot(1,1,'x')
ps = get(gcf, 'Position');
ratio = ps(4) / ps(3)
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');
如果要得到小一点的边框,可以调整 paperposition
属性,例如:
set(gcf, 'PaperPosition', [-0.5 -0.5 paperWidth+0.5 paperHeight+0.5]);
我更正了比率的计算,因为它是错误的,正如Space47的回答所指出的那样。(感谢@Space47)。
虽然这是一个老问题,但我还是来回答一下,因为在 Mathworks 的帮助页面之前,Google 搜到了这篇文章(很抱歉我的声望还不足以在之前发表评论)。
无论如何,让我们继续。
ratio = (ps(4)-ps(2)) / (ps(3)-ps(1))
应该是
ratio = ps(4)/ps(3);
fig = gcf;
fig.PaperPositionMode = 'auto'
fig_pos = fig.PaperPosition;
fig.PaperSize = [fig_pos(3) fig_pos(4)];