1414from .section import Section , Sections
1515from docx .shared import ElementProxy , Emu
1616from docx .text .bookmarks import Bookmark , Bookmarks
17- from docx .oxml .xmlchemy import BaseOxmlElement , ZeroOrOne , ZeroOrMore
17+ from docx .oxml .xmlchemy import ZeroOrOne , ZeroOrMore
1818
1919
2020class Document (ElementProxy ):
@@ -30,16 +30,16 @@ def __init__(self, element, part):
3030 self ._part = part
3131 self .__body = None
3232
33- def bookmark (self ):
34- return Bookmarks (self ._element .body )
35- # def add_bookmark_start(self, name):
36- # paragraph = self.add_paragraph()
37- # return paragraph.add_bookmark_start(id, name)
33+ def start_bookmark (self , name ):
34+ bookmarkstart = self ._body .add_bookmarkStart (name )
35+ return Bookmark (bookmarkstart )
36+
37+ def end_bookmark (self , name = None ):
38+ bookmarkend = self ._body .add_bookmarkEnd (name )
39+ return Bookmark (bookmarkend )
3840
39- # def add_bookmark_end(self, name):
40- # id = 1
41- # paragraph = self.add_paragraph()
42- # return paragraph.add_bookmark_end(id)
41+ def bookmarks (self ):
42+ return Bookmarks (self ._element .body )
4343
4444 def add_heading (self , text = '' , level = 1 ):
4545 """
@@ -227,3 +227,19 @@ def clear_content(self):
227227 """
228228 self ._body .clear_content ()
229229 return self
230+
231+ def add_bookmarkStart (self , name ):
232+ bookmarkStart = self ._body ._add_bookmarkStart ()
233+ bookmarkStart .name = name
234+ bookmarkStart .bmrk_id = bookmarkStart ._next_id
235+ return Bookmark (bookmarkStart )
236+
237+ def add_bookmarkEnd (self , name = None ):
238+
239+ bookmarkEnd = self ._body ._add_bookmarkEnd ()
240+ if name is not None :
241+ bookmarkStart_id = bookmarkEnd .match_bookmarkstart (name )
242+ else :
243+ bookmarkStart_id = bookmarkEnd ._next_id
244+ bookmarkEnd .bmrk_id = bookmarkStart_id
245+ return Bookmark (bookmarkEnd )
0 commit comments