Installation DEB dans une VM Debian 13.4 : génération de PDF impossible (erreur) avec modèle Canoprof

Bonjour,
Compte tenu de l’arrêt programmée et définitif de Canoprof, je me suis monté un serveur SCENARIsuite-starter chez moi.
J’ai installé le .deb dans une VM Debian 13.4 (hôte Proxmox VE 9.1.9).
J’ai suivi la documentation pour l’installation (avec un peu d’aide de Claude).
J’ai un serveur fonctionnel, avec mon nom de domaine. J’ai mis les modèles documentaires suivants :


Et les skinpack :

J’ai créé un utilisateur non-admin avec lequel j’ai importé un de mes dépôts canoprof, le plus petit.
J’ai testé la génération web, pas de soucis.
Mais pour la génération PDF, c’est autre chose… ça ne veut pas…
J’ai une erreur :


Rapport complet :

Une erreur est survenue lors de la génération.

--- Admin details ---
<?xml version="1.0" encoding="UTF-8"?><trace>
	<start t="01/05/26 16:29:48"/>
	<l t="Error" d="01/05/26 16:29:48">
		<message type="Error" ts="1777645788628" appCtx="chain" user="Le-Prof" thread="ForkJoinPool-1-worker-3" desc="Error: An error occured on the CDP write stream">
			<details>Error: An error occured on the CDP write stream
    at Socket.&lt;anonymous&gt; (/opt/postscriptum-1.0/node_modules/@postscriptum.app/cli/dist/cdp.js:216:69)
    at Socket.emit (node:events:519:28)
    at emitErrorNT (node:internal/streams/destroy:170:8)
    at emitErrorCloseNT (node:internal/streams/destroy:129:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
  [cause]: Error: read ECONNRESET
      at Pipe.onStreamRead (node:internal/stream_base_commons:216:20) {
    errno: -104,
    code: 'ECONNRESET',
    syscall: 'read'
  }
</details>
		</message>
	</l>
	<l t="Warning" d="01/05/26 16:29:48">
		<message type="Warning" ts="1777645788628" appCtx="chain" user="Le-Prof" thread="ForkJoinPool-1-worker-3" desc="}"/>
	</l>
	<l t="Error" d="01/05/26 16:29:48">
		<message type="Error" ts="1777645788628" appCtx="chain" user="Le-Prof" thread="ForkJoinPool-1-worker-3" desc="Error: The browser process has been interrupted by the SIGTRAP signal">
			<details>Error: The browser process has been interrupted by the SIGTRAP signal
    at ChildProcess.&lt;anonymous&gt; (/opt/postscriptum-1.0/node_modules/@postscriptum.app/cli/dist/chromium.js:81:30)
    at ChildProcess.emit (node:events:519:28)
    at maybeClose (node:internal/child_process:1101:16)
    at ChildProcess._handle.onexit (node:internal/child_process:304:5)
</details>
		</message>
	</l>
	<l t="FatalError" d="01/05/26 16:29:48">
		<message type="FatalError" ts="1777645788628" appCtx="chain" user="Le-Prof" thread="ForkJoinPool-1-worker-3" desc="Generation failed.">
			<message type="Exception" ts="1777645788628" appCtx="chain" user="Le-Prof" thread="ForkJoinPool-1-worker-3" desc="Postscriptum could not produce the PDF.">
				<details>/var/lib/scenarisuite-starter6.4/working/prl-chain/resAsFile/canoprof.gen.print~fr-FR~2.2.0/print/ui.doss/build.xml:250: Postscriptum could not produce the PDF.
	at org.apache.tools.ant.taskdefs.Exit.execute(Exit.java:162)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
	at org.apache.tools.ant.Task.perform(Task.java:350)
	at org.apache.tools.ant.Target.execute(Target.java:449)
	at org.apache.tools.ant.Target.performTasks(Target.java:470)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1374)
	at com.scenari.m.ge.generator.web.WebGenerator.xGenerate(WebGenerator.java:357)
	at eu.scenari.gen.GenStatic.generate(GenStatic.java:262)
	at eu.scenari.wsp.module.gen.ThreadGen.call(ThreadGen.java:181)
	at eu.scenari.wsp.module.gen.ThreadGen.run(ThreadGen.java:168)
	at eu.scenari.core.universe.Universe$2.run(Universe.java:472)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
</details>
			</message>
		</message>
	</l>
	<end t="01/05/26 16:29:48"/>
</trace>

