Optimizer compress streams - improved detection of raw streams

This commit is contained in:
Gunnsteinn Hall 2020-05-11 00:35:19 +00:00
parent 6845f280a4
commit cdab3285a1

View File

@ -23,9 +23,17 @@ func (c *CompressStreams) Optimize(objects []core.PdfObject) (optimizedObjects [
if !isStreamObj { if !isStreamObj {
continue continue
} }
if _, found := core.GetName(stream.PdfObjectDictionary.Get("Filter")); found { // Skip objects that are already encoded.
continue // TODO: Try filter combinations, and ignoring inefficient filters.
if obj := stream.Get("Filter"); obj != nil {
if _, skip := core.GetName(obj); skip {
continue
}
if arr, ok := core.GetArray(obj); ok && arr.Len() > 0 {
continue
}
} }
encoder := core.NewFlateEncoder() // Most mainstream compressor and probably most robust. encoder := core.NewFlateEncoder() // Most mainstream compressor and probably most robust.
var data []byte var data []byte
data, err = encoder.EncodeBytes(stream.Stream) data, err = encoder.EncodeBytes(stream.Stream)