Um in Matlab eine "Figure" in eine "PDF"-Datei zu exportieren - also mit vernünftiger
Größen-Einstellungen - muss die Figure zunächst mit folgenden Eigenschaften
konfiguriert bzw. erzeugt werden:
figStruct.PaperUnits='centimeters';
figStruct.PaperSize=[figWidth figHeight];
figStruct.PaperPositionMode='auto';
figStruct.Units='centimeters';
figStruct.Position=[5 5 figWidth figHeight];
(in nachhinein mit set(fig,figStruct) zuweisen)
Leider ist im Export-Script von Matlab, das Ghostscript verwendet, ein Bug.
Und zwar wird das Papierformat nur als "Papertype" übergeben, und das ist bei
manueller Eingabe "
Höhe erhalten.
dazu muss zunächst in der Datei:
%MATLABPATH%\toolbox\matlab\graphics\private\ghostscript.m
bei der Zeile, wo die "PaperSize" für Ghostscript festgelegt wird folgende Zeile (nach
der Switch-Case Anweisung (z.Z. Zeile 111)):
fprintf( rsp_fid, '-sPAPERSIZE=%s\n', gsName );
durch folgendes Script ausgetauscht werden:
%%%%%%PATCHED by Customer
if strcmp(gsName,'
paper_tmp=get(pj.Handles{1}(1),'PaperUnits');
else
set(pj.Handles{1}(1),'PaperUnits','points');
paper_size=get(pj.Handles{1}(1),'PaperSize');
set(pj.Handles{1}(1),'PaperUnits',paper_tmp);
fprintf( rsp_fid, '-dDEVICEWIDTHPOINTS=%.f -dDEVICEHEIGHTPOINTS=%.f\n',paper_size);
fprintf( rsp_fid, '-sPAPERSIZE=%s\n', gsName );
end
%%%%%%PATCHED by Customer
Jetzt kann mit
print('-dpdf',filename);
die Figure (gcf) exportiert werden.