How to save output from ggforce::facet_grid_paginate in only one pdf?

You don't even need to use ggsave you can put all these plots into one pdf by:

pdf("~/diamonds_all.pdf")
for(i in 1:6){
  print(ggplot(diamonds) +
          geom_point(aes(carat, price), alpha = 0.1) +
          facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))

}
dev.off()

I'm facing a similar question and here's my solution, basically an extension of Mike H. answer.

Typically you want to plot all the pages and you don't know beforehand how many pages you have, also, you may want to print on standard A4 size paper. So:

library(ggforce) 

gg <- ggplot(diamonds) + 
    geom_point(aes(carat, price)) +
    facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = 1)
n <- n_pages(gg)

pdf('diamonds.pdf', paper= 'A4', w= 210/25.4, 297/25.4)
for(i in 1:n){
    print(gg + facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))
}
dev.off()

Code should be self-explanatory. The ugly thing is that you have to repeat facet_wrap_paginate(...) twice or wrap it into a dedicated function. I'd like to hear of a better solution...