Docx 更改PIC并通过调整参数保持原始图像大小

Docx 更改PIC并通过调整参数保持原始图像大小,docx,opentbs,Docx,Opentbs,我有一个模板,我正在尝试将图片的来源从图像1更改为图像2,但我希望图像2保持上载到服务器的原始大小。(我希望它位于图1的位置,但它自己的尺寸。) 为此,我想我需要使用adjust参数——我已经尝试过了。adjust=100%的描述是“将图片调整为与原始大小成比例。”-听起来像是我需要做的事情 然而,在我的docx输出中,这似乎将图像大小设置为页面宽度的100%,而不是与图像大小相关。(在word图像属性中,它显示我的图像为208%,因此我认为它与我的文件无关!) 这是opentbs中的一个bug

我有一个模板,我正在尝试将图片的来源从图像1更改为图像2,但我希望图像2保持上载到服务器的原始大小。(我希望它位于图1的位置,但它自己的尺寸。)

为此,我想我需要使用
adjust
参数——我已经尝试过了。
adjust=100%
的描述是“将图片调整为与原始大小成比例。”-听起来像是我需要做的事情

然而,在我的docx输出中,这似乎将图像大小设置为页面宽度的100%,而不是与图像大小相关。(在word图像属性中,它显示我的图像为208%,因此我认为它与我的文件无关!)

这是opentbs中的一个bug,还是我误解了文档?如果是这样的话,我应该怎么做,否则,任何人都可以解决这个问题吗?我尝试根本不使用
adjust
,但是这似乎与
adjust=inside
具有相同的行为,我认为这是默认行为

和正常感谢一个伟大的工具

编辑:下面是导致错误的标记。我发现这个问题在从无到有的情况下是可以重现的,在word文档中只有一个图像。Word 2010,OpenTBS 1.8

[onshow.logo;ope=changepic;tagpos=after;adjust=100%]
解决方法:

这取决于您使用的是新(.docx)还是旧(.doc)文档样式。如果您使用较新的样式,我不确定您是否可以在不将标记直接放入XML的情况下更改图像大小。较旧的(我相信是VML)样式使用
来描述图片,而不是
。使用
v:shape
,您可以将描述图像大小等的CSS样式字符串组合在一起。比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
然后在
changepic
标签旁边有一个标签;比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
较新的样式不使用这样的样式字符串来调整图像的大小和位置,
pic:pic
元素充满了描述图像的嵌套标记,因此更难获得细节(尽管您当然可以尝试)。我最终为我的图像切换创建了一个子模板,因为我的模板是新格式,与旧格式兼容(因此我必须维护两个图像块)。这允许我直接维护图像维度的XML,但仍然能够在Word中编辑我的主模板。我只是在我的主模板中使用了一个标记,其中包括子模板,如:

[LineItem.template;block=w:r;file='img.xml']
分离手动控制的XML使我能够在Word中编辑主模板,而不会损坏真正自定义的部分。但是,使用此技术,子模板中的onload/onshow标记可能会有一些问题-我在子模板中更改的所有内容都由块控制。

解决方法:

这取决于您使用的是新(.docx)还是旧(.doc)文档样式。如果您使用较新的样式,我不确定您是否可以在不将标记直接放入XML的情况下更改图像大小。较旧的(我相信是VML)样式使用
来描述图片,而不是
。使用
v:shape
,您可以将描述图像大小等的CSS样式字符串组合在一起。比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
然后在
changepic
标签旁边有一个标签;比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
较新的样式不使用这样的样式字符串来调整图像的大小和位置,
pic:pic
元素充满了描述图像的嵌套标记,因此更难获得细节(尽管您当然可以尝试)。我最终为我的图像切换创建了一个子模板,因为我的模板是新格式,与旧格式兼容(因此我必须维护两个图像块)。这允许我直接维护图像维度的XML,但仍然能够在Word中编辑我的主模板。我只是在我的主模板中使用了一个标记,其中包括子模板,如:

[LineItem.template;block=w:r;file='img.xml']
分离手动控制的XML使我能够在Word中编辑主模板,而不会损坏真正自定义的部分。但是,使用此技术,子模板中的onload/onshow标记可能会有一些问题-我在子模板中更改的所有内容都由块控制。

解决方法:

这取决于您使用的是新(.docx)还是旧(.doc)文档样式。如果您使用较新的样式,我不确定您是否可以在不将标记直接放入XML的情况下更改图像大小。较旧的(我相信是VML)样式使用
来描述图片,而不是
。使用
v:shape
,您可以将描述图像大小等的CSS样式字符串组合在一起。比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
然后在
changepic
标签旁边有一个标签;比如:

$imgStyle = "position:absolute;left:0;top:0;width:800;height:600"
[imgStyle;att=v:shape#style]
较新的样式不使用这样的样式字符串来调整图像的大小和位置,
pic:pic
元素充满了描述图像的嵌套标记,因此更难获得细节(尽管您当然可以尝试)。我最终为我的图像切换创建了一个子模板,因为我的模板是新格式,与旧格式兼容(因此我必须维护两个图像块)。这允许我直接维护图像维度的XML,但仍然能够在Word中编辑我的主模板。我只是在我的主模板中使用了一个标记,其中包括子模板,如:

[LineItem.template;block=w:r;file='img.xml']
分离手动控制的XML使我能够在Word中编辑主模板,而不会损坏真正自定义的部分。但是,使用此技术,子模板中的onload/onshow标记可能会有一些问题-我在子模板中更改的所有内容都由块控制。

解决方法:

这取决于您使用的是新(.docx)还是旧(.doc)文档样式。如果您使用较新的样式,我不确定您是否可以在不将标记直接放入XML的情况下更改图像大小。老年人(VML,