lib/combine_pdf/renderer.rb in combine_pdf-0.2.31 vs lib/combine_pdf/renderer.rb in combine_pdf-0.2.32
- old
+ new
@@ -78,10 +78,12 @@
# An array shall be written as a sequence of objects enclosed in SQUARE BRACKETS (using LEFT SQUARE BRACKET (5Bh) and RIGHT SQUARE BRACKET (5Dh)).
# EXAMPLE [549 3.14 false (Ralph) /SomeName]
('[' + (object.collect { |item| object_to_pdf(item) }).join(' ') + ']').force_encoding(Encoding::ASCII_8BIT)
end
+ EMPTY_PAGE_CONTENT_STREAM = {is_reference_only: true, referenced_object: { indirect_reference_id: 0, raw_stream_content: '' }}
+
def format_hash_to_pdf(object)
# if the object is only a reference:
# special conditions apply, and there is only the setting of the reference (if needed) and output
if object[:is_reference_only]
#
@@ -105,10 +107,10 @@
out << "\nendobj\n"
return out.join.force_encoding(Encoding::ASCII_8BIT)
end
end
# remove extra page references.
- object[:Contents].delete(is_reference_only: true, referenced_object: { indirect_reference_id: 0, raw_stream_content: '' }) if object[:Type] == :Page
+ object[:Contents].delete(EMPTY_PAGE_CONTENT_STREAM) if object[:Type] == :Page && object[:Contents].is_a?(Array)
# correct stream length, if the object is a stream.
object[:Length] = object[:raw_stream_content].bytesize if object[:raw_stream_content]
# if the object is not a simple object, it is a dictionary
# A dictionary shall be written as a sequence of key-value pairs enclosed in double angle brackets (<<...>>)