Solution pour des formulaires cliquables, imprimables et interoperables

Added by Sylvain M about 2 years ago

Bonjour,

J'ai été confronté dernièrement à un problème d'interopérabilité des formulaires cliquables.
Idéalement, ces formulaires devraient pouvoir
  1. Être ouverts et remplis sur des ordinateurs avec les trois systèmes d'exploitation dominants (Windows / MacOS / Linux)
  2. Être ouverts et remplis sur des tablettes Android ou iOS
  3. Être imprimés sur papier et scannés

En outre, je souhaiterais que mes formulaires soient déjà nominatifs (utilisant une liste d'étudiants).

Je ne parvenais pas à trouver un moyen de concilier ces différentes contraintes : Les cases disparaissaient des formulaires cliquables, les formulaires n'étaient pas remplissables sous Android ou iOS, certaines solutions cassaient la présentation des formulaires. Ce problème semble être lié à un bug de XeTeX ou du package hyperref.

Finalement, j'ai trouvé ce qui pourrait être une solution.

  • Dans le préambule du fichier source je déclare le style suivant pour les cases à cocher:
    \AMCboxDimensions{size=1.7ex,down=.2ex}  % Ajustement de la taille de la boite des réponses
    
  • Après le \begin{document} je déclare un caractère à utiliser (j'ai choisi le dièse) pour les cases cochées selon la syntaxe d'hyperref:
    \LayoutCheckField{checkboxsymbol}{\#}
    
  • Après l'étape de mise à jour des documents, je modifie le fichier DOC-sujet.pdf avec pdftk:
    mv DOC-sujet.pdf DOC-sujet-original.pdf
    pdftk DOC-sujet-original.pdf cat  output DOC-sujet.pdf flatten need_appearances
    

    Notez l'utilisation conjointe de flatten et need_appearances, alors que la manpage de pdftk semble dire que ça n'aurait aucune utilité.
  • Puis je passe à l'étape de calcul des mises en page et de l'impression des copies. J'utilise pdftk pour imprimer les copies car pdftk conserve les cadres autour des réponses contrairement aux autres méthodes (même celle conseillée lors de l'utilisation de pdfform).

Les copies ainsi créées semblent remplir tous les critères énoncés plus haut, à conditions cependant de ne pas se limiter à l'usage d'Acrobat sur iOS et Android.

J'essaierai de poster ici un exemple minimal pour étayer mes propos.

S.M.


Replies (4)

RE: Solution pour des formulaires cliquables, imprimables et interoperables - Added by Alexis Bienvenüe about 2 years ago

Merci pour ce retour ! Les formulaires PDF restent en effet très délicats à mettre en œuvre avec AMC.

\AMCboxDimensions{size=1.7ex,down=.2ex}

Est-ce un choix esthétique ou est-ce que cela a permis de faire fonctionner quelque chose qui ne fonctionnait pas sans changer de taille ?

flatten need_appearances

On doit pouvoir intégrer ceci à AMC en ajoutant "flatten" à AMC-imprime.pl (vers de la ligne 236) :

my @pdftkcommand =
  ( "pdftk", $fn_step, "output", $fn, "flatten", "need_appearances" );

J'utilise pdftk pour imprimer les copies car pdftk conserve les cadres autour des réponses contrairement aux autres méthodes (même celle conseillée lors de l'utilisation de pdfform).

Avez-vous observé des problèmes avec l'utilisation de sejda-console au lieu de pdftk ? Avec quel environnement ?
Il me semble que le problème de pdftk est qu'il fabrique des fichiers qui sont trop gros lorsqu'il y a beaucoup de copies, car il garde dans les PDF découpés les formulaires de toutes les copies pour chaque copie.

RE: Solution pour des formulaires cliquables, imprimables et interoperables - Added by Sylvain M about 2 years ago

Est-ce un choix esthétique ou est-ce que cela a permis de faire fonctionner quelque chose qui ne fonctionnait pas sans changer de taille ?

La taille choisie permet que les cases à cocher du formulaire tiennent tout juste dans la case dessinée autour. C'est un choix esthétique.
L'important à ce stade est de ne surtout pas utiliser shape=square ou shape=circle (de mémoire) car ces options font disparaître la case à cocher du formulaire électronique. L'utilisation de shape=form ou shape=none fait disparaître le cadre noir de la case.

On doit pouvoir intégrer ceci à AMC en ajoutant "flatten" à AMC-imprime.pl (vers de la ligne 236) :

Merci pour cette suggestion, je vais essayer et je donnerai le résultat.

Avez-vous observé des problèmes avec l'utilisation de sejda-console au lieu de pdftk ? Avec quel environnement ?

Dans le cas présent (debian testing, texlive 2021 "vanilla", distribution AMC des paquets debian) sejda-console fait disparaître le cadre noir autour des cases à cocher tandis que pdftk les conserve. Je joins deux copies du même sujet. La différence de taille est quasi-nulle mais le fichier DOC-sujet.pdf a déjà été passé à la moulinette pdftk.

Je suis en train d'essayer de faire un exemple minimal pour poster ici.

copie-0216_pdftk.pdf - copie générée avec pdftk (126.4 kB)

copie-0216_sejda-console.pdf - copie générée avec sejda console (126.5 kB)

RE: Solution pour des formulaires cliquables, imprimables et interoperables - Added by Sylvain M about 2 years ago

Je dois avouer que je viens de tenter longuement de reproduire mon problème et ma solution sans succès: Avec ma configuration actuelle, les documents que je génère avec AMC (option pdfform) sont compatibles avec les tablettes tactiles Android et iOS (toujours avec le lecteur de pdf XODO, jamais avec Acrobat) alors que je n'obtenais pas cela précédemment.

Ma configuration:
  • TeXLive 2021 "vanilla" avec l'intégration dans Debian [[https://www.tug.org/texlive/debian.html]]
  • AMC provenant des dépôts debian testing
  • extraction des copies du sujet avec pdftk (provenant des dépôts debian testing)

L'intérêt de réduire la taille des cases est de masquer complètement le texte "Yes" qui apparaît à droite de celles-ci. Avec la taille de case normale, on aperçoit le bout de la barre oblique gauche du Y à l'intérieur de la case.

(1-4/4)