diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/pdfinput/pdf-input.cpp | 17 | ||||
| -rw-r--r-- | src/inkscape.h | 4 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp index 3ff599ebf..5e0bb16e2 100644 --- a/src/extension/internal/pdfinput/pdf-input.cpp +++ b/src/extension/internal/pdfinput/pdf-input.cpp @@ -62,6 +62,19 @@ #include <gdkmm/general.h> + +namespace { + void sanitize_page_number(int& page_num, const int num_pages){ + if (page_num < 1 || page_num > num_pages){ + std::cerr << "Inkscape::Extension::Internal::PdfInput::open: Bad page number " + << page_num + << ". Import first page instead." + << std::endl; + page_num = 1; + } + } +} + namespace Inkscape { namespace Extension { namespace Internal { @@ -815,6 +828,8 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { sp_repr_get_double(prefs, "cropTo", &crop_setting); Catalog *catalog = pdf_doc->getCatalog(); + int const num_pages = catalog->getNumPages(); + sanitize_page_number(page_num, num_pages); Page *page = catalog->getPage(page_num); if ( crop_setting >= 0.0 ) { // Do page clipping @@ -899,6 +914,8 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { if (document != NULL) { double width, height; + int const num_pages = poppler_document_get_n_pages(document); + sanitize_page_number(page_num, num_pages); PopplerPage* page = poppler_document_get_page(document, page_num - 1); poppler_page_get_size(page, &width, &height); diff --git a/src/inkscape.h b/src/inkscape.h index 91af346cd..840620171 100644 --- a/src/inkscape.h +++ b/src/inkscape.h @@ -200,9 +200,7 @@ public: return _pdf_poppler; } void set_pdf_page(gint page) { - if (page > 0) { - _pdf_page = page; - } + _pdf_page = page; } gint get_pdf_page() { return _pdf_page; |
