--- poppler-22jan11-level1bug/poppler/PSOutputDev.cc- 2011-01-22 22:34:16.879565060 +0100 +++ poppler-22jan11-level1bug/poppler/PSOutputDev.cc 2011-01-24 00:07:47.672749478 +0100 @@ -2977,7 +2977,7 @@ page->displaySlice(scan, 72, 72, rotateA, useMediaBox, crop, sliceX, sliceY, sliceW, sliceH, printing, catalog, abortCheckCbk, abortCheckCbkData); - rasterize = scan->usesTransparency(); + rasterize = scan->usesTransparency() || scan->hasLevel1PSBug(); delete scan; } else { rasterize = gTrue; --- poppler-22jan11-level1bug/poppler/PreScanOutputDev.cc- 2011-01-22 22:34:16.880565069 +0100 +++ poppler-22jan11-level1bug/poppler/PreScanOutputDev.cc 2011-01-24 00:09:55.582193075 +0100 @@ -36,6 +36,7 @@ //------------------------------------------------------------------------ PreScanOutputDev::PreScanOutputDev() { + level = globalParams->getPSLevel(); clearStats(); } @@ -141,6 +142,10 @@ check(state->getFillColorSpace(), state->getFillColor(), state->getFillOpacity(), state->getBlendMode()); gdi = gFalse; + if ((level == psLevel1 || level == psLevel1Sep) && + state->getFillColorSpace()->getMode() == csPattern) { + level1PSBug = gTrue; + } if (inlineImg) { str->reset(); @@ -281,4 +286,5 @@ gray = gTrue; transparency = gFalse; gdi = gTrue; + level1PSBug = gFalse; } --- poppler-22jan11-level1bug/poppler/PreScanOutputDev.h- 2011-01-22 22:34:16.881565078 +0100 +++ poppler-22jan11-level1bug/poppler/PreScanOutputDev.h 2011-01-23 03:26:23.145070177 +0100 @@ -132,6 +132,10 @@ // clearStats() are all rasterizable by GDI calls in GDIOutputDev. GBool isAllGDI() { return gdi; } + // Returns true if the operations performed since the last call to + // clearStats() processed a feature that PSOutputDev does not implement. + GBool hasLevel1PSBug() { return level1PSBug; } + // Clear the stats used by the above functions. void clearStats(); @@ -144,6 +148,8 @@ GBool gray; GBool transparency; GBool gdi; + PSLevel level; // PostScript level (1, 2, separation) + GBool level1PSBug; // gTrue if it uses a feature not supported in PSOutputDev }; #endif