我是靠谱客的博主 秀丽毛豆,最近开发中收集的这篇文章主要介绍matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定Simulink框图(模型),我想生成稍后在LaTeX文档中使用的“屏幕截图”。 我希望这个截图是PDF(矢量图形, - > pdflatex),带有一个紧密的边界框,我的意思是图表周围没有不必要的空白区域。

我搜索了网络,搜索了stackexchange,搜索了matlab doc。 但到目前为止没有成功。 一些说明:

对于数字,这个问题有解决方案。 我有一个Simulink框图,它有所不同(见下文)。

我知道使用pdfcrop等附加软件的解决方案。

PDF似乎是真正生成矢量图形的唯一驱动程序(Win7上的R2013b)。 EPS和PS输出似乎有里面的位图。 你可以放大,你看。

我尝试过的:

1。

print的默认行为

modelName = 'vdp'; % example system

load_system(modelName); % load in background

% print to file as pdf and as jpeg

print(['-s',modelName],'-dpdf','pdfOutput1')

print(['-s',modelName],'-djpeg','jpegOutput1')

JPEG看起来很好,紧凑的边界框。 PDF以一个看起来像A4或usletter的页面为中心。 不是我想要的。

2。

modelName = 'vdp'; % example system

load_system(modelName); % load in background

PaperPositionMode = get_param(modelName,'PaperPositionMode');

PaperUnits = get_param(modelName,'PaperUnits');

PaperPosition = get_param(modelName,'PaperPosition');

PaperSize = get_param(modelName,'PaperSize');

根据文档, PaperPosition包含一个四元素向量[left, bottom, width, height] 。 最后两个元素指定边界框,前两个元素指定边界框左下角与纸张左下角的距离。

现在,当我打印PDF输出并使用标尺测量时,我发现边界框和左下角位置的值都是完全错误的(是的,我在PaperUnits测量过)。 那是一个真正的无赖。 我本可以计算边距来修剪纸张,以便稍后在\includegraphics[clip=true,trim=...]{pdfpage} 。

3。

当然我最初想要的是已经裁剪的PDF。 有一个数字的解决方案,它是这样的:您将边界框移动到纸张的左下角,然后将纸张大小更改为边界框的大小。

oldPaperPosition = get_param(modelName,'PaperPosition');

set_param(modelName,'PaperPositionMode','manual');

set_param(modelName,'PaperPosition',[0 0 oldPaperPosition(3:4)]);

set_param(modelName,'PaperSize',oldPaperPosition(3:4));

对于simulink模型,这有两个问题。 PaperSize是模型的只读参数。 并且更改PaperPosition对输出完全没有影响。

我真的没想到了。

编辑----------------------------------

好吧,为了让你更新:我谈到了Matlab对此的支持。

在R2013b中,存在导致PaperPositionMode错误行为的错误,并且PaperPostion的边界框出错。

没有已知的方法从打印中提取比例因子。

他们建议采用这种方式:Simulink - (打印) - > SVG - (Inkscape) - > PDF。 这种方式非常好用。 (正确)边界框是svg节点的属性,导出到SVG时的比例因子始终相同。 此外,Inkscape生成一个已经裁剪的PDF。 所以这种方法解决了我所有的问题,只需要你需要Inkscape。

最后

以上就是秀丽毛豆为你收集整理的matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...的全部内容,希望文章能够帮你解决matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部