We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Module PDFJS

Maxime Segard · on 2/6/19 at 6:29 PM

Bonjour  @Cyrille Arzoumanian ,

 

Votre module fonctionne parfaitement sur Chrome, mais semble avoir un bug dans l'encodage de l'URL et bloque donc sur Firefox.

/jcms/upload%5Cdocs%5Capplication%5Cpdf%5C2018-09%5Cmemo_se_renseigner_sur_les_modes_de_paiement.pdf?1549473606819".

En effet, la fin du chemin vers le dossier "uploads" nous avons des antislashes "\" au lieu de simple "/" brouillant alors le chemin vers le pdf.

Avez-vous déjà eu ce problème ?

Par ailleurs, comptez-vous mettre à jour le module pour une compatibilité avec JCMS 10 ?

Merci par avance pour votre réponse.

Excellente fin de journée à vous.

17 pts
Cyrille Arzoumanian · on 2/7/19 at 8:19 AM

Bonjour  @Maxime Segard 

 

merci pour ton retour. Je n'ai pas testé sous Firefox car sur notre intranet le navigateur officiel est Internet Explorer. Sinon je n'ai jamais rencontré ce problème de chemin.

Vous etes sur Windows ou Linux ? car pour le moment nous sommes sur du Windows Server 2008 R2. 

Vous tester en local ? car je sais qu'en local sans DNS j'avais un souci.

Si jamais le module est comptable v10 car nous avons migré en qualité chez nous et il fonctionne correctement.

#1

Bonjour Cyrille,

Pour la version Jplatform 10SP1, j'ai modifié la jsp types/FileDocument/doFileDocumentFullDisplay.jsp pour qu'elle soit compatible avec la version 10.

  doFileDocumentFullDisplay

Reda Elmekkaoui · on 2/7/19 at 3:02 PM
0 pts
Maxime Segard · on 2/7/19 at 10:19 AM

Bonjour  @Cyrille Arzoumanian  et merci pour votre réactivité.

Nous sommes sous Windows 2012 R2 et testons en préproduction.

Je pense que l'encodage sur la variable urlPdf a un problème.

<div class="preview">
		      <%
	 		 if(Util.notEmpty(tmpDoc.getAssociatedPDF())){%>
					<%
				    	String urlPdf=tmpDoc.getAssociatedPDF().toString();  
				    	urlPdf=jcmsContext.getBaseUrl() + urlPdf.substring(urlPdf.indexOf("upload"),urlPdf.length());			    	
				    %>
		     		<iframe src ="plugins/PdfJsPlugin/jsp/ViewerJS/web/viewer.jsp?file=<%= urlPdf %>?<%=System.currentTimeMillis() %>=visionneuse" allowfullscreen  width='100%' height='1000'></iframe>
		  	     
	   	     <%}else if(tmpDoc.isImage() && Util.notEmpty(tmpDoc.getFile())) {%>
				<img src="<%= tmpDoc.getFilename()%>" class="thumbnail img-responsive"/>
			 <%}else if(tmpDoc.isAudio() || tmpDoc.isVideo()){%>
	    		<jalios:media fileDoc="<%= tmpDoc %>"/>
			 <%}%>
	    </div>

Résultat de requête à l'appel de la variable UrlPdf :

src="plugins/PdfJsPlugin/jsp/ViewerJS/web/viewer.jsp?file=https://test-rways.laredoute.com/jcms/upload\docs\application\pdf\2019-02\devis_facing.pdf?1549531020496=visionneuse"

 

Nous  regardons ça en interne et n'hésiterons pas à vous faire part de nos solutions.

Bien à vous,

Maxime

1 pt
Cyrille Arzoumanian · on 2/7/19 at 12:47 PM

etes vous bien en UTF-8 au niveau du server ?

 

dans le context.xml bien utiliser 

<Context useHttpOnly="true"> et non <!--Context useHttpOnly="true" allowLinking="true"-->

 

dans le server.xml

si vous etes sur le port 8080

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="443"
maxHttpHeaderSize="15360"/>

 

si vous passer par modjk

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" URIEncoding="UTF-8" packetSize="15360" />

Belle journée

#1

Bonjour,

La solution a été trouvé.

J'ai fait un simple replace en java pour obtenir le chemin souhaité.

Si d'autres personnes ont besoin du code, n'hésitez pas.

Merci pour votre réactivité  @Cyrille Arzoumanian

Maxime Segard · on 2/11/19 at 3:47 PM
#2

Merci je n'ai jamais rencontré le soucis mais je vais faire évoluer le code 

Cyrille Arzoumanian · on 2/11/19 at 3:49 PM
0 pts
Maxime Segard · on 2/11/19 at 3:50 PM

Alors pour info j'ai modifié le code de cette manière :

 

