Hack to make this build against poppler-0.34. Just disables color management in some places.
We should probably find a better solution. dilfridge@gentoo.org


diff -ruN cups-filters-1.0.71.orig/filter/pdftoopvp/OPVPOutputDev.cxx cups-filters-1.0.71/filter/pdftoopvp/OPVPOutputDev.cxx
--- cups-filters-1.0.71.orig/filter/pdftoopvp/OPVPOutputDev.cxx	2015-06-26 17:45:26.000000000 +0200
+++ cups-filters-1.0.71/filter/pdftoopvp/OPVPOutputDev.cxx	2015-07-14 19:02:51.666737621 +0200
@@ -1812,9 +1812,15 @@
   maskSplash->drawImage(&imageSrc, &imgMaskData,
 			splashModeMono8, gFalse, maskWidth, maskHeight, mat);
 #else
+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33
   maskSplash->drawImage(&imageSrc, &imgMaskData,
 			splashModeMono8, gFalse, maskWidth, maskHeight,
                         mat,gFalse);
+#else
+  maskSplash->drawImage(&imageSrc, NULL, &imgMaskData,
+			splashModeMono8, gFalse, maskWidth, maskHeight,
+                        mat,gFalse);
+#endif
 #endif
   delete imgMaskData.imgStr;
   maskStr->close();
diff -ruN cups-filters-1.0.71.orig/filter/pdftoopvp/oprs/OPRS.cxx cups-filters-1.0.71/filter/pdftoopvp/oprs/OPRS.cxx
--- cups-filters-1.0.71.orig/filter/pdftoopvp/oprs/OPRS.cxx	2015-06-26 17:45:26.000000000 +0200
+++ cups-filters-1.0.71/filter/pdftoopvp/oprs/OPRS.cxx	2015-07-14 19:00:20.655740720 +0200
@@ -241,7 +241,11 @@
 #if POPPLER_VERSION_MAJOR <= 0 && (POPPLER_VERSION_MINOR <= 20 || (POPPLER_VERSION_MINOR == 21 && POPPLER_VERSION_MICRO <= 2))
 	return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat);
 #else
+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33
 	return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat,gFalse);
+#else
+	return splash->drawImage(src,NULL,srcData,srcMode,srcAlpha,w,h,mat,gFalse);
+#endif
 #endif
     } else {
 	return opvpSplash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat);
