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

Web & réseau Delphi Discussion :

[D11] Module Apache


Sujet :

Web & réseau Delphi

  1. #1
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    juillet 2002
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 516
    Points : 532
    Points
    532
    Par défaut [D11] Module Apache
    Bonjour tout le monde,

    Je ne sais pas très bien dans quelle rubrique poser ma question.
    J'ai développé un site web comportant une dll (64 bits) pour Apache avec Delphi Alexandria.
    Une des fonctionnalités consiste à générer un rapport avec FastReport puis à l'exporter au format PDF (en utilisant leur composant tfrxPDFExport).
    Le fichier pdf ainsi généré est ensuite ouvert dans un nouvel onglet du navigateur.
    En mode "debug", tout va bien. Si je lance httpd.exe en mode "autonome" à partir d'un raccourci, tout va bien aussi.
    En revanche, si j'installe Apache en tant que service, ça ne fonctionne plus

    A priori, l'application génère bien un fichier pdf dans le dossier prévu mais il est vide.
    Il n'est pas affiché dans le navigateur et quand je l'ouvre avec acrobat ou autre, j'ai une page blanche (le fichier ne fait d'ailleurs que 2Ko au lieu de 300ko environ)

    J'ai pensé à un problème de droit d'accès au dossier, j'ai modifié le compte associé au service, etc.. sans succès
    7 fois à terre, 8 fois debout

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    13 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 13 191
    Points : 24 185
    Points
    24 185
    Par défaut
    En service, attention à l'isolation du Bureau, FastReport VCL 3.0 fonctionne en Service, oui, c'est une assez vieille version mais même en D10, là où je suis cela n'a jamais été mis à jour semble-t-il car elle a été modifié en interne.

    Cependant, c'est l'Exe qui contient FastReport qui est un Service et non une DLL.
    Et même principe que toi, c'est via Apache, mais invoquer en WS, le PHP utilise des Sockets pour dialoguer avec le [Web]Service et récupère le PDF et le remonte ensuite au Browser comme un fichier téléchargé.


    Pour des fichiers vides de 2Ko, je l'ai déjà vu, plusieurs niveaux de bug, où cela s'arrête juste l'entête du fichier, ou cela s'arrête à une grille vide ...
    Apache, es limites de tout sont augmentés, aussi bien taille max en mémoire, taille max en retour de requête ... genre memory_limit en PHP


    Si tu es en ADO, pense à CoInitialize à chaque Thread, si c'est la base qui ne fonctionne pas
    Tu devrais ajouter des logs pour voir ce qui se passe.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    juillet 2002
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 516
    Points : 532
    Points
    532
    Par défaut
    Merci pour ta réponse. Je n'avais pas envisagé que FastReport puisse avoir un comportement différemment dans une DLL
    Je ne suis pas en ADO, j'utilise les composants Firedac. Malgré tout , il y a déjà un coInitialize dans chaque thread pour d'autres besoins

    En ce qui concerne le fichier pdf généré, il ressemble plus à une "coquille vide" qu'à un fichier tronqué car à l'édition dans Notepad++, il semble avoir toutes les "balises" jusqu'à EOF et il s'ouvre sans erreur dans un lecteur

    Je chercher du côté de FastReport. J'espère que ne n'aurais réécrire tout les rapports qui fonctionnent en client lourd pour les utiliser en mode Web...
    7 fois à terre, 8 fois debout

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 618
    Points : 39 773
    Points
    39 773
    Billets dans le blog
    59
    Par défaut
    Bonjour,

    je viens de voir ce dépôt https://github.com/antoniojmsjr/FastReportExport
    peut-être sera t-il d'aucune aide mais ?
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    juillet 2002
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 516
    Points : 532
    Points
    532
    Par défaut
    Merci à tous les deux pour votre aide mais pour l'instant je n'ai pas résolu mon problème.

    @ShaiLeTroll: Tu as peut-être mis le doigt (en tout bien tout honneur )sur la cause du problème
    Citation Envoyé par ShaiLeTroll Voir le message
    FastReport VCL 3.0 fonctionne en Service
    Nous utilisons FastReport FMX Pro. S'agissant de la version Pro, la palette de composants fournis avec Delphi est désinstallée et donc.. pas de version VCL dispo pour vérifier
    Je vais voirsi je peux modifier l'installation sur un poste

    @SergioMaster: merci pour le lien, mais, apparemment, il se contente d'encapsuler les composants d'export de FastReport. du coup j'ai le même résultat.
    En plus, c'est la VCL qui est ciblée, j'ai dû adapter le code pour FMX.
    ça m'a permis de suspecter le composant frxPDFExport car avec ce dépôt, l'export se fait en deux temps:
    - génération d'un flux en mémoire
    - écriture du fichier uniquement si le flux est correct

    Du coup , je n'ai plus l'écriture du fichier vide de 2ko. Le problème semble donc bien lié à la génération du PDF

    2 infos complémentaires:
    - le PDF contient des code-barres (police de caractère, pas une image) mais le problème persiste si je change la police
    - lorsque je laisse les valeurs par défaut du composant frxPDFExport (compression, embeddedFonts, etc...) j'ai une erreur
    Impossible de créer un objet WIC Imaging Factory pour TCustomBitmapCodecWIC
    La dernière fois que j'ai eu des problème de WIC avec Delphi, c'était sur XP et Windows server 2003...... Je ne pensais pas en réentendre parler un jour
    7 fois à terre, 8 fois debout

  6. #6
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    juillet 2002
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 516
    Points : 532
    Points
    532
    Par défaut
    Bonjour à tous,

    Mon problème est (enfin) résolu ! Je partage la solution ici pour ceux qui se trouveraient dans le même cas

    D'après FastReport, le problème ne viendrait pas de l'export PDF, le coupable serait Firemonkey qui utilise GDI+ pour dessiner sur le canvas mais ne l'initialise pas pour les DLL.
    C'est curieux, car ma DLL fonctionne sans problème lorsque Apache est lancé en "standalone" mais bon....
    Voici le code incriminé

    Nom : FR.png
Affichages : 83
Taille : 38,3 Ko

    J'ai recopié le code de la section initialization de Winapi.GDIPOBJ.pas dans mon webmoduleCreate, le code de la section Finalization dans mon WebModuleDestroy et....ça fonctionne, que ce soit en mode autonome ou en service
    7 fois à terre, 8 fois debout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compilation et installation de PHP en tant que module Apache
    Par sebeni dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 26/06/2009, 07h33
  2. Création de directives pour un module Apache
    Par kakibend dans le forum Apache
    Réponses: 6
    Dernier message: 10/01/2008, 17h57
  3. PB d'installation du module Apache-AuthCookie
    Par JUSTIN Loïc dans le forum Modules
    Réponses: 7
    Dernier message: 05/04/2007, 16h38
  4. Développez un module Apache
    Par Montaigne dans le forum Apache
    Réponses: 1
    Dernier message: 05/10/2005, 11h38
  5. Module Apache et droits d'accès
    Par Jean++ dans le forum Apache
    Réponses: 3
    Dernier message: 28/04/2004, 16h28

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