IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Librairie PDF en C ou C++ pour portage Delphi ou C++ Builder


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut Librairie PDF en C ou C++ pour portage Delphi ou C++ Builder
    Bonjour,

    pour régler mon problème d'impression RichText (enfin HTML) je cherche l'équivalent de la librairie PHPPdf (lire les méthodes disponibles en dessous de la branche). Les méthodes disponibles correspondent à mes besoins : les "inputs" peuvent se faire en HTML (ou proches de HTML).

    Il faudrait qu'elle soit développée en C ou en C++ mais dans ce dernier cas pas sur la base de Qt.

    Merci. Gilles

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    peut-être le portage de PHP à Delphi de FPDF ?

    https://github.com/jepafi/Free-JPDF-Pascal
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    Bonjour Paul,

    Effectivement, je travaille dessus avec Lazarus... en pointillé. Qt me demande pas mal de temps. Le seul positionnement en XY est insupportable notamment pour la gestion des bas de page (je ne parle pas des pieds de page) et pour la pagination; Donc j'ai travaillé sur l'ancienne bibliothèque "libjpfpdf" de Lazarus. La bibliothèque est totalement écrite en Pascal. Je n'ai pas vu pour l'instant de uses "particuliers" (ie spécifique FPC) dont je la suppose portable même si je n'ai pas essayé de la porter en Delphi. Elle semble abandonner. Mais je la trouve sensationnelle... notamment son potentiel et son approche par cellules.

    La méthode de gestion des entêtes et pieds de page se fait par surcharge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    type
      Tpdf = class(TJPFpdf)
      public
        procedure Header; override;
        procedure Footer; override;
      private
      end;
     
    [...]
    procedure Tpdf.header();
    begin
      SetFont(ffTimes, fsBold, 12);
      SetFillColor(cSilver);
      Cell(70, 6, 'Nome g yg uuihu', 'BTLR', 0, 'J', 1);
     
     
      Cell(30, 6, 'Nascimento', 'BTLR', 0, 'C', 1);
      Cell(30, 6, 'Telefone', 'BTLR', 0, 'C', 1);
      Cell(30, 6, 'Celular', 'BTLR', 0, 'C', 1);
      Cell(30, 6, 'Fax', 'BTLR', 1, 'C', 1);
      SetFont(ffTimes, fsNormal, 12);
    end;
     
    procedure Tpdf.footer;
    begin
      SetY(Self.fh - 18);
      SetUTF8(false);
      SetFont(ffTimes, fsNormal, 8);
      Cell(95, 5, 'Imprimé le ' + FormatDateTime(
        'dd mmmm yyy "à" hh:mm:ss', now), '', 0, 'L');
      Cell(95, 5, 'Page' + FormatFloat('000', PageNo) + '/+n+', '', 0, 'R');
    end;
    Nom : MWSnap062.png
Affichages : 429
Taille : 231,3 Ko
    J'en suis grosso-modo à ce stade aussi bien sous Windows, Linux et Mac. Je sais faire des tables, les paginer, y introduire des images (à partir de leur adresse), gérer les entêtes, les pieds de page. Le système de positionnement permet beaucoup de possibilités en utilisant des cellules. Je l'ai amélioré pour l'exploiter plus pleinement en créant quelques méthodes. Le rendu du dessus s'obtient ainsi. La pagination est automatique. le découpage des cellules d'une page à l'autre aussi (ou presque : if cpY >= cpYold...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for iLoc := 1 to 60  do
    begin
        Cell(8,8,'','1',0,'C',0);
        if cpY >= cpYold then inc(iNew) else iNew := 1;
        cpYold := cpY;
        Image(ExtractFilePath(ParamStr(0))+'image1.jpg',11,17+(iNew-1)*8,6,6);
        SetFont(ffHelvetica,fsBold,16);
        Cell(60,8,'Free Jpdf Pascal','1',0,'C',0);
        Cell(60,8,'Free Jpdf Pascal','1',0,'C',0);
        Ln();
    end;
    Le seul vrai problème reste la gestion des images encodées. Pas en elles-mémes, encodages et décodages sont faciles à gérer ycompris en FMX mais quand elles sont "intégrées" dans un texte qui plus est, si c'est une cellule de table (table au sens HTML du terme), c'est plus compliqué. Je n'en suis pas loin mais je vais manquer de temps : et les vacances finissent dans 6 jours ! C'est pourquoi je cherchais à "m'inspirer" dans des langages que je maitrise un peu... à condition qu'un parser soit intégrer à la bibliothèque

    Si les gars de Lazarus avaient mené leur projet de foundation, j'aurais fait appel à eux. Mais mon dernier contact par mail est resté sans réponse... Dommage.

    Mais si des Delphistes ou des Lazarusien(ne)s sont intéressé(e)s, le code est ouvert sachant que je ne sais pas si le code est portable en fmx directement. Évidemment on peut toujours compiler la librairie avec FPC sous Mac et y accéder sous Mac FMX. Mais l'intégrer directement au niveau de la compilation dans le programme, je ne connais pas suffisamment les rouages de la cross-compilation de Delphi. Il faut dire qu'il n'y a pas trop de doc là-dessus.

    La licence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
     
    Free JPDF Pascal
     
    Based on the library FPDF written in PHP by Olivier PLATHEY and
    the Code25 method was based on PHP script created by Matthias Lau
     
    Author: Jean Patrick - jpsoft-sac-pa@hotmail.com - www.jeansistemas.net
     
    Contribution: Gilson Nunes - Use of enumerators and resolved bug related to decimal point.
     
    Date: 08/06/2012
     
    Version: 1.33 Stable
     
    License: You can freely use and modify this library for commercial purposes or not,
             provided you keep the credits to the author and his contributors.
     
    }
    Sur ce, je retourne faire un tour sur mon Ubuntu 16 : problème de version de libmysqlclient.so.16 nécessaire alors que j'ai une libmysqlclient.so.20. Cela la sent la recompilation du Qmysql driver... Les plaisirs de Linux !
    Cordialement. Gilles

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Arh, si l'entrée doit être en HTML, elle ne va pas correspondre à tes besoins

    Mais il y a cette bibliothèque PDF-Writer

    De souvenirs (parce que je n'ai pas eu le temps de me pencher à fond dessus) je l'avais prise parce que 1) elle gère la taille d'une page (A4) 2) elle est unicode (UTF-8)

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    Bonjour Foetus,

    L'entrée ne doit pas être en HTML, mais la machinerie doit disposer d'une approche qui permette de traduire facilement le HTM : Si vous prenez une table HTML et que vous devez faire tous les calculs de positionnement vous-même cela devient atroce. Alors évidemment, on peut créer d'abord un document HTML sauf que pour la pagination cela devient coton, comme la gestion des entêtes, des pieds de page.

    Bref, la bibliothèque ci-dessus possède une approche élégante et assez fonctionnelle de cette question.

    Cordialement. Gilles

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Synopse PDF Engine peut-être ?

Discussions similaires

  1. Librairie PDF pour Delphi
    Par arkhamon dans le forum Langage
    Réponses: 21
    Dernier message: 21/06/2012, 14h20
  2. [PDF] Librairie PDF permettant le remplissage d'un PDF existant
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/10/2010, 23h48
  3. [Etude] Librairies PDF
    Par cinemania dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 25/09/2010, 13h36
  4. librairie pdf-reader - impossible à faire marcher !
    Par SebastienM dans le forum Ruby
    Réponses: 1
    Dernier message: 25/08/2008, 11h49
  5. Réponses: 1
    Dernier message: 13/01/2006, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo