From 380da317f2bd16bc4934ccdbed96a0f7a1a48407 Mon Sep 17 00:00:00 2001 From: "Deven T. Corzine" Date: Thu, 23 Jun 2022 18:46:35 -0400 Subject: [PATCH] Automatically merge content streams during validation. --- lib/PDF/Data.pm | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/PDF/Data.pm b/lib/PDF/Data.pm index 1071b82..3add163 100644 --- a/lib/PDF/Data.pm +++ b/lib/PDF/Data.pm @@ -551,16 +551,9 @@ sub validate_page { my ($self, $path, $page) = @_; if (my $contents = $page->{Contents}) { - if (is_array($contents)) { - for (my $i = 0; $i < @{$contents}; $i++) { - is_stream($contents->[$i]) or croak join(": ", $self->{-file} || (), "Error: $path\->{Contents}[$i] must be a stream!\n"); - $self->validate_content_stream("$path\->{Contents}[$i]", $contents->[$i]); - } - } elsif (is_stream($contents)) { - $self->validate_content_stream("$path\->{Contents}", $contents); - } else { - croak join(": ", $self->{-file} || (), "Error: $path\->{Contents} must be an array or stream!\n"); - } + $contents = $self->merge_content_streams($contents) if is_array($contents); + is_stream($contents) or croak join(": ", $self->{-file} || (), "Error: $path\->{Contents} must be an array or stream!\n"); + $self->validate_content_stream("$path\->{Contents}", $contents); } # Validate resources, if any. @@ -1460,7 +1453,7 @@ Dump an outline of the PDF internal structure for debugging. =head2 merge_content_streams - $pdf->merge_content_streams($array_of_streams); + my $stream = $pdf->merge_content_streams($array_of_streams); Merge multiple content streams into a single content stream.