<%@page import="com.jalios.io.IOUtil" %>
<%@ include file='/jcore/doInitPage.jsp' %>

   
    <%     
    if (Util.toBoolean(request.getAttribute("fileDocumentPreview"),true)){ 
        Publication tmpPub = (Publication)request.getAttribute(PortalManager.PORTAL_PUBLICATION);
		  if (tmpPub == null || !(tmpPub instanceof FileDocument) || !Util.toBoolean(channel.getProperty("jcmsplugin.pdfjs.enabled"), false)){
		    return; 
		  }
		  FileDocument tmpDoc = (FileDocument)tmpPub;  
		%>
		
		
	    <div class="preview">
		      <%
	 		 if(Util.notEmpty(tmpDoc.getAssociatedPDF())){%>
					<%
				    	String urlPdf=tmpDoc.getAssociatedPDF().toString();  
				    	urlPdf=jcmsContext.getBaseUrl() + urlPdf.substring(urlPdf.indexOf("upload"),urlPdf.length());
				    %>
					<% 
						String urlPdfstr=urlPdf.replace("\\", "//");
					%>
		     		<iframe src="plugins/PdfJsPlugin/jsp/ViewerJS/web/viewer.jsp?file=<%= urlPdfstr %>?<%=System.currentTimeMillis() %>=visionneuse" allowfullscreen  width='100%' height='1000'></iframe>
		  	     
	   	     <%}else if(tmpDoc.isImage() && Util.notEmpty(tmpDoc.getFile())) {%>
				<img src="<%= tmpDoc.getFilename()%>" class="thumbnail img-responsive"/>
			 <%}else if(tmpDoc.isAudio() || tmpDoc.isVideo()){%>
	    		<jalios:media fileDoc="<%= tmpDoc %>"/>
			 <%}%>
	    </div>
    <%} %>
0 pts
Benoit SALLÉ · on 2/17/20 at 11:27 AM

Bonjour,

Nous mettons en place notre platforme et découvrons les limitations de la visionneuse Jalios concernant les PDF qui sont convertis en SVG plus volumineux que les PDF originaux et limités en poids.

mceclip0 - 2020-02-17 11h06m52s

 

De mon point de vue, les PDF n'ont aujourd'hui plus besoin d'être convertis étant donné le bon fonctionnement de PDF.JS développé par Mozilla.

Maheureusement, je n'ai pas réussi à faire fonctionner le module PDFJS de @Cyrille Arzoumanian. Est-il compatible avec la dernière version de JPlatform (pour ma part j'utilise JPlatform Ready 4 SP5 (10 SP3)) ?

#1

Bonjour @Benoit SALLÉ 

oui c'est compatible avec la 10sp3 pas de soucis nous sommes en cours de migration 10sp1 à 10sp3 et tout fonctionne correctement.

En revanche sans DNS elle ne fonctionne pas vous avez un bloc tout blanc.

Les url en http://localhost:8080/ ca jouera pas mais si vous avez une url dans ce style ca match :

https://www.hopitalrivierachablais.ch/jcms/hrc_34749/fr/acces-a-rennaz-en-voiture-ou-transports-publics

Quand j'aurais le temps je corrigerai la coquille c'est pas grand mais c'est vrai que pour tester en local c'est un peu embetant.

Cyrille Arzoumanian · on 2/17/20 at 11:31 AM
#2

Je n'ai pas de bug, c'est simplement que je ne vois aucune différence entre avant et après installation du module.
je vois toujours la visionneuse Jalios pour des PDF déjà enregistrés et pour les nouveaux également.

De mémoire, la doc indique qu'il faut activer PDFJS dans "exploitation> pdfjs", mais je n'ai pas trouvé cette entrée de menu. C'est probablement ça qu'il manquait.

Benoit SALLÉ · on 2/17/20 at 11:44 AM
0 pts
Benoit SALLÉ · on 2/17/20 at 5:23 PM

J'ai réussi à obtenir quelque chose de satisfaisant :

  • J'ai installé le module PDFJS
  • J'ai configuré le module "Visionneuse de documents" pour désactiver la création de SVGmceclip0 - 2020-02-17 17h18m02s
  • J'ai modifié la valeur de configuration "custom.prop" suivante pour ne plus générer de SVG que pour les fichiers .ai
    • propriété : fileprocessor.repository.JCMSUpload.component.PDF2SVGProcessor.extensions
    • valeur : ai

 

Après un redémarrage, les nouveaux fichiers uploadés passent pas le JodConverter pour être convertis en PDF. L'affichage des documents s'appuie ensuite sur le module PDFJS pour charger la version PDF des documents uploadés sans avoir nécessité de les convertir à nouveau en SVG.

A noter que les anciens fichiers qui avaient été convertis en SVG continuent à être pris en charge par la visionneuse Jalios.

Pour finir, cette config nous permet de contourner l'utilisation de la visionneuse Jalios sans la supprimer pour autant et de respecter ainsi les dépendances d'autres modules comme JLearn qui demandent que la visionneuse soit installée.

1 pt