fixed "number" of plots using facet_wrap
Try this,
library(ggplot2)
library(plyr)
library(gridExtra)
dat <- data.frame(x=runif(150), y=runif(150), z=letters[1:15])
plotone = function(d) ggplot(d, aes(x, y)) +
geom_point() +
ggtitle(unique(d$z))
p = plyr::dlply(dat, "z", plotone)
g = gridExtra::marrangeGrob(grobs = p, nrow=3, ncol=3)
ggsave("multipage.pdf", g)