#689: Added support for DOS EPS files

v0.27.3
vog 14 years ago
parent 0f1d1fc905
commit 8bd69f7c46

@ -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<const char*>(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<const unsigned char*>(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<std::pair<std::string, std::string> > 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<std::pair<size_t, size_t> > findRemovableEmbeddings(const char* data, size_t posEof, size_t posEndPageSetup,
static std::vector<std::pair<size_t, size_t> > findRemovableEmbeddings(const char* data, size_t posStart, size_t posEof, size_t posEndPageSetup,
size_t xmpPos, size_t xmpSize, bool write)
{
std::vector<std::pair<size_t, size_t> > 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<const char*>(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<std::pair<size_t, size_t> > 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<size_t>::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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<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:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmp:CreatorTool="Adobe Illustrator CS5"
xmp:CreateDate="2011-03-25T16:09:09+01:00"
xmp:MetadataDate="2011-03-25T16:09:09+01:00"
xmp:ModifyDate="2011-03-25T16:09:09+01:00"
xmpTPg:NPages="1"
xmpTPg:HasVisibleTransparency="False"
xmpTPg:HasVisibleOverprint="False"
dc:format="application/postscript"
xmpMM:DocumentID="xmp.did:03801174072068118C14A928EC4F6B4E"
xmpMM:InstanceID="xmp.iid:03801174072068118C14A928EC4F6B4E"
xmpMM:OriginalDocumentID="xmp.did:01801174072068118C14A928EC4F6B4E">
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li
xmpGImg:width="256"
xmpGImg:height="208"
xmpGImg:format="JPEG"
xmpGImg:image="/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8APbW1tvq0X7pPsL+yPDFV&#xA;X6rbf75T/gRgV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9Vtv98p/w&#xA;IxV31W2/3yn/AAIxV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9Vtv9&#xA;8p/wIxV31W2/3yn/AAIxV31W2/3yn/AjFXfVbb/fKf8AAjFXfVbb/fKf8CMVd9Vtv98p/wACMVd9&#xA;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"/>
</rdf:Alt>
</xmp:Thumbnails>
<xmpTPg:MaxPageSize
stDim:w="612.000000"
stDim:h="792.000000"
stDim:unit="Points"/>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li
xmpG:groupName="Default Swatch Group"
xmpG:groupType="0"/>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:02801174072068118C14A928EC4F6B4E"
stRef:documentID="xmp.did:02801174072068118C14A928EC4F6B4E"
stRef:originalDocumentID="xmp.did:01801174072068118C14A928EC4F6B4E"/>
<xmpMM:History>
<rdf:Seq>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:01801174072068118C14A928EC4F6B4E"
stEvt:when="2011-03-25T16:07+01:00"
stEvt:softwareAgent="Adobe Illustrator CS5"
stEvt:changed="/"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:02801174072068118C14A928EC4F6B4E"
stEvt:when="2011-03-25T16:07:33+01:00"
stEvt:softwareAgent="Adobe Illustrator CS5"
stEvt:changed="/"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:03801174072068118C14A928EC4F6B4E"
stEvt:when="2011-03-25T16:09:09+01:00"
stEvt:softwareAgent="Adobe Illustrator CS5"
stEvt:changed="/"/>
</rdf:Seq>
</xmpMM:History>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<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:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmp:CreatorTool="Adobe Photoshop Elements 9.0 Windows"
xmp:MetadataDate="2011-06-15T17:26:37+02:00"
xmp:ModifyDate="2011-06-15T17:26:37+02:00"
xmp:CreateDate="2011-06-15T17:26:37+02:00"
xmpMM:InstanceID="xmp.iid:BB76D1936397E011BD8F809D442CE889"
xmpMM:DocumentID="xmp.did:BA76D1936397E011BD8F809D442CE889"
xmpMM:OriginalDocumentID="xmp.did:BA76D1936397E011BD8F809D442CE889"
dc:format="image/epsf"
tiff:Orientation="1"
tiff:XResolution="1181102/10000"
tiff:YResolution="1181102/10000"
tiff:ResolutionUnit="3"
tiff:NativeDigest="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"
exif:PixelXDimension="1890"
exif:PixelYDimension="1417"
exif:ColorSpace="1"
exif:NativeDigest="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"
photoshop:ColorMode="3"
photoshop:ICCProfile="sRGB IEC61966-2.1">
<xmpMM:History>
<rdf:Seq>
<rdf:li
stEvt:action="created"
stEvt:instanceID="xmp.iid:BA76D1936397E011BD8F809D442CE889"
stEvt:when="2011-06-15T17:26:37+02:00"
stEvt:softwareAgent="Adobe Photoshop Elements 9.0 Windows"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:BB76D1936397E011BD8F809D442CE889"
stEvt:when="2011-06-15T17:26:37+02:00"
stEvt:softwareAgent="Adobe Photoshop Elements 9.0 Windows"
stEvt:changed="/"/>
</rdf:Seq>
</xmpMM:History>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

@ -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

Loading…
Cancel
Save