58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package model
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"gitea.tecamino.com/paadi/pdfmerge/internal/pdf/common"
|
|
"gitea.tecamino.com/paadi/pdfmerge/internal/pdf/core"
|
|
)
|
|
|
|
func getNumberAsFloat(obj core.PdfObject) (float64, error) {
|
|
if fObj, ok := obj.(*core.PdfObjectFloat); ok {
|
|
return float64(*fObj), nil
|
|
}
|
|
|
|
if iObj, ok := obj.(*core.PdfObjectInteger); ok {
|
|
return float64(*iObj), nil
|
|
}
|
|
|
|
return 0, errors.New("not a number")
|
|
}
|
|
|
|
func isNullObject(obj core.PdfObject) bool {
|
|
if _, isNull := obj.(*core.PdfObjectNull); isNull {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
// Convert a list of pdf objects representing floats or integers to a slice of float64 values.
|
|
func getNumbersAsFloat(objects []core.PdfObject) ([]float64, error) {
|
|
floats := []float64{}
|
|
for _, obj := range objects {
|
|
val, err := getNumberAsFloat(obj)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
floats = append(floats, val)
|
|
|
|
}
|
|
return floats, nil
|
|
}
|
|
|
|
// Cases where expecting an integer, but some implementations actually
|
|
// store the number in a floating point format.
|
|
func getNumberAsInt64(obj core.PdfObject) (int64, error) {
|
|
if iObj, ok := obj.(*core.PdfObjectInteger); ok {
|
|
return int64(*iObj), nil
|
|
}
|
|
|
|
if fObj, ok := obj.(*core.PdfObjectFloat); ok {
|
|
common.Log.Debug("Number expected as integer was stored as float (type casting used)")
|
|
return int64(*fObj), nil
|
|
}
|
|
|
|
return 0, errors.New("not a number")
|
|
}
|