如何在 Word 中复制粘贴绘图画布并调整大小

问题描述 投票:0回答:0

我们正在尝试实现 Word 使用 Office-JS 所做的内置功能,但想知道这是否可能。

我们有两个绘图画布,一个较大,包含多个图像和形状。另一个更小,而且是空的。

在Word中,我们可以到大画布上,按CTRL+A全选画布内的内容,然后到另一个小画布上粘贴,一切都会自动调整大小。

我们正在尝试使这个过程自动化,但它并没有给我们相同的结果。使用 Office-JS API,我们得到画布的 OOXML,然后我们使用 context.document.body.insertOoxml 将该 OOXML 插入到新画布中,内容被插入但它不会自动调整大小以适应较小的画布画布

还有其他方法可以做到吗?

这是我们尝试过的,遍历画布中的每个元素并将其调整为新的大小,但它似乎并没有反映出这些变化:

        // Get all paragraphs 
        let xmlContent;
        xmlContent = doc.body.getOoxml();
        await context.sync();

        const parser = new DOMParser();
        let xml: Document = parser.parseFromString(xmlContent.value, 'application/xhtml+xml');
        const paragraphs = xml.getElementsByTagName('w:p');

  for (let i = 0; i <= paragraphs.length - 1; i++) {
            if (paragraphs[i].getElementsByTagName('w:sdtPr').length > 0
              && paragraphs[i].getElementsByTagName('w:sdtPr')[0].getElementsByTagName('w:id')[0].getAttributeNode("w:val").value === '1234306') {
              targetCanvasParagraph = paragraphs[i + 1];
           }
    let drawings = targetCanvasParagraph.getElementsByTagName('w:drawing');
                let factor = 1.724156661532341;
                for (let i = 0; i < drawings.length; i++) {
                  let positionH = drawings.item(i).getElementsByTagName('wp:positionH')[0];
                  if (positionH) {
                    let posOffsetH = positionH.getElementsByTagName('wp:posOffset')[0];
                    posOffsetH.textContent = (Math.trunc(Number(posOffsetH.textContent) / factor)).toString();
                  }
    
                  let positionV = drawings.item(i).getElementsByTagName('wp:positionV')[0];
                  if(positionV){
                    let posOffsetV = positionV.getElementsByTagName('wp:posOffset')[0];
                    posOffsetV.textContent = (Math.trunc(Number(posOffsetV.textContent) / factor)).toString();
                  }
       }
angular typescript office-js
© www.soinside.com 2019 - 2024. All rights reserved.