fixed EpsImage to handle %%PageTrailer and %%Trailer properly, adjusted test suite
This commit is contained in:
parent
c62fa03a86
commit
8c6d9fe2c2
@ -431,6 +431,7 @@ namespace {
|
||||
size_t posEof = posEndEps;
|
||||
std::vector<std::pair<size_t, size_t> > removableEmbeddings;
|
||||
bool implicitPage = false;
|
||||
bool implicitPageTrailer = false;
|
||||
bool photoshop = false;
|
||||
bool inDefaultsOrPrologOrSetup = false;
|
||||
bool inPageSetup = false;
|
||||
@ -465,11 +466,14 @@ namespace {
|
||||
}
|
||||
}
|
||||
if (line.size() >= 1 && line[0] != '%') continue; // performance optimization
|
||||
if (line == "%%EOF" && posPageTrailer == posEndEps) {
|
||||
posPageTrailer = startPos;
|
||||
#ifdef DEBUG
|
||||
EXV_DEBUG << "readWriteEpsMetadata: Found implicit PageTrailer at position: " << startPos << "\n";
|
||||
#endif
|
||||
if (line == "%%EOF" || line == "%%Trailer") {
|
||||
if (posPageTrailer == posEndEps) {
|
||||
posPageTrailer = startPos;
|
||||
implicitPageTrailer = true;
|
||||
#ifdef DEBUG
|
||||
EXV_DEBUG << "readWriteEpsMetadata: Found implicit PageTrailer at position: " << startPos << "\n";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
// explicit comments
|
||||
#ifdef DEBUG
|
||||
@ -893,11 +897,10 @@ namespace {
|
||||
}
|
||||
}
|
||||
if (pos == posPageTrailer) {
|
||||
if (pos == posEndEps || pos == posEof) {
|
||||
writeTemp(*tempIo, "%%PageTrailer" + lineEnding);
|
||||
} else {
|
||||
if (!implicitPageTrailer) {
|
||||
skipPos = posLineEnd;
|
||||
}
|
||||
writeTemp(*tempIo, "%%PageTrailer" + lineEnding);
|
||||
writeTemp(*tempIo, "%Exiv2BeginXMP: After %%PageTrailer" + lineEnding);
|
||||
writeTemp(*tempIo, "[/EMC Exiv2_pdfmark" + lineEnding);
|
||||
writeTemp(*tempIo, "[/NamespacePop Exiv2_pdfmark" + lineEnding);
|
||||
|
||||
7
test/data/eps/eps-flat_minimal-trailer.eps
Normal file
7
test/data/eps/eps-flat_minimal-trailer.eps
Normal file
@ -0,0 +1,7 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 5 5 105 105
|
||||
10 setlinewidth
|
||||
10 10 moveto
|
||||
0 90 rlineto 90 0 rlineto 0 -90 rlineto closepath
|
||||
stroke
|
||||
%%Trailer
|
||||
71
test/data/eps/eps-flat_minimal-trailer.eps.newxmp
Normal file
71
test/data/eps/eps-flat_minimal-trailer.eps.newxmp
Normal file
@ -0,0 +1,71 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 5 5 105 105
|
||||
%%LanguageLevel: 2
|
||||
%ADO_ContainsXMP: MainFirst
|
||||
%%Pages: 1
|
||||
%Exiv2Version: _Exiv2Version_
|
||||
%Exiv2Website: http://www.exiv2.org/
|
||||
%%EndComments
|
||||
%%Page: 1 1
|
||||
%%EndPageComments
|
||||
%%BeginPageSetup
|
||||
%Exiv2BeginXMP: Before %%EndPageSetup
|
||||
/currentdistillerparams where
|
||||
{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse
|
||||
{userdict /Exiv2_pdfmark /cleartomark load put
|
||||
userdict /Exiv2_metafile_pdfmark {flushfile cleartomark} bind put}
|
||||
{userdict /Exiv2_pdfmark /pdfmark load put
|
||||
userdict /Exiv2_metafile_pdfmark {/PUT pdfmark} bind put} ifelse
|
||||
[/NamespacePush Exiv2_pdfmark
|
||||
[/_objdef {Exiv2_metadata_stream} /type /stream /OBJ Exiv2_pdfmark
|
||||
[{Exiv2_metadata_stream} 2 dict begin
|
||||
/Type /Metadata def /Subtype /XML def currentdict end /PUT Exiv2_pdfmark
|
||||
[{Exiv2_metadata_stream}
|
||||
currentfile 0 (% &&end XMP packet marker&&)
|
||||
/SubFileDecode filter Exiv2_metafile_pdfmark
|
||||
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description rdf:about=""
|
||||
xmlns:test="http://www.example.com/"
|
||||
test:test="TEST"/>
|
||||
</rdf:RDF>
|
||||
</x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
|
||||
% &&end XMP packet marker&&
|
||||
[/Document 1 dict begin
|
||||
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
|
||||
%Exiv2EndXMP
|
||||
%%EndPageSetup
|
||||
10 setlinewidth
|
||||
10 10 moveto
|
||||
0 90 rlineto 90 0 rlineto 0 -90 rlineto closepath
|
||||
stroke
|
||||
%%PageTrailer
|
||||
%Exiv2BeginXMP: After %%PageTrailer
|
||||
[/EMC Exiv2_pdfmark
|
||||
[/NamespacePop Exiv2_pdfmark
|
||||
%Exiv2EndXMP
|
||||
%%Trailer
|
||||
%%EOF
|
||||
1
test/data/eps/eps-flat_minimal-trailer.xmp
Normal file
1
test/data/eps/eps-flat_minimal-trailer.xmp
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
@ -123,6 +123,7 @@ gr
|
||||
0 27700 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%Exiv2BeginXMP: After %%PageTrailer
|
||||
[/EMC Exiv2_pdfmark
|
||||
[/NamespacePop Exiv2_pdfmark
|
||||
|
||||
@ -124,6 +124,7 @@ gr
|
||||
0 27700 t
|
||||
pom
|
||||
count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
|
||||
%%PageTrailer
|
||||
%Exiv2BeginXMP: After %%PageTrailer
|
||||
[/EMC Exiv2_pdfmark
|
||||
[/NamespacePop Exiv2_pdfmark
|
||||
|
||||
@ -127,6 +127,7 @@ S
|
||||
Q
|
||||
cleartomark end end pagesave restore
|
||||
showpage
|
||||
%%PageTrailer
|
||||
%Exiv2BeginXMP: After %%PageTrailer
|
||||
[/EMC Exiv2_pdfmark
|
||||
[/NamespacePop Exiv2_pdfmark
|
||||
|
||||
@ -800,7 +800,7 @@ Adobe_IllustratorA_AI3 /initialize get exec
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
%%PageTrailer
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
|
||||
Adobe_customcolor /terminate get exec
|
||||
Adobe_cshow /terminate get exec
|
||||
Adobe_packedarray /terminate get exec
|
||||
|
||||
@ -800,7 +800,7 @@ Adobe_IllustratorA_AI3 /initialize get exec
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
%%PageTrailer
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
|
||||
Adobe_customcolor /terminate get exec
|
||||
Adobe_cshow /terminate get exec
|
||||
Adobe_packedarray /terminate get exec
|
||||
|
||||
@ -2748,7 +2748,7 @@ Adobe_Illustrator_AI5 /initialize get exec
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
(Layer 1) Ln
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
1 XR
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
0 XR
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
/BBAccumRotation (0.000000) XT
LB
%AI5_EndLayer--
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_Illustrator_AI5 /terminate get exec
|
||||
<?xpacket end="w"?>
% &&end XMP packet marker&&
[/Document 1 dict begin
/Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark
%Exiv2EndXMP
%%EndPageSetup
1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
(Layer 1) Ln
0 A
u
0 O
0.5 g
0 J 0 j 1 w 10 M []0 d
1 XR
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
f
0 R
0 G
1 j 0 w
0 XR
305.3501 311.0195 m
199 311.0195 l
199 481 l
411.6992 481 l
411.6992 311.0195 l
305.3501 311.0195 l
305.3501 311.0195 l
s
U
/BBAccumRotation (0.000000) XT
LB
%AI5_EndLayer--
%%PageTrailer
%Exiv2BeginXMP: After %%PageTrailer
[/EMC Exiv2_pdfmark
[/NamespacePop Exiv2_pdfmark
%Exiv2EndXMP
gsave annotatepage grestore showpage
%%Trailer
Adobe_Illustrator_AI5 /terminate get exec
|
||||
Adobe_shading_AI8 /terminate get exec
|
||||
Adobe_ColorImage_AI6 /terminate get exec
|
||||
Adobe_cshow /terminate get exec
|
||||
|
||||
@ -151,6 +151,23 @@ Exit code: 0
|
||||
Command: exiv2 -f -ex eps-flat_minimal-noeol.eps
|
||||
Exit code: 0
|
||||
|
||||
-----> eps-flat_minimal-trailer.eps <-----
|
||||
|
||||
Command: exiv2 -u -pa eps-flat_minimal-trailer.eps
|
||||
Exit code: 253
|
||||
|
||||
Command: exiv2 -f -eX eps-flat_minimal-trailer.eps
|
||||
Exit code: 0
|
||||
|
||||
Command: exiv2 -ix eps-flat_minimal-trailer.eps
|
||||
Exit code: 0
|
||||
|
||||
Command: (2) exiv2 -ix eps-flat_minimal-trailer.eps
|
||||
Exit code: 0
|
||||
|
||||
Command: exiv2 -f -ex eps-flat_minimal-trailer.eps
|
||||
Exit code: 0
|
||||
|
||||
-----> eps-flat_minimal.eps <-----
|
||||
|
||||
Command: exiv2 -u -pa eps-flat_minimal.eps
|
||||
|
||||
Loading…
Reference in New Issue
Block a user