wordpress hit counter
add a bookmark in a word document - WordprocessingML - Formats - OpenXML Developer

add a bookmark in a word document

Formats

Discussions about working with different Open XML Formats

add a bookmark in a word document

  • rated by 0 users
  • This post has 1 Reply |
  • 1 Follower
  • Hi, I tried to add a bookMarkStart and a bookMarkEnd in a document, removing hidden text.

    My code:

    Public Class ManipulateWordProcessingDocument

        Private _wdDoc As WordprocessingDocument

        Public Sub New(ByVal wDoc As WordprocessingDocument)
            Me._wdDoc = wDoc
        End Sub

        Public Function FindHiddenText(ByVal textoOculto As String) As Run
            Dim runResult As Run = Nothing
            Try
                runResult = Me._wdDoc.MainDocumentPart.RootElement.Descendants(Of Run).Where(Function(r) r.RunProperties IsNot Nothing AndAlso
                                r.RunProperties.Vanish IsNot Nothing AndAlso r.InnerText.Equals(textoOculto)).FirstOrDefault
            Catch ex As Exception
                If True Then

                End If
            End Try

            Return runResult
        End Function

        ''' <summary>
        ''' Devuelvo la marca final porque entre el marcador BookMarkStart y el BookMarkEnd, nosotros no tenemos nada, y siempre
        ''' nos va a interesar hacer cualquier cosa despues del BookMarkEnd, y siempre comparten padre.
        ''' </summary>
        ''' <param name="nombreMarca"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function FindBookMark(ByVal nombreMarca As String) As BookmarkEnd
            Dim bookmark As BookmarkEnd = Nothing
            Dim marcaStart As BookmarkStart
            Try
                marcaStart = Me._wdDoc.MainDocumentPart.RootElement.Descendants(Of BookmarkStart).Where(Function(b) b.Name.Value.Equals(nombreMarca)).FirstOrDefault
                If marcaStart IsNot Nothing Then
                    bookmark = bookmark.Parent.Descendants(Of BookmarkEnd).Where(Function(b As BookmarkEnd) b.Id.Value.Equals(marcaStart.Id.Value)).FirstOrDefault
                End If
            Catch ex As Exception
                If True Then

                End If
            End Try

            Return bookmark
        End Function

     Public Function ReplaceHiddenTextByBookMark(ByVal nombreOculto As String) As Boolean
            Dim oculto As Run = Nothing
            Dim elementoPadre As OpenXmlElement = Nothing
            Dim marcadorStart As BookmarkStart = Nothing
            Dim marcadorEnd As BookmarkEnd = Nothing

            oculto = Me.FindHiddenText(nombreOculto)

            If oculto IsNot Nothing Then
                Try
                    elementoPadre = oculto.Parent

                    marcadorStart = New BookmarkStart()
                    marcadorStart.Name = "Principio" & nombreOculto
                    elementoPadre.InsertAfter(marcadorStart, oculto)
                    marcadorEnd = New BookmarkEnd()
                    marcadorEnd.Id = marcadorStart.Id
                    elementoPadre.InsertAfter(marcadorEnd, marcadorStart)

                    marcadorStart = New BookmarkStart()
                    marcadorStart.Name = "Fin" & nombreOculto
                    elementoPadre.InsertAfter(marcadorStart, marcadorEnd)
                    marcadorEnd = New BookmarkEnd()
                    marcadorEnd.Id = marcadorStart.Id
                    elementoPadre.InsertAfter(marcadorEnd, marcadorStart)

                    oculto.Parent.RemoveChild(oculto)
                    Return True
                Catch ex As Exception
                    If True Then

                    End If
                End Try
            End If
            Return False
        End Function

    ....

    End Class

     

    But the property id of instance "marcadorStart" is nothing, how I do to create a instance of BookMarkStart with id?


  • Hi -

    I've created a screen-cast that shows one approach to inserting a bookmark:

    openxmldeveloper.org/.../working-with-wordprocessingml-paragraphs-and-runs-how-to-insert-a-bookmark.aspx

    -Eric

Page 1 of 1 (2 items)