3.915 messaggi dal 28 gennaio 2003
Ciao.
Seguendo e vari tutorial in rete, riesco a inserire una immagine in un file word.
Se centro l'immagine e tento di aggiungere testo, il testo viene posto a sinistra dell'immagine, mentre io vorrei che si ponesse sotto.

Qualche aiuto, perchè in rete non ho trovato niente?

Pietro
11.792 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro, dovresti mettere l'immagine e il testo su due paragrafi differenti.
Poi, per centrare l'immagine, imposta così le proprietà del paragrafo che la contiene (la variabile element rappresenta l'immagine).
Dim p As New Paragraph()
Dim pp As New ParagraphProperties()
pp.Justification = New Justification With {.Val = JustificationValues.Center}
p.Append(pp)
Dim run As New Run(element)
p.AppendChild(run)
wordDoc.MainDocumentPart.Document.Body.AppendChild(p)


Ecco un esempio completo.
Imports System.IO
Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Wordprocessing
Imports A = DocumentFormat.OpenXml.Drawing
Imports DW = DocumentFormat.OpenXml.Drawing.Wordprocessing
Imports PIC = DocumentFormat.OpenXml.Drawing.Pictures

Module Module1

    Sub Main()

        Using mem As New MemoryStream
            Using wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, True)


                Dim mainPart = wordDocument.AddMainDocumentPart()

                mainPart.Document = New Document()
                Dim docBody As New Body()
                mainPart.Document.Append(docBody)

                InsertParagraph(wordDocument, "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet")
                InsertPicture(wordDocument, "C:\percorso\image.jpg")
                InsertParagraph(wordDocument, "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet")


                wordDocument.SaveAs("C:\percorso\out.docx")



            End Using
        End Using

    End Sub

    Private Sub InsertParagraph(ByVal document As WordprocessingDocument, ByVal testo As String)
        Dim p As New Paragraph()
        Dim r As New Run()
        Dim t As New Text(testo)
        r.Append(t)
        p.Append(r)
        document.MainDocumentPart.Document.Body.Append(p)
    End Sub
    Private Sub InsertPicture(ByVal document As WordprocessingDocument, ByVal fileName As String)

        Dim imagePart As ImagePart = document.MainDocumentPart.AddImagePart(ImagePartType.Jpeg)

        Using stream As New FileStream(fileName, FileMode.Open)
            imagePart.FeedData(stream)
        End Using

        AddImageToBody(document, document.MainDocumentPart.GetIdOfPart(imagePart))
    End Sub

    Private Sub AddImageToBody(ByVal wordDoc As WordprocessingDocument, ByVal relationshipId As String)
        ' Define the reference of the image.
        Dim element = New Drawing(
                              New DW.Inline(
                          New DW.Extent() With {.Cx = 990000L, .Cy = 792000L},
                          New DW.EffectExtent() With {.LeftEdge = 0L, .TopEdge = 0L, .RightEdge = 0L, .BottomEdge = 0L},
                          New DW.DocProperties() With {.Id = CType(1UI, UInt32Value), .Name = "Picture1"},
                          New DW.NonVisualGraphicFrameDrawingProperties(
                              New A.GraphicFrameLocks() With {.NoChangeAspect = True}
                              ),
                          New A.Graphic(New A.GraphicData(
                                        New PIC.Picture(
                                            New PIC.NonVisualPictureProperties(
                                                New PIC.NonVisualDrawingProperties() With {.Id = 0UI, .Name = "Koala.jpg"},
                                                New PIC.NonVisualPictureDrawingProperties()
                                                ),
                                            New PIC.BlipFill(
                                                New A.Blip(
                                                    New A.BlipExtensionList(
                                                        New A.BlipExtension() With {.Uri = "{28A0092B-C50C-407E-A947-70E740481C1C}"})
                                                    ) With {.Embed = relationshipId, .CompressionState = A.BlipCompressionValues.Print},
                                                New A.Stretch(
                                                    New A.FillRectangle()
                                                    )
                                                ),
                                            New PIC.ShapeProperties(
                                                New A.Transform2D(
                                                    New A.Offset() With {.X = 0L, .Y = 0L},
                                                    New A.Extents() With {.Cx = 990000L, .Cy = 792000L}),
                                                New A.PresetGeometry(
                                                    New A.AdjustValueList()
                                                    ) With {.Preset = A.ShapeTypeValues.Rectangle}
                                                )
                                            )
                                        ) With {.Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture"}
                                    )
                                ) With {.DistanceFromTop = 1UI,
                                        .DistanceFromBottom = 1UI}
                            )

        ' Append the reference to body, the element should be in a Run.
        Dim p As New Paragraph()
        Dim pp As New ParagraphProperties()
        pp.Justification = New Justification With {.Val = JustificationValues.Center}
        p.Append(pp)
        Dim run As New Run(element)
        p.AppendChild(run)
        wordDoc.MainDocumentPart.Document.Body.AppendChild(p)
    End Sub

End Module


ciao,
Moreno

Enjoy learning and just keep making
3.915 messaggi dal 28 gennaio 2003
Ti ringrazio, funziona perfettamente.


ps. ottima libreria!

Pietro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.