--- Context ---
reg: {"envKeys":["itemType","securityCtx"],"parent":{"envKeys":["wsp","securityCtx","uiRoot","place","infoBroker","wedSearchCoord","histoEditMgr"],"parent":{"envKeys":["resolver","universe","securityCtx"],"parent":{"envKeys":["resolver","noAuthentication","remoteAuthentications","embeddedAuthentication","universe","securityCtx"]}}}}
uiContext: undefined
wsp: undefined
shortDesc: {"srcUri":"/Acoustique-Ondes-Signaux/D-01-Les_Ondes_Sonores/ESSAI.activite","srcSt":1,"srcDt":1777645784498,"srcRi":511,"srcRoles":["gsCreateWsp","main:manager","depotRead","publicWsp"],"srcId":"id:0E1s83AdBcZ9kPYgwsgNLD","srcStamp":"ihQZPygnFcZgl4jYOP6Wh2dmDl5FZ0FKFD7VcosvbBo=","srcUser":"Le-Prof","itTi":"Activité n°3 (Exp.) : Mesure de la longueur d’onde - [Chap. Les ondes sonores]","itSt":1,"itSgn":"@cp_textActivity#Xml#Map","itModel":"cp_textActivity"}
pubNode: {"ch":[{},{},{}],"showRefreshBtn":true}
genInfo: {"codeGenStack":"print","title":"Génération PDF","status":"failed","lastGen":1777645788623,"uriPub":"/001s83AdBcZ9kPYgwsgNLD/5S1MN6/PQVT8K/46TFF1/4DK7LT/R4/print/","uriTraces":"/001s83AdBcZ9kPYgwsgNLD/5S1MN6/PQVT8K/46TFF1/4DK7LT/R4/print/meta/~Traces.xml","skin":"default","user":"Le-Prof","storedProps":{"lineheight@stored":"100","annexes-comp@stored":"false","include-index@stored":"true","view-prof@stored":"false","view-corr@stored":"false","fontsize@stored":"100","lowres@stored":"false","view-stdt@stored":"true","plan-stdt@stored":"false","coloredLines@stored":"false","annexes-none@stored":"true","annexes-resu@stored":"false","compact@stored":"true"},"skins":[{"code":"blue","title":"Bleu","hasIllus":true},{"code":"default","title":"Canoprof","hasIllus":true},{"code":"educ","title":"Educ","hasIllus":true},{"code":"~smonsarrBoldToTextStrokeBlue","title":"Emojis - Bleu"},{"code":"~smonsarrBoldToTextStrokeCanoprof","title":"Emojis - Canoprof"},{"code":"~smonsarrBoldToTextStrokeEduc","title":"Emojis - Educ"},{"code":"~smonsarrBoldToTextStrokePink","title":"Emojis - Rose"},{"code":"~smonsarrBoldToTextStrokePurple","title":"Emojis - Violet"},{"code":"pink","title":"Rose","hasIllus":true},{"code":"purple","title":"Violet","hasIllus":true}]}
genProps: undefined
customDestPath: undefined
cidInfo: null

--- App context ---
url: https://scenari.ndd.ovh/contenus/~~static/fr-FR//home.xhtml#(wsp'001s83AdBcZ9kPYgwsgNLD'srcRef'id%3A0E1s83AdBcZ9kPYgwsgNLD'),
timestamp: 01/05/2026 16:35:00
userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0

edit : j’ai oublié de dire qu’avec Opale, je n’ai pas de souci pour générer un PDF… le problème est avec Canoprof…

J’ai vraiment besoin de cette exportation PDF.
Quelqu’un pourrait-il m’aider à résoudre ce souci ?

Merci par avance.
Pierrick

Bonsoir,

Je viens faire un retour d’expérience sur l’installation de SCENARIsuite-starter 6.4.5 sur une VM Debian 13 Trixie (Proxmox), concernant la génération PDF avec Canoprof.

Symptôme

La génération PDF échouait systématiquement avec le message suivant :

Error: An error occured on the CDP write stream
Error: The browser process has been interrupted by the SIGTRAP signal
Postscriptum could not produce the PDF.

Cela se produisait avec le modèle Canoprof, quel que soit le contenu du document (même un document vide).

Environnement

  • SCENARIsuite-starter 6.4.5
  • Debian 13 Trixie sur VM Proxmox
  • Postscriptum 1.0 installé (paquet postscriptum-1.0-app)
  • Jetty 9 / OpenJDK 21

Diagnostic

Après investigation approfondie, le SIGTRAP venait du binaire Chromium bundlé avec Postscriptum 1.0, qui échouait à initialiser son allocateur mémoire interne (partition_alloc) via le syscall PR_SET_VMA_ANON_NAME. Ce syscall requiert CONFIG_ANON_VMA_NAME=y dans le kernel, option absente du kernel Proxmox/Debian 13.

Mais ce n’était pas la vraie cause racine.

Cause réelle

Le build.xml de la chaîne d’impression Canoprof 2.2.0 référence explicitement Postscriptum 0.13 (postscriptum-0-13), pas Postscriptum 1.0. Il cherche le binaire dans cet ordre : /opt/postscriptum-0.13/, /opt/postscriptum/, /usr/local/bin/postscriptum, /usr/bin/postscriptum.

Or la documentation d’installation ne mentionne pas clairement la coexistence nécessaire des deux versions selon le modèle documentaire :

  • Canoprof → nécessite postscriptum-0.13-app
  • Opale → utilise postscriptum-1.0-app

Solution

apt install postscriptum-0.13-app

Après installation, la génération PDF fonctionne immédiatement pour Canoprof, sans aucune autre modification. Opale continuait de son côté à utiliser Postscriptum 1.0 via son propre build.xml.

Suggestion

Il serait utile que la documentation d’installation précise explicitement quelle version de Postscriptum est requise selon le modèle documentaire utilisé, en particulier pour les installations sur Linux récent (Debian 12/13).

@xah @sam Ne sachant pas qui contacter, je vous cite ici. Pourriez-vous faire remonter ceci pour une mise à jour de la documentation d’installation (celle via ce lien)

J’espère que ce retour pourra aider d’autres utilisateurs qui auto-hébergent SCENARIsuite sur Proxmox ou Debian 13.

Cordialement
Pierrick

1 « J'aime »

Hello et merci pour ce feedback complet :slight_smile:

1 « J'aime »