From 26568927e58d10db6b716ffa49ded6aa7d83ca5e Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Sat, 10 Oct 2026 15:07:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=BC=96=E8=BE=91=E8=83=BD=E5=8A=9B):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=A1=B5=E5=BC=95=E7=94=A8=E6=B8=85?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ofdgo_editor.go | 2 +- ofdgo_editor_pages.go | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/ofdgo_editor.go b/ofdgo_editor.go index 9e65174..be29d13 100644 --- a/ofdgo_editor.go +++ b/ofdgo_editor.go @@ -306,7 +306,7 @@ func (e *Editor) DeletePages(indexes []int) error { e.removedPages = make(map[string]bool) } for _, page := range saved { - e.removedPages[page.ID] = true + e.removedPages[editorResourceID(page.ID)] = true } kept, next := e.pages[:0], 0 for index, page := range e.pages { diff --git a/ofdgo_editor_pages.go b/ofdgo_editor_pages.go index fd36abc..fb1ea6a 100644 --- a/ofdgo_editor_pages.go +++ b/ofdgo_editor_pages.go @@ -31,21 +31,22 @@ func (e *Editor) prunePageReferences(parts map[string][]byte, generated map[stri removed = make(map[string]bool) } for id := range e.source.pages { - removed[id] = true + removed[editorResourceID(id)] = true } for id := range e.source.annotationPages { - removed[id] = true + removed[editorResourceID(id)] = true } for _, page := range e.pages { - delete(removed, page.ID) + delete(removed, editorResourceID(page.ID)) } + delete(removed, "") if len(removed) == 0 { return nil } reader := e.source.reader bookmarks := make(map[string]bool) for _, bookmark := range e.source.document.Bookmarks.Bookmark { - if removed[bookmark.Dest.PageID] { + if removed[editorResourceID(bookmark.Dest.PageID)] { bookmarks[bookmark.Name] = true } } @@ -105,7 +106,7 @@ func (e *Editor) prunePageReferences(parts map[string][]byte, generated map[stri case "Action": if target := node.child("Goto"); target != nil { if dest := target.child("Dest"); dest != nil { - remove = removed[dest.attr("PageID")] + remove = removed[editorResourceID(dest.attr("PageID"))] } else if bookmark := target.child("Bookmark"); bookmark != nil { remove = bookmarks[bookmark.attr("Name")] } @@ -116,14 +117,14 @@ func (e *Editor) prunePageReferences(parts map[string][]byte, generated map[stri } case "Page": if root.name.Local == "Annotations" { - remove = removed[node.attr("PageID")] + remove = removed[editorResourceID(node.attr("PageID"))] } case "Dest": - remove = removed[node.attr("PageID")] + remove = removed[editorResourceID(node.attr("PageID"))] case "StampAnnot": - remove = removed[node.attr("PageRef")] + remove = removed[editorResourceID(node.attr("PageRef"))] case "Extension": - remove = removed[node.attr("RefId")] + remove = removed[editorResourceID(node.attr("RefId"))] } if remove { patches = append(patches, editorXMLPatch{start: node.start, end: node.end}) @@ -197,7 +198,7 @@ func pruneCreatedPageReferences(data []byte, removed map[string]bool) ([]byte, e } if node.name.Local == "Action" { if target := node.child("Goto"); target != nil { - if dest := target.child("Dest"); dest != nil && removed[dest.attr("PageID")] { + if dest := target.child("Dest"); dest != nil && removed[editorResourceID(dest.attr("PageID"))] { patches = append(patches, editorXMLPatch{start: node.start, end: node.end}) return }