mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-07 19:29:16 +08:00
Fix for invalid DecodeParms when DecodeParms not set (Flate). Clean up.
This commit is contained in:
parent
1b59259abd
commit
c80228651a
@ -181,21 +181,21 @@ func newFlateEncoderFromStream(streamObj *PdfObjectStream, decodeParams *PdfObje
|
||||
// If decodeParams not provided, see if we can get from the stream.
|
||||
if decodeParams == nil {
|
||||
obj := TraceToDirectObject(encDict.Get("DecodeParms"))
|
||||
if obj != nil {
|
||||
if arr, isArr := obj.(*PdfObjectArray); isArr {
|
||||
if arr.Len() != 1 {
|
||||
common.Log.Debug("Error: DecodeParms array length != 1 (%d)", arr.Len())
|
||||
return nil, errors.New("range check error")
|
||||
}
|
||||
obj = TraceToDirectObject(arr.Get(0))
|
||||
switch t := obj.(type) {
|
||||
case *PdfObjectArray:
|
||||
arr := t
|
||||
if arr.Len() != 1 {
|
||||
common.Log.Debug("Error: DecodeParms array length != 1 (%d)", arr.Len())
|
||||
return nil, errors.New("range check error")
|
||||
}
|
||||
|
||||
dp, isDict := obj.(*PdfObjectDictionary)
|
||||
if !isDict {
|
||||
common.Log.Debug("Error: DecodeParms not a dictionary (%T)", obj)
|
||||
return nil, fmt.Errorf("invalid DecodeParms")
|
||||
}
|
||||
decodeParams = dp
|
||||
obj = TraceToDirectObject(arr.Get(0))
|
||||
case *PdfObjectDictionary:
|
||||
decodeParams = t
|
||||
case *PdfObjectNull, nil:
|
||||
// No decode params set.
|
||||
default:
|
||||
common.Log.Debug("Error: DecodeParms not a dictionary (%T)", obj)
|
||||
return nil, fmt.Errorf("invalid DecodeParms")
|
||||
}
|
||||
}
|
||||
if decodeParams == nil {
|
||||
@ -1897,8 +1897,8 @@ func (enc *CCITTFaxEncoder) DecodeBytes(encoded []byte) ([]byte, error) {
|
||||
EndOfBlock: enc.EndOfBlock,
|
||||
BlackIs1: enc.BlackIs1,
|
||||
DamagedRowsBeforeError: enc.DamagedRowsBeforeError,
|
||||
Rows: enc.Rows,
|
||||
EncodedByteAlign: enc.EncodedByteAlign,
|
||||
Rows: enc.Rows,
|
||||
EncodedByteAlign: enc.EncodedByteAlign,
|
||||
}
|
||||
|
||||
pixels, err := encoder.Decode(encoded)
|
||||
@ -1968,8 +1968,8 @@ func (enc *CCITTFaxEncoder) EncodeBytes(data []byte) ([]byte, error) {
|
||||
EndOfBlock: enc.EndOfBlock,
|
||||
BlackIs1: enc.BlackIs1,
|
||||
DamagedRowsBeforeError: enc.DamagedRowsBeforeError,
|
||||
Rows: enc.Rows,
|
||||
EncodedByteAlign: enc.EncodedByteAlign,
|
||||
Rows: enc.Rows,
|
||||
EncodedByteAlign: enc.EncodedByteAlign,
|
||||
}
|
||||
|
||||
return encoder.Encode(pixels), nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user