2

我正在尝试以 PDF 格式保存一个图形,这样我就不会在它周围出现多余的空白,即图形应该与图形窗口的大小相同。

我很确定这样做的方法是

figureNames = {'a', 'b', 'c'};
for i = 1:3
    set(figure(i), 'paperpositionmode', 'auto');
    print(figure(i), '-dpdf', figureNames{i})
end

但它不起作用。我得到了和以往一样多的空白。有人可以告诉我出了什么问题吗?

4

3 回答 3

1

我也有这方面的问题。解决方法是打印-depsc(彩色)或者-deps如果您只需要灰度图。封装的 postscript 文件几乎没有白边。您可以稍后将 .eps 文件轻松转换为 pdf,如果您在 LaTeX 中工作,则可以按原样使用它。

于 2012-05-01T17:38:37.847 回答
1

您可以尝试将数字转换为 pdf 文件的“一体化”解决方案。我使用 mlf2pdf ( http://www.mathworks.com/matlabcentral/fileexchange/28545 ),它似乎工作得很好。此外,由于所有东西都采用了乳胶排版,因此制作出来的人物的质量要好得多

于 2012-05-01T20:50:15.817 回答
1

似乎设置PaperPositionModeauto将消除 EPS 文件的多余空白,但不是 PDF。

为了摆脱 PDF 的空白,我编写了一个小脚本来将纸张调整为图形大小。由于它很短,我将它包含在下面以防其他人需要它。

它的灵感来自这个文档,以及这个StackOverflow 问题

我的解决方案通过仅操作纸张大小而不是图形轴来工作,因为操作轴会遇到子图的问题。这也意味着将保留一些空白。在 MATLAB 的词汇表中,这些数字是由它OuterPosition而不是TightInset.

function [filename] =  printpdf(fig, name)
% printpdf Prints image in PDF format without tons of white space

% The width and height of the figure are found
% The paper is set to be the same width and height as the figure
% The figure's bottom left corner is lined up with
% the paper's bottom left corner

% Set figure and paper to use the same unit
set(fig, 'Units', 'centimeters')
set(fig, 'PaperUnits','centimeters');

% Position of figure is of form [left bottom width height]
% We only care about width and height
pos = get(fig,'Position');

% Set paper size to be same as figure size
set(fig, 'PaperSize', [pos(3) pos(4)]);

% Set figure to start at bottom left of paper
% This ensures that figure and paper will match up in size
set(fig, 'PaperPositionMode', 'manual');
set(fig, 'PaperPosition', [0 0 pos(3) pos(4)]);

% Print as pdf
print(fig, '-dpdf', name)

% Return full file name
filename = [name, '.pdf'];
end
于 2012-05-01T21:03:46.180 回答