diff --git poppler/CairoOutputDev.cc poppler/CairoOutputDev.cc
index a50e189..397a94a 100644
--- poppler/CairoOutputDev.cc
+++ poppler/CairoOutputDev.cc
@@ -156,6 +156,7 @@ CairoOutputDev::CairoOutputDev() {
   cairo_shape = NULL;
   knockoutCount = 0;
 
+  enable_text_drawing = gTrue;
   text = NULL;
   actualText = NULL;
 
@@ -1176,8 +1177,16 @@ void CairoOutputDev::fillToStrokePathClip(GfxState *state) {
   strokePathClip = NULL;
 }
 
+void CairoOutputDev::setTextDrawingEnabled(GBool enable)
+{
+  enable_text_drawing = enable;
+}
+
 void CairoOutputDev::beginString(GfxState *state, GooString *s)
 {
+  if (!enable_text_drawing)
+    return;
+
   int len = s->getLength();
 
   if (needFontUpdate)
@@ -1202,6 +1211,9 @@ void CairoOutputDev::drawChar(GfxState *state, double x, double y,
 			      double originX, double originY,
 			      CharCode code, int nBytes, Unicode *u, int uLen)
 {
+  if (!enable_text_drawing)
+    return;
+
   if (currentFont) {
     glyphs[glyphCount].index = currentFont->getGlyph (code, u, uLen);
     glyphs[glyphCount].x = x - originX;
@@ -1238,6 +1250,9 @@ void CairoOutputDev::endString(GfxState *state)
 {
   int render;
 
+  if (!enable_text_drawing)
+    return;
+
   if (!currentFont)
     return;
 
diff --git poppler/CairoOutputDev.h poppler/CairoOutputDev.h
index bbad744..f9aac88 100644
--- poppler/CairoOutputDev.h
+++ poppler/CairoOutputDev.h
@@ -178,6 +178,7 @@ public:
   virtual void eoClip(GfxState *state);
 
   //----- text drawing
+  void setTextDrawingEnabled(GBool enable);
   void beginString(GfxState *state, GooString *s);
   void endString(GfxState *state);
   void drawChar(GfxState *state, double x, double y,
@@ -327,6 +328,7 @@ protected:
 
   GBool prescaleImages;
 
+  GBool enable_text_drawing;
   TextPage *text;		// text for the current page
   ActualText *actualText;
 
diff --git utils/pdftocairo.cc utils/pdftocairo.cc
index 192d295..1e04254 100644
--- utils/pdftocairo.cc
+++ utils/pdftocairo.cc
@@ -112,6 +112,7 @@ static GBool noShrink = gFalse;
 static GBool noCenter = gFalse;
 static GBool duplex = gFalse;
 static char tiffCompressionStr[16] = "";
+static GBool noText = gFalse;
 
 static char ownerPassword[33] = "";
 static char userPassword[33] = "";
@@ -220,6 +221,9 @@ static const ArgDesc argDesc[] = {
   {"-duplex",     argFlag,     &duplex,         0,
    "enable duplex printing"},
 
+  {"-notext",     argFlag,     &noText,         0,
+   "don't draw the text"},
+
   {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
    "owner password (for encrypted files)"},
   {"-upw",    argString,   userPassword,   sizeof(userPassword),
@@ -976,6 +980,8 @@ int main(int argc, char *argv[]) {
     firstPage++;
 
   cairoOut = new CairoOutputDev();
+  if (noText)
+      cairoOut->setTextDrawingEnabled(gFalse);
   cairoOut->startDoc(doc);
   if (sz != 0)
     crop_w = crop_h = sz;
