我正在使用以下代码添加图片(使用matplotlib将一些乳胶转换为PNG)到我的文本中:
.table-scroll thead {
display: table;
width: 100%;
table-layout: fixed;
}
.table-scroll tbody {
max-height: 150px;
overflow-y: auto;
display: block;
width: 100%;
table-layout: fixed;
}
.table-scroll tr {
display: table;
table-layout: fixed;
width: 100%;
}
.table-scroll td {
height: 47px; // needed in order to keep rows from collapsing
}
这样做没问题,只是图片par = doc.add_paragraph()
par.add_run().text = 'foo bar baz'
par.add_run().add_picture('pic.png')
par.add_run().text = 'blah blah blah'
没有在文档的其余部分中垂直对齐:
我可以通过添加一个字符样式来手动在MS Word中进行对齐,其中高级垂直对齐属性设置为"降低10pt":
问题是我不知道如何使用python-docx以编程方式执行此操作。从概念上讲,步骤是计算图像的大小,创建一个字体样式,该字体样式减小了一半大小减去字体大小的一半,并将样式应用于包含图片的运行。如何在python-docx中创建凸起或降低的字体样式?
答案 0 :(得分:1)
您的图片周围有一个相当大(透明)的边框。我在其范围内添加了一个像素边框,以使其可见:
我希望Word将图像的底部与基线对齐(如预期的那样)。一种方法是查看是否有一种方法可以指定零底边界。
您还可以尝试运行该图像的下标。我不确定它会做什么,但值得一试。所以像这样:
run = par.add_run()
run.add_picture('x.png')
run.font.subscript = True
如果您发现手动设置为"的运行速度降低了10pt",您可以像这样查看XML(aircode):
run = vertically_adjusted_run() # however you get ahold of it
print(run._element.xml)
我希望你能看到类似的东西:
<w:r>
<w:rPr>
<w:position w:val="20"/>
...
...其中w:position元素设置基线的调整。该值以半分指定。
无论如何,这个调整,甚至低级元素都没有得到python-docx的支持,所以你需要通过lxml调用来实现这一点,如果你想要的话那就非常需要。