From 1804c9fc1644518e370d33d3c2778ccdc44cb2b6 Mon Sep 17 00:00:00 2001 From: Gunnsteinn Hall Date: Mon, 11 May 2020 00:32:41 +0000 Subject: [PATCH] Add GetFilterArray to multi encoder. Add comments. --- core/encoding.go | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/core/encoding.go b/core/encoding.go index 474fc7b2..cc5baf5c 100644 --- a/core/encoding.go +++ b/core/encoding.go @@ -948,7 +948,6 @@ func newDCTEncoderFromStream(streamObj *PdfObjectStream, multiEnc *MultiEncoder) return nil, err } encoded = e - } bufReader := bytes.NewReader(encoded) @@ -2158,6 +2157,9 @@ func newMultiEncoderFromStream(streamObj *PdfObjectStream) (*MultiEncoder, error // GetFilterName returns the names of the underlying encoding filters, // separated by spaces. +// Note: This is just a string, should not be used in /Filter dictionary entry. Use GetFilterArray for that. +// TODO(v4): Refactor to GetFilter() which can be used for /Filter (either Name or Array), this can be +// renamed to String() as a pretty string to use in debugging etc. func (enc *MultiEncoder) GetFilterName() string { name := "" for idx, encoder := range enc.encoders { @@ -2169,6 +2171,16 @@ func (enc *MultiEncoder) GetFilterName() string { return name } +// GetFilterArray returns the names of the underlying encoding filters in an array that +// can be used as /Filter entry. +func (enc *MultiEncoder) GetFilterArray() *PdfObjectArray { + names := make([]PdfObject, len(enc.encoders)) + for i, e := range enc.encoders { + names[i] = MakeName(e.GetFilterName()) + } + return MakeArray(names...) +} + // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (enc *MultiEncoder) MakeDecodeParams() PdfObject { @@ -2201,12 +2213,7 @@ func (enc *MultiEncoder) AddEncoder(encoder StreamEncoder) { // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (enc *MultiEncoder) MakeStreamDict() *PdfObjectDictionary { dict := MakeDict() - - names := make([]PdfObject, len(enc.encoders)) - for i, e := range enc.encoders { - names[i] = MakeName(e.GetFilterName()) - } - dict.Set("Filter", MakeArray(names...)) + dict.Set("Filter", enc.GetFilterArray()) // Pass all values from children, except Filter and DecodeParms. for _, encoder := range enc.encoders {