问题描述
我正在尝试使用此处的 Microsoft 指南将图像添加到 Word 文档: https://docs.microsoft.com/en-us/office/open-xml/how-to-insert-a-picture-into-a-word-processing-document
我插入图像没有问题,但尺寸完全关闭。
需要以 EMU(英制公制单位)指定尺寸,从像素到 EMU 的转换会导致我出现问题。
我已经阅读了这些文章(以及其他几篇文章),但现在由于过度抓挠,我的头上没有更多的头发:)
- http://polymathprogrammer.com/2009/10/22/english-metric-units-and-open-xml/
- https://startbigthinksmall.wordpress.com/2010/01/04/points-inches-and-emus-measuring-units-in-office-open-xml/
我的文档是 ISO A4(宽 21 厘米,长 29.7 厘米)。 根据以上文章相当于:
Width = 21 x 360000 = 7,560,000 EMUs
Height = 29.7 x 360000 = 10,692,000 EMUs
现在,我四周的边距为 1 英寸(2.54 厘米),因此如下所示:
page width of:*
21.0 - 2 * 2.54 = 15.92
page height of:
29.7 - 2 * 2.54 = 24.62
Width: Total EMUs = 15.92 * 360,000 = 5,731,200 EMUs
Height: Total EMUs = 24.62 * 360,000 = 8,863,200 EMUs
要将 my.jpg (1512 x 2016 pixel @ 72 DPI
) 转换为 EMU,建议使用以上文章中的以下转换:
Bitmap bm = new Bitmap("my.jpg");
DocumentFormat.OpenXml.Drawing.Extents extents = new DocumentFormat.OpenXml.Drawing.Extents();
extents.Cx = (long)bm.Width * (long)((float)914400 / bm.HorizontalResolution);
extents.Cy = (long)bm.Height * (long)((float)914400 / bm.VerticalResolution);
// returns:
Cx = 1512 * 914400 / 72 => 19,202,400 EMUs
Cy = 2016 * 914400 / 72 => 25,603,200 EMUs
这两个值都超过了文档大小。
我只是通过打开 Microsoft Word 并添加 my.jpg 来创建一个 Word。这会在 document.xml
文件中产生以下适当的维度:
wp:extent cx="5725160" cy="7628890"/>
如何以编程方式实现这些值?我“只”需要插入一个图像并将其保留在下方(如果图像太小)或相当于最大文档 EMU。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)