2
1

Est-il possible de créer un pdf affichant aléatoirement une image, choisie parmi deux ?

En effet, j'aimerais que la couverture de mon pdf affiche aléatoirement une image :

  • représentant la version idéale de l'achèvement du projet qui y est décrit,
  • ou représentant la version réelle du merdier dans lequel on se lance.

Le format pdf permet-il cela ?

Posée 06 Sep '18, 13:00

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 06 Sep '18, 13:03

La primitive (de pdftex) \pdfuniformdeviate N génère un nombre aléatoire entre 0 (inclus) et N-1...

(06 Sep '18, 15:37) touhami touhami's gravatar image

J'ai l'impression que c'est au moment de la compilation que le choix est fait.

Je me suis mal exprimé : ce qui m'amuserait, c'est que ce soit au moment de l'affichage. De telle sorte que, quand on ré-ouvre le document, on le trouve changé.

(06 Sep '18, 23:36) Pathe ♦♦ Pathe's gravatar image
1

Il existe une extension animate, (en alternant de 2 images lors de la même session). Ce n'est pas exactement la même chose, mais peut être aussi intéressant.

(07 Sep '18, 00:17) joseph-tux joseph-tux's gravatar image
1

Dans ce cas je pense que c'est réalisable en utilisant l'extension acrotex

(07 Sep '18, 14:04) touhami touhami's gravatar image

Solution utilisante animate (Acrobat Reader).

On peut enlever la page 1 afin de placer l'image aléatoire sur la page couvrante. Ici elle sert à éviter d'ouvrir/fermer le fichier PDF. Une fois ouvert, il suffit de feuilleter pour voir l'effet.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{animate}
\usepackage{graphicx}

\ExplSyntaxOn
  \let\PdfAnnot\pbs_pdfannot:nnnn
\ExplSyntaxOff

\begin{document}

Page 1.

\newpage

\begin{animateinline}[label=randImg,nomouse,poster=last]{1}
  \includegraphics{example-image-a}
\newframe
  \includegraphics{example-image-b}
\newframe
  \includegraphics{example-image-c}
\newframe
   % blanc
\end{animateinline}%
\PdfAnnot{1pt}{1pt}{0pt}{
  /Subtype/Screen/F 2 % non interactive annotation
  /AA << % additional actions
    /PO << % on page-open
      /S/JavaScript
      /JS (
        anim.randImg.frameNum = Math.floor(Math.random() * (anim.randImg.numFrames-1));
      )
    >>
    /PC << % on page-close show empty frame
      /S/JavaScript
      /JS (
        anim.randImg.frameNum = anim.randImg.numFrames-1;
      )
    >>
  >>
}

\end{document}
Lien permanent

Publiée 07 Sep '18, 17:01

alexg's gravatar image

alexg
1112
Taux d'acceptation : 0%

Modifiée 07 Sep '18, 17:10

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.