7

I'd like a way of exporting a grid to PDF that isn't one super long page, moreover I'd like the page breaks to be chosen automatically (so that the grid fits/fills each normal sized page).

Is there some way to do this without having to tweak style-sheets or resort to printing?

Example Code:

Export["~/Downloads/tall_grid.pdf", 
    Grid[Partition[Table[
       Labeled[RandomImage[], ResourceFunction["RandomString"][10]], 
       {i, 200}], UpTo @ 5],
    Spacings -> {2, 2}],
    ImageResolution -> 600
]

Related:

M.R.
  • 31,425
  • 8
  • 90
  • 281

1 Answers1

5

Actually, this is strange that such possibility is not a built-in function.

Let's say, we have a list of 150 strings like this:

tbl = Table[{a, ToString@(a RandomReal[{-2, 2}])}, {a, 1, 150}];

My workaround for pages formation is following:

spp = 64; (*the desired number of strings per page, depending on content size and page size*)

tmp = Table[
  tbl[[spp*i + 1 ;; spp*i + spp]], {i, 0, Length@tbl/spp - 1}];
data = Grid[#, Frame -> All] & /@ 
   Join[tmp, {tbl[[spp*Length@tmp + 1 ;; -1]]}];

cd = CreateDocument[
   ExpressionCell[#, PageBreakBelow -> True] & /@ data];
Export["file.pdf", cd]; NotebookClose[cd, Interactive -> False]

This makes the pdf-file with two full-length pages and one more partially filled..

Rom38
  • 5,129
  • 13
  • 28