Skip to content

Commit d6f60e1

Browse files
committed
Fix #737
1 parent b34248d commit d6f60e1

File tree

7 files changed

+30
-46
lines changed

7 files changed

+30
-46
lines changed

pkg/pdfcpu/annotation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func Annotation(xRefTable *model.XRefTable, d types.Dict) (model.AnnotationRende
142142
return nil, err
143143
}
144144

145-
r, err := types.RectForArray(arr)
145+
r, err := xRefTable.RectForArray(arr)
146146
if err != nil {
147147
return nil, err
148148
}

pkg/pdfcpu/model/xreftable.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2792,3 +2792,28 @@ func (xRefTable *XRefTable) BindViewerPreferences() {
27922792

27932793
xRefTable.RootDict["ViewerPreferences"] = d
27942794
}
2795+
2796+
// RectForArray returns a new rectangle for given Array.
2797+
func (xRefTable *XRefTable) RectForArray(a types.Array) (*types.Rectangle, error) {
2798+
llx, err := xRefTable.DereferenceNumber(a[0])
2799+
if err != nil {
2800+
return nil, err
2801+
}
2802+
2803+
lly, err := xRefTable.DereferenceNumber(a[1])
2804+
if err != nil {
2805+
return nil, err
2806+
}
2807+
2808+
urx, err := xRefTable.DereferenceNumber(a[2])
2809+
if err != nil {
2810+
return nil, err
2811+
}
2812+
2813+
ury, err := xRefTable.DereferenceNumber(a[2])
2814+
if err != nil {
2815+
return nil, err
2816+
}
2817+
2818+
return types.NewRectangle(llx, lly, urx, ury), nil
2819+
}

pkg/pdfcpu/primitives/comboBox.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ func NewComboBox(
722722

723723
cb := &ComboBox{Value: v}
724724

725-
bb, err := types.RectForArray(d.ArrayEntry("Rect"))
725+
bb, err := ctx.RectForArray(d.ArrayEntry("Rect"))
726726
if err != nil {
727727
return nil, nil, err
728728
}

pkg/pdfcpu/primitives/dateField.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ func NewDateField(
860860

861861
df := &DateField{Value: v}
862862

863-
bb, err := types.RectForArray(d.ArrayEntry("Rect"))
863+
bb, err := ctx.RectForArray(d.ArrayEntry("Rect"))
864864
if err != nil {
865865
return nil, nil, err
866866
}

pkg/pdfcpu/primitives/listBox.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ func NewListBox(
874874

875875
lb := &ListBox{Options: opts, Ind: ind}
876876

877-
bb, err := types.RectForArray(d.ArrayEntry("Rect"))
877+
bb, err := ctx.RectForArray(d.ArrayEntry("Rect"))
878878
if err != nil {
879879
return nil, nil, err
880880
}

pkg/pdfcpu/primitives/textField.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ func NewTextField(
877877

878878
tf := &TextField{Value: v, Multiline: multiLine}
879879

880-
bb, err := types.RectForArray(d.ArrayEntry("Rect"))
880+
bb, err := ctx.RectForArray(d.ArrayEntry("Rect"))
881881
if err != nil {
882882
return nil, nil, err
883883
}

pkg/pdfcpu/types/types.go

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import (
2121
"encoding/hex"
2222
"fmt"
2323
"strconv"
24-
25-
"github.com/pkg/errors"
2624
)
2725

2826
// Supported line delimiters
@@ -172,32 +170,6 @@ func NewRectangle(llx, lly, urx, ury float64) *Rectangle {
172170
return &Rectangle{LL: Point{llx, lly}, UR: Point{urx, ury}}
173171
}
174172

175-
// RectForArray returns a new rectangle for given Array.
176-
func RectForArray(a Array) (*Rectangle, error) {
177-
178-
llx, err := a.FloatNumber(0)
179-
if err != nil {
180-
return nil, err
181-
}
182-
183-
lly, err := a.FloatNumber(1)
184-
if err != nil {
185-
return nil, err
186-
}
187-
188-
urx, err := a.FloatNumber(2)
189-
if err != nil {
190-
return nil, err
191-
}
192-
193-
ury, err := a.FloatNumber(3)
194-
if err != nil {
195-
return nil, err
196-
}
197-
198-
return NewRectangle(llx, lly, urx, ury), nil
199-
}
200-
201173
// RectForDim returns a new rectangle for given dimensions.
202174
func RectForDim(width, height float64) *Rectangle {
203175
return NewRectangle(0.0, 0.0, width, height)
@@ -349,19 +321,6 @@ func (r Rectangle) Format(unit DisplayUnit) string {
349321
return r.String()
350322
}
351323

352-
// FloatNumber returns the element at index ind of a numbers array and returns a float64.
353-
func (a Array) FloatNumber(ind int) (float64, error) {
354-
f, ok := a[ind].(Float)
355-
if ok {
356-
return f.Value(), nil
357-
}
358-
i, ok := a[ind].(Integer)
359-
if ok {
360-
return float64(i.Value()), nil
361-
}
362-
return 0, errors.Errorf("pdfcpu: array element %d not a number (Float/Integer", ind)
363-
}
364-
365324
///////////////////////////////////////////////////////////////////////////////////
366325

367326
// QuadLiteral is a polygon with four edges and four vertices.

0 commit comments

Comments
 (0)