2008-12-18 9 views
6

¿Sabe qué información básica DEBE incluir un párrafo (<w:p/>) en document.xml dentro de un documento * .docx que especifique una imagen? Sé que debe haber:Word 2007, Open XML: incrustación de una imagen

<a:blip r:embed="rId4" /> 

especificando la relación de identificación, pero ¿qué más? Es muy difícil encontrarlo en Google y experimentar con cortar etiquetas desde un documento listo o leer la especificación lleva mucho tiempo.

Un ejemplo con todas las etiquetas requeridas sería muy apreciado.

+0

lo que necesito es incrustar una imagen pero quiero escribir la menor cantidad de datos posible – agnieszka

Respuesta

7

Word es bastante quisquilloso con respecto al XML de entrada proporcionado. Para incrustar una imagen, debe proporcionar bastante información. Aquí está un ejemplo sencillo:

document.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<w:document xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" 
      xmlns:v="urn:schemas-microsoft-com:vml" 
      xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" 
      xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:body> 
    <w:p> 
     <w:r> 
     <w:drawing> 
      <wp:inline distT="0" distB="0" distL="0" distR="0"> 
      <wp:extent cx="5943600" cy="3717290"/> 
      <wp:docPr id="1" name="Picture 0" descr="vlcsnap-325726.png"/> 
      <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> 
       <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"> 
       <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"> 
        <pic:nvPicPr> 
        <pic:cNvPr id="0" name="myImage.png"/> 
        <pic:cNvPicPr/> 
        </pic:nvPicPr> 
        <pic:blipFill> 
        <a:blip r:embed="rId4"/> 
        <a:stretch> 
         <a:fillRect/> 
        </a:stretch> 
        </pic:blipFill> 
        <pic:spPr> 
        <a:xfrm> 
         <a:off x="0" y="0"/> 
         <a:ext cx="5943600" cy="3717290"/> 
        </a:xfrm> 
        <a:prstGeom prst="rect"> 
         <a:avLst/> 
        </a:prstGeom> 
        </pic:spPr> 
       </pic:pic> 
       </a:graphicData> 
      </a:graphic> 
      </wp:inline> 
     </w:drawing> 
     </w:r> 
    </w:p> 
    </w:body> 
</w:document> 

document.xml.rels

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> 
    <!-- other relationships go here --> 
    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/> 
</Relationships> 

Y, por supuesto, la imagen debe ser añadido al paquete en la ubicación correcta (media/image1.png)

Dado que todo esto es bastante complicado, le recomendaría usar el OpenXML SDK 2.0 proporcionado por Microsoft u otra biblioteca, por ejemplo OpenXML4J. Estas bibliotecas, especialmente la de Microsoft, pueden hacer que su trabajo sea mucho más fácil.

Cuestiones relacionadas