Basculer un tableau et convertir chaque ligne en feuille PDF

en langage R

Librairies pour gérer la mise en forme de tableau ou de texte

install.packages("grid")
install.packages("gridExtra")
library("openxlsx")
library("grid") ; library(gridExtra)

Ouvrir le tableau et le basculer

data = read.xlsx(file.choose())
data = t(data)

Exécuter l'écriture d'un pdf format A4 en définissant une taille de référence (hauteur)

taille = 30
pdf(file = "multipass.pdf", onefile = TRUE, width=taille/29.7*21,heigh=taille)

Une boucle d'écriture convertissant chaque colonne en une page en reprenant les en-têtes de chaque colonne pour en faire le début de chaque ligne

for (i in c(1:ncol(data))) {
# remplacer certains caractères
  item <- gsub("\\."," ",names(data[,i]))
# Mettre des retours à la lignes régulièrement pour s'adapter à la largeur de la page, pour les titres puis pour les contenus
 item= sapply(lapply(item, strwrap, width=taille*7/3), paste, collapse="\n")
 data_tp <- unname(data[,i])
 data_tp= sapply(lapply(data_tp, strwrap, width=taille*7/2), paste, collapse="\n")
 df.temp <- data.frame("Item"=item,"Résultats"=data_tp) # grid.table
  # thème de mise en forme           
 tt3 <- ttheme_minimal(
    core=list(bg_params = list(fill = blues9[1:4], col=NA),
            fg_params=list(hjust=0, x=0.1,fontface=3)),
    colhead=list(fg_params=list(col="navyblue", fontface=4L)),
    rowhead=list(fg_params=list(hjust=0, x=0,col="orange", fontface=3L)))
 g <- tableGrob(df.temp, theme=tt3)
 # Fixer la largeur du tableau
 g$widths <- unit (c(0.01,0.35, .6),"npc") # 3 colonnes
 grid.newpage()
 grid.draw(g)
}

Fermeture du pdf

dev.off()
getwd()