lib/hexapdf/task/optimize.rb in hexapdf-0.1.0 vs lib/hexapdf/task/optimize.rb in hexapdf-0.2.0
- old
+ new
@@ -93,12 +93,15 @@
unused = Set.new(doc.task(:dereference))
rev = doc.revisions.add
oid = 1
doc.revisions[0].each do |obj|
- next if obj.null? || unused.include?(obj) || (obj.type == :ObjStm) ||
- (obj.type == :XRef && xref_streams != :preserve)
+ if obj.null? || unused.include?(obj) || (obj.type == :ObjStm) ||
+ (obj.type == :XRef && xref_streams != :preserve)
+ obj.data.value = nil
+ next
+ end
delete_fields_with_defaults(obj)
obj.oid = oid
obj.gen = 0
rev.add(obj)
@@ -198,10 +201,10 @@
end
# Compresses the contents of all pages by parsing and then serializing again. The HexaPDF
# serializer is already optimized for small output size so nothing else needs to be done.
def self.compress_pages(doc)
- doc.pages.each_page do |page|
+ doc.pages.each do |page|
processor = SerializationProcessor.new
HexaPDF::Content::Parser.parse(page.contents, processor)
page.contents = processor.result
page[:Contents].set_filter(:FlateDecode)
end