2017-03-09 63 views
0

我需要为具有不同操作系统(Mac和Windows)的多用户办公室设置Word模板。我有适用于Mac的Office 2016,但它不提供将字体嵌入到.docx/.dotx容器中的可能性。将自定义字体添加到Word文档

可以手动添加我的自定义字体到容器吗?我创建了一个测试文件并对其进行了解压缩,因此我可以看到实际的XML文件。我已经看过字/ fontTable.xml但它显示了有关使用字体的唯一信息:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<w:fonts xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" mc:Ignorable="w14 w15"> 
<w:font w:name="Calibri"> 
    <w:panose1 w:val="020F0502020204030204"/> 
    <w:charset w:val="00"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="E00002FF" w:usb1="4000ACFF" w:usb2="00000001" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/> 
</w:font> 
<w:font w:name="DengXian"> 
    <w:panose1 w:val="02010600030101010101"/> 
    <w:charset w:val="86"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="A00002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="0004000F" w:csb1="00000000"/> 
</w:font> 
<w:font w:name="Times New Roman"> 
    <w:panose1 w:val="02020603050405020304"/> 
    <w:charset w:val="00"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="E0002AEF" w:usb1="C0007841" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/> 
</w:font> 
<w:font w:name="Arial"> 
    <w:panose1 w:val="020B0604020202020204"/> 
    <w:charset w:val="00"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="E0002AFF" w:usb1="C0007843" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/> 
</w:font> 
<w:font w:name="DengXian Light"> 
    <w:panose1 w:val="02010600030101010101"/> 
    <w:charset w:val="86"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="A00002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="0004000F" w:csb1="00000000"/> 
</w:font> 
<w:font w:name="Calibri Light"> 
    <w:panose1 w:val="020F0302020204030204"/> 
    <w:charset w:val="00"/> 
    <w:family w:val="auto"/> 
    <w:pitch w:val="variable"/> 
    <w:sig w:usb0="A00002EF" w:usb1="4000207B" w:usb2="00000000" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/> 
</w:font> 
</w:fonts> 

我想包括在容器内的自定义字体和使用它,所以我的字体模板中包括和独立模板使用的机器。

任何想法?

回答

0

我想你也许可以做到这一点通过以下方式

  1. 使用你所需要的字体(使用API​​的range.getOoxml()功能)获取一个空白文档的OOXML。预先手动聚合您需要的字体。
  2. 存储此OOXML并根据需要将其插入新文档中(使用range.insertOoxml()方法)
  3. 将OOXML与字体一起插入后,您应该可以在range.font.name中使用它= “字体名”

getOOXML样品:

Word.run(function (context) { 
 
//make sure you previously add the fonts you need! 
 
      var myOOXMLTest = context.document.body.getOoxml(); 
 
      return context.sync() 
 
      .then(function() { 
 
       var returnOoxmlWithFonts = myOOXMLTest.value; // this is the OOXML you need to insert when you want to sue the fonts. 
 

 
      }) 
 

 

 
     })

insertOOXML样品:

Word.run(function (ctx) { 
 
      
 
      ctx.document.getSelection().insertOoxml(OOXML, "replace"); // use the OOXML obtained before! 
 
      return ctx.sync(); 
 
       
 

 
     });

相关问题