Get from Ico-github-logo

Highlights from
export_fig

  • append_pdfs(varargin)
    APPEND_PDFS Appends/concatenates multiple PDF files
  • copyfig(fh)
    COPYFIG Create a copy of a figure, without changing the figure
  • eps2pdf(source, dest, cro...
    EPS2PDF Convert an eps file to pdf format using ghostscript
  • export_fig(varargin)
    EXPORT_FIG Exports figures suitable for publication
  • fix_lines(fname, fname2)
    FIX_LINES Improves the line style of eps files generated by print
  • ghostscript(cmd)
    GHOSTSCRIPT Calls a local GhostScript executable with the input command
  • im2gif(A, varargin)
    IM2GIF Convert a multiframe image to an animated GIF file
  • isolate_axes(ah, vis)
    ISOLATE_AXES Isolate the specified axes in a figure on their own
  • pdf2eps(source, dest)
    PDF2EPS Convert a pdf file to eps format using pdftops
  • pdftops(cmd)
    PDFTOPS Calls a local pdftops executable with the input command
  • print2array(fig, res, ren...
    PRINT2ARRAY Exports a figure to an image array
  • print2eps.m
  • user_string(string_name, ...
    USER_STRING Get/set a user specific string
  • using_hg2(fig)
    USING_HG2 Determine if the HG2 graphics pipeline is used
  • View all files
image thumbnail

export_fig

by

 

11 Apr 2009 (Updated )

Exports figures nicely to a number of vector & bitmap formats.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

pdftops(cmd)
function varargout = pdftops(cmd)
%PDFTOPS  Calls a local pdftops executable with the input command
%
% Example:
%   [status result] = pdftops(cmd)
%
% Attempts to locate a pdftops executable, finally asking the user to
% specify the directory pdftops was installed into. The resulting path is
% stored for future reference.
% 
% Once found, the executable is called with the input command string.
%
% This function requires that you have pdftops (from the Xpdf package)
% installed on your system. You can download this from:
% http://www.foolabs.com/xpdf
%
% IN:
%   cmd - Command string to be passed into pdftops.
%
% OUT:
%   status - 0 iff command ran without problem.
%   result - Output from pdftops.

% Copyright: Oliver Woodford, 2009-2010

% Thanks to Jonas Dorn for the fix for the title of the uigetdir window on
% Mac OS.
% Thanks to Christoph Hertel for pointing out a bug in check_xpdf_path
% under linux.
% 23/01/2014 - Add full path to pdftops.txt in warning.

% Call pdftops
[varargout{1:nargout}] = system(sprintf('"%s" %s', xpdf_path, cmd));
return

function path_ = xpdf_path
% Return a valid path
% Start with the currently set path
path_ = user_string('pdftops');
% Check the path works
if check_xpdf_path(path_)
    return
end
% Check whether the binary is on the path
if ispc
    bin = 'pdftops.exe';
else
    bin = 'pdftops';
end
if check_store_xpdf_path(bin)
    path_ = bin;
    return
end
% Search the obvious places
if ispc
    path_ = 'C:\Program Files\xpdf\pdftops.exe';
else
    path_ = '/usr/local/bin/pdftops';
end
if check_store_xpdf_path(path_)
    return
end
% Ask the user to enter the path
while 1
    if strncmp(computer,'MAC',3) % Is a Mac
        % Give separate warning as the uigetdir dialogue box doesn't have a
        % title
        uiwait(warndlg('Pdftops not found. Please locate the program, or install xpdf-tools from http://users.phg-online.de/tk/MOSXS/.'))
    end
    base = uigetdir('/', 'Pdftops not found. Please locate the program.');
    if isequal(base, 0)
        % User hit cancel or closed window
        break;
    end
    base = [base filesep];
    bin_dir = {'', ['bin' filesep], ['lib' filesep]};
    for a = 1:numel(bin_dir)
        path_ = [base bin_dir{a} bin];
        if exist(path_, 'file') == 2
            break;
        end
    end
    if check_store_xpdf_path(path_)
        return
    end
end
error('pdftops executable not found.');

function good = check_store_xpdf_path(path_)
% Check the path is valid
good = check_xpdf_path(path_);
if ~good
    return
end
% Update the current default path to the path found
if ~user_string('pdftops', path_)
    warning('Path to pdftops executable could not be saved. Enter it manually in %s.', fullfile(fileparts(which('user_string.m')), '.ignore', 'pdftops.txt'));
    return
end
return

function good = check_xpdf_path(path_)
% Check the path is valid
[good, message] = system(sprintf('"%s" -h', path_));
% system returns good = 1 even when the command runs
% Look for something distinct in the help text
good = ~isempty(strfind(message, 'PostScript'));
return

Contact us