Index: scribus/util.cpp
===================================================================
--- scribus/util.cpp	(révision 18833)
+++ scribus/util.cpp	(copie de travail)
@@ -699,25 +699,29 @@
 }
 
 //CB Moved from scribus.cpp
-void parsePagesString(QString pages, std::vector<int>* pageNs, int sourcePageCount)
+const QString parsePagesString(QString pages, std::vector<int>* pageNs, int sourcePageCount)
 {
-	QString tmp(pages);
 	QString token;
+    const QString msgMax(QObject::tr("Page number is too high : there is only %1 page(s) in the document").arg(sourcePageCount));
+    const QString msgFormat(QObject::tr("Use the '...' button or select a set of page numbers.<br>For example : '1,3,5-8' will select pages 1, 3 and 5 to 8."));
+
 	int from, to, pageNr;
 	do
 	{
-		if (tmp.indexOf(",") == -1)
+		if (pages.indexOf(",") == -1)
 		{
-			token = tmp;
-			tmp = "";
+			token = pages;
+			pages = "";
 		}
 		else
 		{
-			token = tmp.left(tmp.indexOf(","));
-			tmp = tmp.right(tmp.length() - tmp.indexOf(",") - 1);
+			token = pages.left(pages.indexOf(","));
+			pages = pages.right(pages.length() - pages.indexOf(",") - 1);
 		}
 
 		token = token.trimmed();
+		pages = pages.trimmed();
+
 		if (token == "*") // Import all source doc pages
 		{
 			for (int i = 1; i <= sourcePageCount; ++i)
@@ -730,9 +734,9 @@
 			if ((from != 0) && (to != 0))
 			{
 				if (from > sourcePageCount)
-					from = sourcePageCount;
+					return msgMax;
 				if (to > sourcePageCount)
-					to = sourcePageCount;
+					return msgMax;
 				if (from == to)
 					pageNs->push_back(to);
 				else if (from < to)
@@ -746,14 +750,21 @@
 						pageNs->push_back(i);
 				}
 			}
+			else
+				return msgFormat;
 		}
 		else // import single source doc page
 		{
 			pageNr = token.toInt();
 			if ((pageNr > 0) && (pageNr <= sourcePageCount))
 				pageNs->push_back(pageNr);
+			else if (!pageNr)
+				return msgFormat;
+			else
+				return msgMax;
 		}
-	} while (!tmp.isEmpty());
+	} while (!pages.isEmpty());
+    return pageNs->empty() ? msgFormat : "";
 }
 
 void tDebug(QString message)
Index: scribus/ui/pdfopts.cpp
===================================================================
--- scribus/ui/pdfopts.cpp	(révision 18833)
+++ scribus/ui/pdfopts.cpp	(copie de travail)
@@ -151,6 +151,21 @@
 
 void PDFExportDialog::DoExport()
 {
+	if(Options->AllPages->isChecked() == 0)
+	{   // checking validity of pagerangestring
+		const QString pageRangeStringtoCheck=Options->PageNr->text();
+		std::vector<int> pageNs;
+		const QString ParseError = parsePagesString(pageRangeStringtoCheck, &pageNs, m_doc->Pages->count());
+		if (!ParseError.isEmpty()) //showing warning box if invalid pagerangestring
+		{
+			QMessageBox::warning(this,
+								 CommonStrings::trWarning,
+								 ParseError,
+								 CommonStrings::tr_OK);
+			return;
+		}
+	}
+
 	bool createPath = false;
 	QString fn = QDir::fromNativeSeparators(fileNameLineEdit->text());
 	// Checking if the path exists
Index: scribus/util.h
===================================================================
--- scribus/util.h	(révision 18833)
+++ scribus/util.h	(copie de travail)
@@ -157,7 +157,7 @@
 const QString SCRIBUS_API getStringFromSequence(NumFormat type, uint position, QString asterix="*");
 const QString SCRIBUS_API arabicToRoman(uint i);
 const QString SCRIBUS_API numberToLetterSequence(uint i);
-void SCRIBUS_API parsePagesString(QString pages, std::vector<int>* pageNs, int sourcePageCount);
+const QString SCRIBUS_API parsePagesString(QString pages, std::vector<int>* pageNs, int sourcePageCount);
 
 /*! \brief performance measurements.
 It prints given message with it current timestamp.
