Afficher un contenu en pdf

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Afficher un contenu en pdf

    Bonjour,

    En Joomla 2.5, il existait une manière très simple d'exporter un contenu dans un pdf :
    Create a PDF view for your component

    Then for any component you wish to create a pdf view for you should
    • copy the view's view.html.php file and rename it to view.pdf.php.

    E.g. to make a PDF view of an article, copy:
    components/com_content/views/article/view.html.php
    and rename it to:
    components/com_content/views/article/view.pdf.php
    Then to view a pdf article you need to append &format=pdf to your articles URL.
    E.g.
    http://localhost/index.php?option=co...d=4&format=pdf



    En Joomla 3.5, l'option de ligne de commande "format=pdf" bogue.

    Avez-vous des informations ?
    Yann

  • #2
    Re : Afficher un contenu en pdf

    Salut
    As-tu regardé phoca pdf http://www.phoca.cz/phocapdf
    Formation Joomla agence internet https://www.stylitek.com
    Melijoy création de site Joomla compétitif https://www.melijoy.fr
    agence web spécialiste référencement http://www.agence-web-stylitek.fr

    Commentaire


    • #3
      Re : Afficher un contenu en pdf

      Bonjour,

      La procédure que vous décrivez n'est pas aussi simple que ça....https://docs.joomla.org/J2.5:Creating_PDF_views

      Il faut copier la librairie domPDF, copier des répertoires html en pdf ,.... et, après, vous avez une chance que cela marche, s'il n'y a pas trop d'incompatibilités ou de fichiers déplacés.

      Par exemple, dans le fichier pdf.php que vous avez créé le require doit être modifié pour devenir
      Code:
      require_once(JPATH_LIBRARIES .'/joomla/document/html.php');
      Mais, je ne suis pas allé plus loin pour l'instant.

      Pascal
      If anything can go wrong, it will...
      If I can help, I will ..https://conseilgouz.com

      Commentaire


      • #4
        Re : Afficher un contenu en pdf

        Envoyé par toffffe Voir le message
        Salut
        As-tu regardé phoca pdf http://www.phoca.cz/phocapdf
        Chez moi, phocapdf est méga buggé (J3.5.1, composant + plugins system et content installés et publiés)...
        probable incompatibilité avec ma version php (3.5)
        Me renvoie des "fatal error" en série, quelle que soit le paramétrage...
        Jamais pu sortir le moindre pdf...
        Je crois bien que cette extension n'a pas été mise à jour depuis 2015 (et même courant 2014 pour les extensions...).
        Je préfère éclairer que briller.” - “J'ai peut-être l'air froid, mais je suis pas givré.
        Ne m'envoyez pas de message privé pour résoudre vos problèmes sans y avoir été invité.
        Dolmenhir : tailleur de site web depuis 1997. Spécialiste Joomla depuis 2005. https://www.dolmenhir.fr

        Commentaire


        • #5
          Re : Afficher un contenu en pdf

          Encore moi,

          Je viens de faire un petit essai, avec quelques adaptations, la procédure décrite a fini par fonctionner:

          La librairie a évolué, on est désormais en version 0.7.0 (https://github.com/dompdf/dompdf/releases/tag/v0.7.0), la procédure iniDomPdf est donc à modifier dans le fichier pdf.php et cela devient :

          Code:
          <?php
          /**
           * @package		Joomla.Framework
           * @subpackage	Document
           * @copyright	Copyright (C) 2005 - 2012 Rob Clayburn
           * @license		GNU/GPL, see LICENSE.php
           * Joomla! is free software. This version may have been modified pursuant
           * to the GNU General Public License, and as distributed it includes or
           * is derivative of works licensed under the GNU General Public License or
           * other free or open source software licenses.
           * See COPYRIGHT.php for copyright notices and details.
           */
           
          // Check to ensure this file is within the rest of the framework
          defined('JPATH_BASE') or die();
           
          require_once(JPATH_LIBRARIES .'/joomla/document/html.php');
          // reference the Dompdf namespace
          use Dompdf\Dompdf; 
          /**
           * DocumentPDF class, provides an easy interface to parse and display a pdf document
           *
           * @package		Joomla.Framework
           * @subpackage	Document
           * @since		1.5
           */
          class JDocumentpdf extends JDocumentHTML
          {
          	private $engine	= null;
           
          	private $name = 'joomla';
           
          	/**
          	 * Class constructore
          	 * @param	array	$options Associative array of options
          	 */
           
          	function __construct($options = array())
          	{
          		parent::__construct($options);
           
          		//set mime type
          		$this->_mime = 'application/pdf';
           
          		//set document type
          		$this->_type = 'pdf';
           
          		if (!$this->iniDomPdf())
          		{
          			JError::raiseError(500, 'No PDF lib found');
          		}
          	}
           
          	protected function iniDomPdf()
          	{
          		$file = JPATH_LIBRARIES .'/dompdf/autoload.inc.php';
          		if (!JFile::exists($file))
          		{
          			return false;
          		}
          		if (!defined('DOMPDF_ENABLE_REMOTE'))
          		{
          			define('DOMPDF_ENABLE_REMOTE', true);
          		}
          		//set the font cache directory to Joomla's tmp directory
          		$config = JFactory::getConfig();
          		if (!defined('DOMPDF_FONT_CACHE'))
          		{
          			define('DOMPDF_FONT_CACHE', $config->get('tmp_path'));
          		}
          		require_once($file);
          
          		
          		// Default settings are a portrait layout with an A4 configuration using millimeters as units
          		$this->engine =new Dompdf();
          		return true;
          	}
           
          	/**
          	 * Sets the document name
          	 * @param   string   $name	Document name
          	 * @return  void
          	 */
           
          	public function setName($name = 'joomla')
          	{
          		$this->name = $name;
          	}
           
          	/**
          	 * Returns the document name
          	 * @return	string
          	 */
           
          	public function getName()
          	{
          		return $this->name;
          	}
           
          	/**
          	 * Render the document.
          	 * @access public
          	 * @param boolean 	$cache		If true, cache the output
          	 * @param array		$params		Associative array of attributes
          	 * @return	string
          	 */
           
          	function render($cache = false, $params = array())
          	{
          		$pdf = $this->engine;
          		$data = parent::render();
           		$this->fullPaths($data);
          		//echo $data;exit;
          		$pdf->load_html($data);
          		$pdf->render();
          		$pdf->stream($this->getName() . '.pdf');
          		return '';
          	}
           
          	/**
          	 * (non-PHPdoc)
          	 * @see JDocumentHTML::getBuffer()
          	 */
           
          	public function getBuffer($type = null, $name = null, $attribs = array())
          	{
          		if ($type == 'head' || $type == 'component')
          		{
          			return parent::getBuffer($type, $name, $attribs);
          		}
          		else
          		{
          			return '';
          		}
          	}
           
           
          	/**
          	 * parse relative images a hrefs and style sheets to full paths
          	 * @param	string	&$data
          	 */
           
          	private function fullPaths(&$data)
          	{
          		$data = str_replace('xmlns=', 'ns=', $data);
          		libxml_use_internal_errors(true);
          		try
          		{
          			$ok = new SimpleXMLElement($data);
          			if ($ok)
          			{
          				$uri = JUri::getInstance();
          				$base = $uri->getScheme() . '://' . $uri->getHost();
          				$imgs = $ok->xpath('//img');
          				foreach ($imgs as &$img)
          				{
          					if (!strstr($img['src'], $base))
          					{
          						$img['src'] = $base . $img['src'];
          					}
          				}
          				//links
          				$as = $ok->xpath('//a');
          				foreach ($as as &$a)
          				{
          					if (!strstr($a['href'], $base))
          					{
          						$a['href'] = $base . $a['href'];
          					}
          				}
           
          				// css files.
          				$links = $ok->xpath('//link');
          				foreach ($links as &$link)
          				{
          					if ($link['rel'] == 'stylesheet' && !strstr($link['href'], $base))
          					{
          						$link['href'] = $base . $link['href'];
          					}
          				}
          				$data = $ok->asXML();
          			}
          		} catch (Exception $err)
          		{
          			//oho malformed html - if we are debugging the site then show the errors
          			// otherwise continue, but it may mean that images/css/links are incorrect
          			$errors = libxml_get_errors();
          			if (JDEBUG)
          			{
          				echo "<pre>";print_r($errors);echo "</pre>";
          				exit;
          			} 
          		}
           
          	}
           
          }
          Remarque: dans ce nouveau DomPdf, le fichier dompdf_config.inc.php a été supprimé, tous les paramètres sont à positionner à l'exécution. Je n'ai pas essayé. En gardant les paramètres par défaut, cela fonctionne pour le peu que j'ai testé.

          Pascal
          If anything can go wrong, it will...
          If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Re : Afficher un contenu en pdf

            Pas si compliqué que cela.
            Cela fonctionne très bien chez moi en Joomla 2.5.

            Par contre, je n'arrive pas à migrer en Joomla 3.5.

            J'ai deux fichiers "view" : view.php et view.pdf.php (ces fichiers peuvent être identiques).
            Si l'on ajoute l'option "&format=pdf" sur l'url, c'est le view.pdf.php qui est activé.
            En Joomla 3.5, le view.pdf.php ne s'exécute pas, que la classe soit JViewLegacy ou JView

            La librairie domPDF n'aurait pas de version compatible J3.5 ?
            Yann

            Commentaire


            • #7
              Re : Afficher un contenu en pdf

              Réponse avant la question, on s'améliore

              Pascal
              If anything can go wrong, it will...
              If I can help, I will ..https://conseilgouz.com

              Commentaire


              • #8
                Re : Afficher un contenu en pdf

                Attention, il y a
                Code:
                // reference the Dompdf namespace
                use Dompdf\Dompdf;
                en début de fichier.

                Pascal
                If anything can go wrong, it will...
                If I can help, I will ..https://conseilgouz.com

                Commentaire


                • #9
                  Re : Afficher un contenu en pdf

                  l'extension que j'utilise pour ce besoin.....
                  http://extensions.joomla.org/extension/ari-docs-viewer
                  Un site pour comparer des solutions : https://comparatifs-informaticien51.joomla.com
                  un site personnel, sur Joomla, linux, windows et Powershell : https://informaticien51.joomla.com/

                  Commentaire


                  • #10
                    Re : Afficher un contenu en pdf

                    Bonjour,

                    Sauf erreur de ma part, le problème de Yann n'est pas d'afficher un pdf, mais, de transformer un article en pdf.

                    Pascal
                    If anything can go wrong, it will...
                    If I can help, I will ..https://conseilgouz.com

                    Commentaire


                    • #11
                      Re : Afficher un contenu en pdf

                      Effectivement, c'est bien cela mon besoin.
                      Voilà le site J2.5 que je veux migrer en J3.x
                      http://www.eurojumelages.eu/index.ph...ours-intensifs
                      Yann

                      Commentaire


                      • #12
                        Re : Afficher un contenu en pdf

                        Bonjour Yann,

                        Avez-vous réussi ?

                        Pascal
                        If anything can go wrong, it will...
                        If I can help, I will ..https://conseilgouz.com

                        Commentaire


                        • #13
                          Re : Afficher un contenu en pdf

                          Bonjour Pascal,

                          Malheureusement je bloque encore.

                          J'ai supprimé mon ancienne librairie "dompdf", et ajouté la nouvelle version.
                          J'ai ajouté ton fichier php.php.

                          Et toujours l'écran blanc. Je ne vois pas où ça bloque.

                          Yann
                          Yann

                          Commentaire


                          • #14
                            Re : Afficher un contenu en pdf

                            Bonjour,

                            Je viens de faire un essai à partir d'une version "neuve" Joomla 3.5.1 avec succès , en respectant la procédure décrite et en remplaçant uniquement le pdf.php par le mien en complet.

                            Donc, en résumé:
                            - copie du répertoire dompdf dans libraries (attention: en dézippant, il crée un 1er répertoire dompdf, notre répertoire est son sous-répertoire)
                            - création d'un répertoire /libraries/joomla/document/pdf
                            - création du fichier pdf.php à partir de celui que j'ai donné plus haut, sans ajouter ou retirer quoi que ce soit (j'avais ajouté un ?> en fin et cela m'a mis le bazar...)
                            - copie du répertoire libraries/joomla/document/html/renderer en libraries/joomla/document/pdf/renderer
                            - copie de components/com_content/views/article/view.html.php en components/com_content/views/article/view.pdf.php
                            - création d'un article avec un lien terminé par le fameux &format=pdf

                            et voilà,

                            Pascal
                            If anything can go wrong, it will...
                            If I can help, I will ..https://conseilgouz.com

                            Commentaire


                            • #15
                              Re : Afficher un contenu en pdf

                              Ca y est, cela fonctionne chez moi.
                              Pour cela, j'ai dû remplacer une ligne du pdf.php
                              Dans la fonction function iniDomPdf()
                              if (!file_exists($file))
                              et non pas
                              if (!JFile::exists($file))

                              Merci Pascal.
                              Yann

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X