Skip to content

Commit ee932c4

Browse files
committed
Fix #931
1 parent c6decf5 commit ee932c4

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

pkg/pdfcpu/page.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,27 @@ func addPages(
193193
return nil
194194
}
195195

196+
func migrateNamedDests(ctxSrc *model.Context, n *model.Node, migrated map[int]int) error {
197+
patchValues := func(xRefTable *model.XRefTable, k string, v *types.Object) error {
198+
arr, err := xRefTable.DereferenceArray(*v)
199+
if err == nil {
200+
arr[0] = patchObject(arr[0], migrated)
201+
*v = arr
202+
return nil
203+
}
204+
d, err := xRefTable.DereferenceDict(*v)
205+
if err != nil {
206+
return err
207+
}
208+
arr = d.ArrayEntry("D")
209+
arr[0] = patchObject(arr[0], migrated)
210+
*v = d
211+
return nil
212+
}
213+
214+
return n.Process(ctxSrc.XRefTable, patchValues)
215+
}
216+
196217
// AddPages adds pages and corresponding resources from ctxSrc to ctxDest.
197218
func AddPages(ctxSrc, ctxDest *model.Context, pageNrs []int, usePgCache bool) error {
198219

@@ -230,5 +251,13 @@ func AddPages(ctxSrc, ctxDest *model.Context, pageNrs []int, usePgCache bool) er
230251
ctxDest.RootDict["AcroForm"] = d
231252
}
232253

254+
if n, ok := ctxSrc.Names["Dests"]; ok {
255+
// Carry over used named destinations.
256+
if err := migrateNamedDests(ctxSrc, n, migrated); err != nil {
257+
return err
258+
}
259+
ctxDest.Names = map[string]*model.Node{"Dests": n}
260+
}
261+
233262
return nil
234263
}

0 commit comments

Comments
 (0)