diff --git a/src/epsimage.cpp b/src/epsimage.cpp index 66988755..85e02d55 100644 --- a/src/epsimage.cpp +++ b/src/epsimage.cpp @@ -61,7 +61,7 @@ namespace { using namespace Exiv2; // signature of DOS EPS - static const std::string epsDosSignature = "\xc5\xd0\xd3\xc6"; + static const std::string dosEpsSignature = "\xC5\xD0\xD3\xC6"; // first line of EPS static const std::string epsFirstLine[] = { @@ -142,6 +142,38 @@ namespace { writeTemp(tempIo, data.data(), data.size()); } + //! Get the current write position of temp file, taking care of errors + static size_t posTemp(BasicIo& tempIo) + { + const long pos = tempIo.tell(); + if (pos == -1) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Internal error while determining current write position in temporary file.\n"; + #endif + throw Error(21); + } + return pos; + } + + //! Write an unsigned 32-bit integer into temp file, taking care of errors + static void writeTempUInt32LE(BasicIo& tempIo, unsigned int v) + { + const unsigned char b[4] = { + (v >> 0*8) & 0xFF, + (v >> 1*8) & 0xFF, + (v >> 2*8) & 0xFF, + (v >> 3*8) & 0xFF, + }; + writeTemp(tempIo, reinterpret_cast(b), sizeof(b)); + } + + //! Read an unsigned 32-bit integer in little endian + static unsigned int readUInt32LE(const char* data, size_t startPos) + { + const unsigned char* b = reinterpret_cast(data + startPos); + return (((((b[3] << 8) | b[2]) << 8) | b[1]) << 8) | b[0]; + } + //! Check whether a string has a certain beginning static bool startsWith(const std::string& s, const std::string& start) { @@ -208,7 +240,7 @@ namespace { } //! Find an XMP block - static void findXmp(size_t& xmpPos, size_t& xmpSize, const char* data, size_t size, bool write) + static void findXmp(size_t& xmpPos, size_t& xmpSize, const char* data, size_t startPos, size_t size, bool write) { // prepare list of valid XMP headers std::vector > xmpHeaders; @@ -223,7 +255,7 @@ namespace { // search for valid XMP header xmpSize = 0; - for (xmpPos = 0; xmpPos < size; xmpPos++) { + for (xmpPos = startPos; xmpPos < size; xmpPos++) { if (data[xmpPos] != '\x00' && data[xmpPos] != '<') continue; for (size_t i = 0; i < xmpHeaders.size(); i++) { const std::string &header = xmpHeaders[i].first; @@ -290,7 +322,7 @@ namespace { } //! Find removable XMP embeddings - static std::vector > findRemovableEmbeddings(const char* data, size_t posEof, size_t posEndPageSetup, + static std::vector > findRemovableEmbeddings(const char* data, size_t posStart, size_t posEof, size_t posEndPageSetup, size_t xmpPos, size_t xmpSize, bool write) { std::vector > removableEmbeddings; @@ -367,7 +399,7 @@ namespace { // check whether another XMP metadata block would take precedence if this one was removed { size_t xmpPos, xmpSize; - findXmp(xmpPos, xmpSize, data, posEndPageSetup, write); + findXmp(xmpPos, xmpSize, data, posStart, posEndPageSetup, write); if (xmpSize != 0) { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Second XMP metadata block interferes at position: " << xmpPos << "\n"; @@ -400,16 +432,79 @@ namespace { // read from input file via memory map const char *data = reinterpret_cast(io.mmap()); - const size_t size = io.size(); - size_t pos = 0; - std::string line; - // TODO: Add support for DOS EPS (C5 D0 D3 C6) + // default positions and sizes + const size_t size = io.size(); + size_t posEps = 0; + size_t posEndEps = size; + size_t posWmf = 0; + size_t sizeWmf = 0; + size_t posTiff = 0; + size_t sizeTiff = 0; + + // check for DOS EPS + const bool dosEps = (size >= dosEpsSignature.size() && memcmp(data, dosEpsSignature.data(), dosEpsSignature.size()) == 0); + if (dosEps) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found DOS EPS signature\n"; + #endif + if (size < 30) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Premature end of file after DOS EPS signature.\n"; + #endif + throw Error(write ? 21 : 14); + } + posEps = readUInt32LE(data, 4); + posEndEps = readUInt32LE(data, 8) + posEps; + posWmf = readUInt32LE(data, 12); + sizeWmf = readUInt32LE(data, 16); + posTiff = readUInt32LE(data, 20); + sizeTiff = readUInt32LE(data, 24); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: EPS section at position " << posEps << ", size " << (posEndEps - posEps) << "\n"; + EXV_DEBUG << "readWriteEpsMetadata: WMF section at position " << posWmf << ", size " << sizeWmf << "\n"; + EXV_DEBUG << "readWriteEpsMetadata: TIFF section at position " << posTiff << ", size " << sizeTiff << "\n"; + #endif + if (!(data[28] == '\xFF' && data[29] == '\xFF')) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: DOS EPS checksum is not FFFF\n"; + #endif + } + if (!((posWmf == 0 && sizeWmf == 0) || (posTiff == 0 && sizeTiff == 0))) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has both WMF and TIFF section. Only one of those is allowed.\n"; + #endif + if (write) throw Error(21); + } + if (sizeWmf == 0 && sizeTiff == 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has neither WMF nor TIFF section. Exactly one of those is required.\n"; + #endif + if (write) throw Error(21); + } + if (posEps < 30 || posEndEps > size) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posEps << ") or size (" << (posEndEps - posEps) << ") for EPS section.\n"; + #endif + throw Error(write ? 21 : 14); + } + if (sizeWmf != 0 && (posWmf < 30 || posWmf + sizeWmf > size)) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posWmf << ") or size (" << sizeWmf << ") for WMF section.\n"; + #endif + if (write) throw Error(21); + } + if (sizeTiff != 0 && (posTiff < 30 || posTiff + sizeTiff > size)) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posTiff << ") or size (" << sizeTiff << ") for TIFF section.\n"; + #endif + if (write) throw Error(21); + } + } // check first line - const size_t firstLinePos = pos; - pos = readLine(line, data, firstLinePos, size); - const std::string firstLine = line; + std::string firstLine; + const size_t posSecondLine = readLine(firstLine, data, posEps, posEndEps); #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: First line: " << firstLine << "\n"; #endif @@ -422,13 +517,13 @@ namespace { } // determine line ending style of the first line - if (pos >= size) { + if (posSecondLine >= posEndEps) { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Premature end of file after first line.\n"; #endif throw Error(write ? 21 : 14); } - const std::string lineEnding(data + firstLinePos + firstLine.size(), pos - (firstLinePos + firstLine.size())); + const std::string lineEnding(data + posEps + firstLine.size(), posSecondLine - (posEps + firstLine.size())); #ifdef DEBUG if (lineEnding == "\n") { EXV_DEBUG << "readWriteEpsMetadata: Line ending style: Unix (LF)\n"; @@ -442,26 +537,27 @@ namespace { #endif // scan comments - size_t posLanguageLevel = size; - size_t posContainsXmp = size; - size_t posPages = size; - size_t posExiv2Version = size; - size_t posExiv2Website = size; - size_t posEndComments = size; - size_t posPage = size; - size_t posEndPageSetup = size; - size_t posPageTrailer = size; - size_t posEof = size; + size_t posLanguageLevel = posEndEps; + size_t posContainsXmp = posEndEps; + size_t posPages = posEndEps; + size_t posExiv2Version = posEndEps; + size_t posExiv2Website = posEndEps; + size_t posEndComments = posEndEps; + size_t posPage = posEndEps; + size_t posEndPageSetup = posEndEps; + size_t posPageTrailer = posEndEps; + size_t posEof = posEndEps; bool implicitPage = false; bool photoshop = false; bool inDefaultsOrPrologOrSetup = false; bool inPageSetup = false; - while (pos < posEof) { + for (size_t pos = posEps; pos < posEof;) { const size_t startPos = pos; - pos = readLine(line, data, startPos, size); + std::string line; + pos = readLine(line, data, startPos, posEndEps); // implicit comments if (line == "%%EOF" || line == "%begin_xml_code" || !(line.size() >= 2 && line[0] == '%' && '\x21' <= line[1] && line[1] <= '\x7e')) { - if (posEndComments == size) { + if (posEndComments == posEndEps) { posEndComments = startPos; #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndComments at position: " << startPos << "\n"; @@ -469,14 +565,14 @@ namespace { } } if (line == "%%EOF" || line == "%begin_xml_code" || (line.size() >= 1 && line[0] != '%')) { - if (posPage == size && posEndComments != size && !inDefaultsOrPrologOrSetup && !onlyWhitespaces(line)) { + if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsOrPrologOrSetup && !onlyWhitespaces(line)) { posPage = startPos; implicitPage = true; #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page at position: " << startPos << "\n"; #endif } - if (posEndPageSetup == size && posPage != size && !inPageSetup) { + if (posEndPageSetup == posEndEps && posPage != posEndEps && !inPageSetup) { posEndPageSetup = startPos; #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; @@ -484,7 +580,7 @@ namespace { } } if (line.size() >= 1 && line[0] != '%') continue; // performance optimization - if (line == "%%EOF" && posPageTrailer == size) { + if (line == "%%EOF" && posPageTrailer == posEndEps) { posPageTrailer = startPos; #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Found implicit PageTrailer at position: " << startPos << "\n"; @@ -494,17 +590,17 @@ namespace { #ifdef DEBUG bool significantLine = true; #endif - if (posEndComments == size && posLanguageLevel == size && startsWith(line, "%%LanguageLevel:")) { + if (posEndComments == posEndEps && posLanguageLevel == posEndEps && startsWith(line, "%%LanguageLevel:")) { posLanguageLevel = startPos; - } else if (posEndComments == size && posContainsXmp == size && startsWith(line, "%ADO_ContainsXMP:")) { + } else if (posEndComments == posEndEps && posContainsXmp == posEndEps && startsWith(line, "%ADO_ContainsXMP:")) { posContainsXmp = startPos; - } else if (posEndComments == size && posPages == size && startsWith(line, "%%Pages:")) { + } else if (posEndComments == posEndEps && posPages == posEndEps && startsWith(line, "%%Pages:")) { posPages = startPos; - } else if (posEndComments == size && posExiv2Version == size && startsWith(line, "%Exiv2Version:")) { + } else if (posEndComments == posEndEps && posExiv2Version == posEndEps && startsWith(line, "%Exiv2Version:")) { posExiv2Version = startPos; - } else if (posEndComments == size && posExiv2Website == size && startsWith(line, "%Exiv2Website:")) { + } else if (posEndComments == posEndEps && posExiv2Website == posEndEps && startsWith(line, "%Exiv2Website:")) { posExiv2Website = startPos; - } else if (posEndComments == size && line == "%%EndComments") { + } else if (posEndComments == posEndEps && line == "%%EndComments") { posEndComments = startPos; } else if (line == "%%BeginDefaults") { inDefaultsOrPrologOrSetup = true; @@ -518,32 +614,32 @@ namespace { inDefaultsOrPrologOrSetup = true; } else if (line == "%%EndSetup") { inDefaultsOrPrologOrSetup = false; - } else if (posPage == size && startsWith(line, "%%Page:")) { + } else if (posPage == posEndEps && startsWith(line, "%%Page:")) { posPage = startPos; } else if (line == "%%BeginPageSetup") { inPageSetup = true; - } else if (posEndPageSetup == size && line == "%%EndPageSetup") { + } else if (posEndPageSetup == posEndEps && line == "%%EndPageSetup") { inPageSetup = false; posEndPageSetup = startPos; - } else if (posPageTrailer == size && line == "%%PageTrailer") { + } else if (posPageTrailer == posEndEps && line == "%%PageTrailer") { posPageTrailer = startPos; } else if (startsWith(line, "%BeginPhotoshop:")) { photoshop = true; } else if (line == "%%EOF") { posEof = startPos; } else if (startsWith(line, "%%BeginDocument:")) { - if (posEndPageSetup == size) { + if (posEndPageSetup == posEndEps) { #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Embedded document at invalid position (before explicit or implicit EndPageSetup): " << startPos << "\n"; + EXV_WARNING << "Nested document at invalid position (before explicit or implicit EndPageSetup): " << startPos << "\n"; #endif throw Error(write ? 21 : 14); } - // TODO: Add support for embedded documents! + // TODO: Add support for nested documents! #ifndef SUPPRESS_WARNINGS - EXV_WARNING << "Embedded documents are currently not supported. Found embedded document at position: " << startPos << "\n"; + EXV_WARNING << "Nested documents are currently not supported. Found nested document at position: " << startPos << "\n"; #endif throw Error(write ? 21 : 14); - } else if (posPage != size && startsWith(line, "%%Page:")) { + } else if (posPage != posEndEps && startsWith(line, "%%Page:")) { if (implicitPage) { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Page at position " << startPos << " conflicts with implicit page at position: " << posPage << "\n"; @@ -573,7 +669,8 @@ namespace { } // interpret comment "%ADO_ContainsXMP:" - readLine(line, data, posContainsXmp, size); + std::string line; + readLine(line, data, posContainsXmp, posEndEps); bool containsXmp; if (line == "%ADO_ContainsXMP: MainFirst" || line == "%ADO_ContainsXMP:MainFirst") { containsXmp = true; @@ -588,11 +685,11 @@ namespace { std::vector > removableEmbeddings; bool fixBeginXmlPacket = false; - size_t xmpPos = size; + size_t xmpPos = posEndEps; size_t xmpSize = 0; if (containsXmp) { // search for XMP metadata - findXmp(xmpPos, xmpSize, data, size, write); + findXmp(xmpPos, xmpSize, data, posEps, posEndEps, write); if (xmpSize == 0) { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Unable to find XMP metadata as announced at position: " << posContainsXmp << "\n"; @@ -600,19 +697,19 @@ namespace { throw Error(write ? 21 : 14); } // check embedding of XMP metadata - const size_t posLineAfterXmp = readLine(line, data, xmpPos + xmpSize, size); + const size_t posLineAfterXmp = readLine(line, data, xmpPos + xmpSize, posEndEps); if (line != "") { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Unexpected " << line.size() << " bytes of data after XMP at position: " << (xmpPos + xmpSize) << "\n"; #endif if (write) throw Error(21); } - readLine(line, data, posLineAfterXmp, size); + readLine(line, data, posLineAfterXmp, posEndEps); if (line == "% &&end XMP packet marker&&" || line == "% &&end XMP packet marker&&") { #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Recognized flexible XMP embedding\n"; #endif - const size_t posBeginXmlPacket = readPrevLine(line, data, xmpPos, size); + const size_t posBeginXmlPacket = readPrevLine(line, data, xmpPos, posEndEps); if (startsWith(line, "%begin_xml_packet:")) { #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Found %begin_xml_packet before flexible XMP embedding\n"; @@ -629,7 +726,7 @@ namespace { if (write) throw Error(21); } } else { - removableEmbeddings = findRemovableEmbeddings(data, posEof, posEndPageSetup, xmpPos, xmpSize, write); + removableEmbeddings = findRemovableEmbeddings(data, posEps, posEof, posEndPageSetup, xmpPos, xmpSize, write); if (removableEmbeddings.empty()) { #ifndef SUPPRESS_WARNINGS EXV_WARNING << "Unknown XMP embedding at position: " << xmpPos << "\n"; @@ -640,10 +737,10 @@ namespace { } if (!write) { - // copy + // copy XMP metadata xmpPacket.assign(data + xmpPos, xmpSize); } else { - const bool useExistingEmbedding = (xmpPos != size && removableEmbeddings.empty()); + const bool useExistingEmbedding = (xmpPos != posEndEps && removableEmbeddings.empty()); // TODO: Add support for deleting XMP metadata. Note that this is not // as simple as it may seem, and requires special attention! @@ -679,7 +776,7 @@ namespace { positions.push_back(posEndPageSetup); positions.push_back(posPageTrailer); positions.push_back(posEof); - positions.push_back(size); + positions.push_back(posEndEps); if (useExistingEmbedding) { positions.push_back(xmpPos); } @@ -689,8 +786,13 @@ namespace { std::sort(positions.begin(), positions.end()); // assemble result EPS document - size_t prevPos = 0; - size_t prevSkipPos = 0; + if (dosEps) { + // DOS EPS header will be written afterwards + writeTemp(*tempIo, std::string(30, '\x00')); + } + const size_t posEpsNew = posTemp(*tempIo); + size_t prevPos = posEps; + size_t prevSkipPos = prevPos; for (std::vector::const_iterator i = positions.begin(); i != positions.end(); i++) { const size_t pos = *i; if (pos == prevPos) continue; @@ -702,53 +804,53 @@ namespace { throw Error(21); } writeTemp(*tempIo, data + prevSkipPos, pos - prevSkipPos); - const size_t posLineEnd = readLine(line, data, pos, size); + const size_t posLineEnd = readLine(line, data, pos, posEndEps); size_t skipPos = pos; // add last line ending if necessary - if (pos == size && pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { + if (pos == posEndEps && pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { writeTemp(*tempIo, lineEnding); #ifdef DEBUG EXV_DEBUG << "readWriteEpsMetadata: Added missing line ending of last line\n"; #endif } // update and complement DSC comments - if (pos == posLanguageLevel && posLanguageLevel != size && !useExistingEmbedding) { + if (pos == posLanguageLevel && posLanguageLevel != posEndEps && !useExistingEmbedding) { if (line == "%%LanguageLevel:1" || line == "%%LanguageLevel: 1") { writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); skipPos = posLineEnd; } } - if (pos == posContainsXmp && posContainsXmp != size) { + if (pos == posContainsXmp && posContainsXmp != posEndEps) { if (line != "%ADO_ContainsXMP: MainFirst") { writeTemp(*tempIo, "%ADO_ContainsXMP: MainFirst" + lineEnding); skipPos = posLineEnd; } } - if (pos == posExiv2Version && posExiv2Version != size) { + if (pos == posExiv2Version && posExiv2Version != posEndEps) { writeTemp(*tempIo, "%Exiv2Version: " + std::string(version()) + lineEnding); skipPos = posLineEnd; } - if (pos == posExiv2Website && posExiv2Website != size) { + if (pos == posExiv2Website && posExiv2Website != posEndEps) { writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); skipPos = posLineEnd; } if (pos == posEndComments) { - if (posLanguageLevel == size && !useExistingEmbedding) { + if (posLanguageLevel == posEndEps && !useExistingEmbedding) { writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); } - if (posContainsXmp == size) { + if (posContainsXmp == posEndEps) { writeTemp(*tempIo, "%ADO_ContainsXMP: MainFirst" + lineEnding); } - if (posPages == size) { + if (posPages == posEndEps) { writeTemp(*tempIo, "%%Pages: 1" + lineEnding); } - if (posExiv2Version == size) { + if (posExiv2Version == posEndEps) { writeTemp(*tempIo, "%Exiv2Version: " + std::string(version()) + lineEnding); } - if (posExiv2Website == size) { + if (posExiv2Website == posEndEps) { writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); } - readLine(line, data, posEndComments, size); + readLine(line, data, posEndComments, posEndEps); if (line != "%%EndComments") { writeTemp(*tempIo, "%%EndComments" + lineEnding); } @@ -819,7 +921,7 @@ namespace { } } if (pos == posPageTrailer) { - if (pos == size || pos == posEof) { + if (pos == posEndEps || pos == posEof) { writeTemp(*tempIo, "%%PageTrailer" + lineEnding); } else { skipPos = posLineEnd; @@ -831,12 +933,39 @@ namespace { } } // add EOF comment if necessary - if (pos == size && posEof == size) { + if (pos == posEndEps && posEof == posEndEps) { writeTemp(*tempIo, "%%EOF" + lineEnding); } prevPos = pos; prevSkipPos = skipPos; } + const size_t posEndEpsNew = posTemp(*tempIo); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: New EPS size: " << (posEndEpsNew - posEpsNew) << "\n"; + #endif + if (dosEps) { + // add WMF and/or TIFF section if present + writeTemp(*tempIo, data + posWmf, sizeWmf); + writeTemp(*tempIo, data + posTiff, sizeTiff); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: New DOS EPS total size: " << posTemp(*tempIo) << "\n"; + #endif + // write DOS EPS header + if (tempIo->seek(0, BasicIo::beg) != 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Internal error while seeking in temporary file.\n"; + #endif + throw Error(21); + } + writeTemp(*tempIo, dosEpsSignature); + writeTempUInt32LE(*tempIo, posEpsNew); + writeTempUInt32LE(*tempIo, posEndEpsNew - posEpsNew); + writeTempUInt32LE(*tempIo, sizeWmf == 0 ? 0 : posEndEpsNew); + writeTempUInt32LE(*tempIo, sizeWmf); + writeTempUInt32LE(*tempIo, sizeTiff == 0 ? 0 : posEndEpsNew + sizeWmf); + writeTempUInt32LE(*tempIo, sizeTiff); + writeTemp(*tempIo, std::string("\xFF\xFF")); + } // copy temporary file to real output file io.close(); @@ -939,7 +1068,7 @@ namespace Exiv2 bool isEpsType(BasicIo& iIo, bool advance) { // read as many bytes as needed for the longest (DOS) EPS signature - size_t bufSize = epsDosSignature.size(); + size_t bufSize = dosEpsSignature.size(); for (size_t i = 0; i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { if (bufSize < epsFirstLine[i].size()) { bufSize = epsFirstLine[i].size(); @@ -951,7 +1080,7 @@ namespace Exiv2 return false; } // check for all possible (DOS) EPS signatures - bool matched = (memcmp(buf, epsDosSignature.data(), epsDosSignature.size()) == 0); + bool matched = (memcmp(buf, dosEpsSignature.data(), dosEpsSignature.size()) == 0); for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { matched = (memcmp(buf, epsFirstLine[i].data(), epsFirstLine[i].size()) == 0); } @@ -961,4 +1090,5 @@ namespace Exiv2 } return matched; } + } // namespace Exiv2 diff --git a/test/data/eps/eps-flat_invalid-doseps.eps b/test/data/eps/eps-flat_invalid-doseps.eps new file mode 100644 index 00000000..55f7706c Binary files /dev/null and b/test/data/eps/eps-flat_invalid-doseps.eps differ diff --git a/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview-preview1.jpg b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview-preview1.jpg new file mode 100644 index 00000000..29499566 Binary files /dev/null and b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview-preview1.jpg differ diff --git a/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.eps.newxmp b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.eps.newxmp new file mode 100644 index 00000000..f83cd8cf Binary files /dev/null and b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.eps.newxmp differ diff --git a/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.xmp b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.xmp new file mode 100644 index 00000000..28bff94d --- /dev/null +++ b/test/data/eps/eps-flat_oodraw_ai-cs5-lev3-preview.xmp @@ -0,0 +1,78 @@ + + + + + + + + + + + + + Black + + + + + + + + + + + + + + + + + + diff --git a/test/data/eps/eps-flat_photoshop-e9-win-doseps.eps.newxmp b/test/data/eps/eps-flat_photoshop-e9-win-doseps.eps.newxmp new file mode 100644 index 00000000..2fcf9c4a Binary files /dev/null and b/test/data/eps/eps-flat_photoshop-e9-win-doseps.eps.newxmp differ diff --git a/test/data/eps/eps-flat_photoshop-e9-win-doseps.xmp b/test/data/eps/eps-flat_photoshop-e9-win-doseps.xmp new file mode 100644 index 00000000..2e9093ca --- /dev/null +++ b/test/data/eps/eps-flat_photoshop-e9-win-doseps.xmp @@ -0,0 +1,48 @@ + + + + + + + + + + + + + diff --git a/test/data/eps/eps-test.out b/test/data/eps/eps-test.out index cf2e720d..1b11eb3f 100644 --- a/test/data/eps/eps-test.out +++ b/test/data/eps/eps-test.out @@ -145,6 +145,14 @@ Exit code: 0 Command: exiv2 -f -ex eps-flat_inkscape.eps Exit code: 0 +-----> eps-flat_invalid-doseps.eps <----- + +Command: exiv2 -u -pa eps-flat_invalid-doseps.eps +Warning: DOS EPS file has invalid position (32) or size (26562) for EPS section. +Exiv2 exception in print action for file eps-flat_invalid-doseps.eps: +Failed to read image data +Exit code: 1 + -----> eps-flat_minimal-eof.eps <----- Command: exiv2 -u -pa eps-flat_minimal-eof.eps @@ -1802,9 +1810,130 @@ Exit code: 0 -----> eps-flat_oodraw_ai-cs5-lev3-preview.eps <----- Command: exiv2 -u -pa eps-flat_oodraw_ai-cs5-lev3-preview.eps -Exiv2 exception in print action for file eps-flat_oodraw_ai-cs5-lev3-preview.eps: -This does not look like a EPS image -Exit code: 1 +Xmp.xmp.CreatorTool XmpText 21 Adobe Illustrator CS5 +Xmp.xmp.CreateDate XmpText 25 2011-03-25T16:09:09+01:00 +Xmp.xmp.MetadataDate XmpText 25 2011-03-25T16:09:09+01:00 +Xmp.xmp.ModifyDate XmpText 25 2011-03-25T16:09:09+01:00 +Xmp.xmp.Thumbnails XmpText 0 type="Alt" +Xmp.xmp.Thumbnails[1] XmpText 0 type="Struct" +Xmp.xmp.Thumbnails[1]/xmpGImg:width XmpText 3 256 +Xmp.xmp.Thumbnails[1]/xmpGImg:height XmpText 3 208 +Xmp.xmp.Thumbnails[1]/xmpGImg:format XmpText 4 JPEG +Xmp.xmp.Thumbnails[1]/xmpGImg:image XmpText 4279 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8APbW1tvq0X7pPsL+yPDFV +X6rbf75T/gRgV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9Vtv98p/w +IxV31W2/3yn/AAIxV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9Vtv9 +8p/wIxV31W2/3yn/AAIxV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9 +Vtv98p/wIxV31W2/3yn/AAIxV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wAC +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 +Xmp.xmpTPg.MaxPageSize XmpText 0 type="Struct" +Xmp.xmpTPg.MaxPageSize/stDim:w XmpText 10 612.000000 +Xmp.xmpTPg.MaxPageSize/stDim:h XmpText 10 792.000000 +Xmp.xmpTPg.MaxPageSize/stDim:unit XmpText 6 Points +Xmp.xmpTPg.NPages XmpText 1 1 +Xmp.xmpTPg.HasVisibleTransparency XmpText 5 False +Xmp.xmpTPg.HasVisibleOverprint XmpText 5 False +Xmp.xmpTPg.PlateNames XmpSeq 1 Black +Xmp.xmpTPg.SwatchGroups XmpText 0 type="Seq" +Xmp.xmpTPg.SwatchGroups[1] XmpText 0 type="Struct" +Xmp.xmpTPg.SwatchGroups[1]/xmpG:groupName XmpText 20 Default Swatch Group +Xmp.xmpTPg.SwatchGroups[1]/xmpG:groupType XmpText 1 0 +Xmp.dc.format XmpText 22 application/postscript +Xmp.xmpMM.DerivedFrom XmpText 0 type="Struct" +Xmp.xmpMM.DerivedFrom/stRef:instanceID XmpText 40 xmp.iid:02801174072068118C14A928EC4F6B4E +Xmp.xmpMM.DerivedFrom/stRef:documentID XmpText 40 xmp.did:02801174072068118C14A928EC4F6B4E +Xmp.xmpMM.DerivedFrom/stRef:originalDocumentID XmpText 40 xmp.did:01801174072068118C14A928EC4F6B4E +Xmp.xmpMM.DocumentID XmpText 40 xmp.did:03801174072068118C14A928EC4F6B4E +Xmp.xmpMM.InstanceID XmpText 40 xmp.iid:03801174072068118C14A928EC4F6B4E +Xmp.xmpMM.OriginalDocumentID XmpText 40 xmp.did:01801174072068118C14A928EC4F6B4E +Xmp.xmpMM.History XmpText 0 type="Seq" +Xmp.xmpMM.History[1] XmpText 0 type="Struct" +Xmp.xmpMM.History[1]/stEvt:action XmpText 5 saved +Xmp.xmpMM.History[1]/stEvt:instanceID XmpText 40 xmp.iid:01801174072068118C14A928EC4F6B4E +Xmp.xmpMM.History[1]/stEvt:when XmpText 22 2011-03-25T16:07+01:00 +Xmp.xmpMM.History[1]/stEvt:softwareAgent XmpText 21 Adobe Illustrator CS5 +Xmp.xmpMM.History[1]/stEvt:changed XmpText 1 / +Xmp.xmpMM.History[2] XmpText 0 type="Struct" +Xmp.xmpMM.History[2]/stEvt:action XmpText 5 saved +Xmp.xmpMM.History[2]/stEvt:instanceID XmpText 40 xmp.iid:02801174072068118C14A928EC4F6B4E +Xmp.xmpMM.History[2]/stEvt:when XmpText 25 2011-03-25T16:07:33+01:00 +Xmp.xmpMM.History[2]/stEvt:softwareAgent XmpText 21 Adobe Illustrator CS5 +Xmp.xmpMM.History[2]/stEvt:changed XmpText 1 / +Xmp.xmpMM.History[3] XmpText 0 type="Struct" +Xmp.xmpMM.History[3]/stEvt:action XmpText 5 saved +Xmp.xmpMM.History[3]/stEvt:instanceID XmpText 40 xmp.iid:03801174072068118C14A928EC4F6B4E +Xmp.xmpMM.History[3]/stEvt:when XmpText 25 2011-03-25T16:09:09+01:00 +Xmp.xmpMM.History[3]/stEvt:softwareAgent XmpText 21 Adobe Illustrator CS5 +Xmp.xmpMM.History[3]/stEvt:changed XmpText 1 / +Exit code: 253 + +Command: exiv2 -pp eps-flat_oodraw_ai-cs5-lev3-preview.eps +Preview 1: image/jpeg, 256x208 pixels, 3166 bytes +Exit code: 0 + +Command: exiv2 -f -ep eps-flat_oodraw_ai-cs5-lev3-preview.eps +Exit code: 0 + +Command: exiv2 -f -eX eps-flat_oodraw_ai-cs5-lev3-preview.eps +Exit code: 0 + +Command: exiv2 -ix eps-flat_oodraw_ai-cs5-lev3-preview.eps +Exit code: 0 + +Command: (2) exiv2 -ix eps-flat_oodraw_ai-cs5-lev3-preview.eps +Exit code: 0 + +Command: exiv2 -f -ex eps-flat_oodraw_ai-cs5-lev3-preview.eps +Exit code: 0 -----> eps-flat_oodraw_ai-cs5-lev3.eps <----- @@ -2719,9 +2848,56 @@ Exit code: 1 -----> eps-flat_photoshop-e9-win-doseps.eps <----- Command: exiv2 -u -pa eps-flat_photoshop-e9-win-doseps.eps -Exiv2 exception in print action for file eps-flat_photoshop-e9-win-doseps.eps: -This does not look like a EPS image -Exit code: 1 +Xmp.xmp.CreatorTool XmpText 36 Adobe Photoshop Elements 9.0 Windows +Xmp.xmp.MetadataDate XmpText 25 2011-06-15T17:26:37+02:00 +Xmp.xmp.ModifyDate XmpText 25 2011-06-15T17:26:37+02:00 +Xmp.xmp.CreateDate XmpText 25 2011-06-15T17:26:37+02:00 +Xmp.xmpMM.InstanceID XmpText 40 xmp.iid:BB76D1936397E011BD8F809D442CE889 +Xmp.xmpMM.DocumentID XmpText 40 xmp.did:BA76D1936397E011BD8F809D442CE889 +Xmp.xmpMM.OriginalDocumentID XmpText 40 xmp.did:BA76D1936397E011BD8F809D442CE889 +Xmp.xmpMM.History XmpText 0 type="Seq" +Xmp.xmpMM.History[1] XmpText 0 type="Struct" +Xmp.xmpMM.History[1]/stEvt:action XmpText 7 created +Xmp.xmpMM.History[1]/stEvt:instanceID XmpText 40 xmp.iid:BA76D1936397E011BD8F809D442CE889 +Xmp.xmpMM.History[1]/stEvt:when XmpText 25 2011-06-15T17:26:37+02:00 +Xmp.xmpMM.History[1]/stEvt:softwareAgent XmpText 36 Adobe Photoshop Elements 9.0 Windows +Xmp.xmpMM.History[2] XmpText 0 type="Struct" +Xmp.xmpMM.History[2]/stEvt:action XmpText 5 saved +Xmp.xmpMM.History[2]/stEvt:instanceID XmpText 40 xmp.iid:BB76D1936397E011BD8F809D442CE889 +Xmp.xmpMM.History[2]/stEvt:when XmpText 25 2011-06-15T17:26:37+02:00 +Xmp.xmpMM.History[2]/stEvt:softwareAgent XmpText 36 Adobe Photoshop Elements 9.0 Windows +Xmp.xmpMM.History[2]/stEvt:changed XmpText 1 / +Xmp.dc.format XmpText 10 image/epsf +Xmp.tiff.Orientation XmpText 1 top, left +Xmp.tiff.XResolution XmpText 13 118 +Xmp.tiff.YResolution XmpText 13 118 +Xmp.tiff.ResolutionUnit XmpText 1 cm +Xmp.tiff.NativeDigest XmpText 134 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;ACFFF7D243A168D5528B080270FB9FEC +Xmp.exif.PixelXDimension XmpText 4 1890 +Xmp.exif.PixelYDimension XmpText 4 1417 +Xmp.exif.ColorSpace XmpText 1 sRGB +Xmp.exif.NativeDigest XmpText 414 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;688FEB35A103981B434E9C688B2AB188 +Xmp.photoshop.ColorMode XmpText 1 3 +Xmp.photoshop.ICCProfile XmpText 17 sRGB IEC61966-2.1 +Exit code: 253 + +Command: exiv2 -pp eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 + +Command: exiv2 -f -ep eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 + +Command: exiv2 -f -eX eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 + +Command: exiv2 -ix eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 + +Command: (2) exiv2 -ix eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 + +Command: exiv2 -f -ex eps-flat_photoshop-e9-win-doseps.eps +Exit code: 0 -----> eps-flat_photoshop-e9-win.eps <----- @@ -2812,7 +2988,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-3-lev2.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-3-lev2.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 9908 +Warning: Nested documents are currently not supported. Found nested document at position: 9908 Exiv2 exception in print action for file eps-nested_noxmp_ai-3-lev2.eps: Failed to read image data Exit code: 1 @@ -2820,7 +2996,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-3-lev3.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-3-lev3.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 9908 +Warning: Nested documents are currently not supported. Found nested document at position: 9908 Exiv2 exception in print action for file eps-nested_noxmp_ai-3-lev3.eps: Failed to read image data Exit code: 1 @@ -2828,7 +3004,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-8-lev2.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-8-lev2.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 51363 +Warning: Nested documents are currently not supported. Found nested document at position: 51363 Exiv2 exception in print action for file eps-nested_noxmp_ai-8-lev2.eps: Failed to read image data Exit code: 1 @@ -2836,7 +3012,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-8-lev3.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-8-lev3.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 51363 +Warning: Nested documents are currently not supported. Found nested document at position: 51363 Exiv2 exception in print action for file eps-nested_noxmp_ai-8-lev3.eps: Failed to read image data Exit code: 1 @@ -2844,7 +3020,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-cs5-lev2.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-cs5-lev2.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 199781 +Warning: Nested documents are currently not supported. Found nested document at position: 199781 Exiv2 exception in print action for file eps-nested_noxmp_ai-cs5-lev2.eps: Failed to read image data Exit code: 1 @@ -2852,7 +3028,7 @@ Exit code: 1 -----> eps-nested_noxmp_ai-cs5-lev3.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_ai-cs5-lev3.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 199367 +Warning: Nested documents are currently not supported. Found nested document at position: 199367 Exiv2 exception in print action for file eps-nested_noxmp_ai-cs5-lev3.eps: Failed to read image data Exit code: 1 @@ -2860,35 +3036,39 @@ Exit code: 1 -----> eps-nested_noxmp_indesign-cs5-lev2-bin.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_indesign-cs5-lev2-bin.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180329 Exiv2 exception in print action for file eps-nested_noxmp_indesign-cs5-lev2-bin.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_noxmp_indesign-cs5-lev2.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_indesign-cs5-lev2.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180411 Exiv2 exception in print action for file eps-nested_noxmp_indesign-cs5-lev2.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_noxmp_indesign-cs5-lev3-bin.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_indesign-cs5-lev3-bin.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180329 Exiv2 exception in print action for file eps-nested_noxmp_indesign-cs5-lev3-bin.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_noxmp_indesign-cs5-lev3.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_indesign-cs5-lev3.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180411 Exiv2 exception in print action for file eps-nested_noxmp_indesign-cs5-lev3.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_noxmp_oodraw-lev2-epsi.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_oodraw-lev2-epsi.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 111882 +Warning: Nested documents are currently not supported. Found nested document at position: 111882 Exiv2 exception in print action for file eps-nested_noxmp_oodraw-lev2-epsi.eps: Failed to read image data Exit code: 1 @@ -2896,14 +3076,15 @@ Exit code: 1 -----> eps-nested_noxmp_oodraw-lev2-preview.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_oodraw-lev2-preview.eps +Warning: Nested documents are currently not supported. Found nested document at position: 16203 Exiv2 exception in print action for file eps-nested_noxmp_oodraw-lev2-preview.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_noxmp_oodraw-lev2.eps <----- Command: exiv2 -u -pa eps-nested_noxmp_oodraw-lev2.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 1937 +Warning: Nested documents are currently not supported. Found nested document at position: 1937 Exiv2 exception in print action for file eps-nested_noxmp_oodraw-lev2.eps: Failed to read image data Exit code: 1 @@ -2911,42 +3092,47 @@ Exit code: 1 -----> eps-nested_xmp_ai-3-lev3.eps <----- Command: exiv2 -u -pa eps-nested_xmp_ai-3-lev3.eps +Warning: Nested documents are currently not supported. Found nested document at position: 24646 Exiv2 exception in print action for file eps-nested_xmp_ai-3-lev3.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_ai-8-lev3.eps <----- Command: exiv2 -u -pa eps-nested_xmp_ai-8-lev3.eps +Warning: Nested documents are currently not supported. Found nested document at position: 250651 Exiv2 exception in print action for file eps-nested_xmp_ai-8-lev3.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_ai-cs5-lev3.eps <----- Command: exiv2 -u -pa eps-nested_xmp_ai-cs5-lev3.eps +Warning: Nested documents are currently not supported. Found nested document at position: 233935 Exiv2 exception in print action for file eps-nested_xmp_ai-cs5-lev3.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_indesign-cs5-lev3-bin.eps <----- Command: exiv2 -u -pa eps-nested_xmp_indesign-cs5-lev3-bin.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180285 Exiv2 exception in print action for file eps-nested_xmp_indesign-cs5-lev3-bin.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_indesign-cs5-lev3.eps <----- Command: exiv2 -u -pa eps-nested_xmp_indesign-cs5-lev3.eps +Warning: Nested documents are currently not supported. Found nested document at position: 180367 Exiv2 exception in print action for file eps-nested_xmp_indesign-cs5-lev3.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_oodraw-lev2-epsi.eps <----- Command: exiv2 -u -pa eps-nested_xmp_oodraw-lev2-epsi.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 111804 +Warning: Nested documents are currently not supported. Found nested document at position: 111804 Exiv2 exception in print action for file eps-nested_xmp_oodraw-lev2-epsi.eps: Failed to read image data Exit code: 1 @@ -2954,14 +3140,15 @@ Exit code: 1 -----> eps-nested_xmp_oodraw-lev2-preview.eps <----- Command: exiv2 -u -pa eps-nested_xmp_oodraw-lev2-preview.eps +Warning: Nested documents are currently not supported. Found nested document at position: 16365 Exiv2 exception in print action for file eps-nested_xmp_oodraw-lev2-preview.eps: -This does not look like a EPS image +Failed to read image data Exit code: 1 -----> eps-nested_xmp_oodraw-lev2.eps <----- Command: exiv2 -u -pa eps-nested_xmp_oodraw-lev2.eps -Warning: Embedded documents are currently not supported. Found embedded document at position: 1859 +Warning: Nested documents are currently not supported. Found nested document at position: 1859 Exiv2 exception in print action for file eps-nested_xmp_oodraw-lev2.eps: Failed to read image data Exit code: 1