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 :

[XE4][Intraweb][FastReport] envoyer un pdf


Sujet :

Web & réseau Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut [XE4][Intraweb][FastReport] envoyer un pdf
    Bonjour,

    J'upgrade un petit programme intraweb d'interrogation de stocks qui a une possibilité d'envoyer un fichier PDF . Cette fonction faite avec D2010 et Rave fonctionnait parfaitement. Mais là le fichier pdf envoyé est toujours de 1k et surtout en erreur ! je ne vois pas où cela coince

    L'état via un programme VCL classique fonctionne et s'exporte correctement

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    procedure TiwMainForm2.iwPDFClick(Sender: TObject);
    var l_popup_page_name: string;
        l_popup_page_options: string;
        l_pdfurl: string;
     
        procedure CreerReportFile;
        begin
        // nom de fichier unique
    UserSession.pdfName:=IWServerController.rep+WebApplication.AppID+'Stocks.pdf';
        l_pdfurl:=WebApplication.AppURLBase+ '/Files/'+WebApplication.AppID+'Stocks.pdf';
        ForceDirectories(ExtractFileDir(userSession.pdfName));
        with UserSession.iwdatas do
         begin
           Q2Print.ParamByName('MARQUE').AsString:=UserSession.Marque;
           Q2Print.Active:=True;
           // j'ai lu que c'était nécessaire ?
           frxReport1.EngineOptions.EnableThreadSafe:= True;
           // localisation de l'état (EN,FR,SP)
           if not FrxReport1.LoadFromFile('webstock'+UserSession.Langue+'.fr3')
             then FrxReport1.LoadFromFile('webstock.fr3',false);
           frxReport1.PrepareReport(true);
           frxPDFExport1.FileName:=UserSession.pdfname;
           // preview ok mais bien évidement juste quand je fait du debug
           frxreport1.Export(frxPDFExport1);
           Q2Print.Active:=False;
         end;
        end;
     
    begin
        l_popup_page_name:= 'Stocks_PDF';
        l_popup_page_options:= 'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,'+
                               'location=no,directories=no,width=780,height=580';
        CreerReportFile;
    // mes différents essais (je ne sais plus où j'en suis)     
    //    WebApplication.GoToURL(l_pdfurl);  
        WebApplication.SendFile(IWServerController.rep+WebApplication.AppID+'Stocks.pdf',true,'pdf','Stocks.pdf');  // c'est là que ça coince apparement
     
    //    WebApplication.NewWindow(l_pdfurl);
    //    AddToInitProc('NewWindow("'
    //        + l_pdfurl
    //        + '","'+ l_popup_page_name
    //        + '","'+ l_popup_page_options
    //        + '");');
    end;
    Question subsidiaire : La création de l'état peut être "longue" , comment afficher une barre de progression sur le web ? (je suis même prêt a faire une autre page )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut AsyncClick gif animé visible
    Bonsoir

    je mettrai un gif animé que je rendrai visible en Ajax au début du traitement et invisible à la fin du traitement.
    ( recréer le fonctionnement d'un update panel en asp.net)

    cordialement

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par alheuredudejeuner Voir le message
    je mettrai un gif animé que je rendrai visible en Ajax au début du traitement et invisible à la fin du traitement.
    ( recréer le fonctionnement d'un update panel en asp.net)
    cordialement
    Merci de la réponse a cette question 'subsidiaire' , en fait je n'avais pas tout expliqué . J'utilise les Jquery Mobile pour la partie HTML, après quelques recherches , j'ai trouvé un page loading widget qui convient a merveille
    (encore que je ne sache pas encore comment je vais coder ce truc )

    mon gros problème reste ce pdf qui ne passe pas
    j'ai quelques pistes , mais aucune certitude !
    cette migration de Intraweb XI à XIV n'est pas sans surprises
    - ma création/envoi du pdf
    - les cookies qui ne fonctionnent plus (mais peu être est-ce du au mode debug ) avant on passait un TStrings maintenant c'est valeur par valeur mais je plante
    - l'appel à WebApplication.TerminateAndRedirect('http://about:blank'); qui plante
    etc....
    bref encore pas mal de bosses
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    - les cookies qui ne fonctionnent plus (mais peu être est-ce du au mode debug ) avant on passait un TStrings maintenant c'est valeur par valeur mais je plante
    - l'appel à WebApplication.TerminateAndRedirect('http://about:blank'); qui plante
    ces deux points sont résolus , pour les cookies en fouillant sur les forums EDN
    j'ai trouvé une petite unité sympa , que je vous livre ici
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    unit cookies;
     
    interface
     
    uses classes,IW.HTTP.Cookie,
         iwinit,windows,sysutils;
     
    function GetCookieValue(sName: String): String;
     
    //CookieValues array of Name=Value
    //ExpireIn - Howmany days
    procedure SetCookie(CookieName,CookieValue:String; ExpireIn: Real);
    //expirein=0 -> session cookie
     
    implementation
     
    function GetUTCDateTime: TDateTime;
    var
    GMTST: Windows.TSystemTime;
    begin
    windows.GetSystemTime(GMTST);
    result:=Sysutils.SystemTimeToDateTime(GMTST);
    end;
     
    function GetCookieValue(sName: String): String;
    begin
    Result := webapplication.Request.CookieFields.Values[sName];
    end;
     
    procedure SetCookie(CookieName,CookieValue:String; ExpireIn: Real);
    //expirein=0 -> delete when browser closes
    var
    ExpireOn : real;
    begin
    if ExpireIn <> 0 then
    ExpireOn := GetUTCDateTime + ExpireIn
    else
    ExpireOn:=-1; // session cookie
    webapplication.Response.Cookies.Add(THTTPCookie.Create(CookieName,CookieValue,'/',Expireon));
    end;
    end.
    pour le TerminateAndRedirect , idem après fouilles , un petit uses et une ligne de code dans le servercontroller.pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses ...   IWMimeTypes;
     
    procedure TIWServerController.IWServerControllerBaseConfig(Sender: TObject);
    begin
      TIWMimeTypes.RegisterType('.html', 'text/html', True);
    end;
    semble régler le problème (j'ai mis semble car le bug pouvait aussi être du au cookie ) je confirmerai via un edit de ce post
    ce bout de code ne sert à rien pour 'http://about:blank' , mais est très utile si l'on redirige vers une page html externe
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Au temps pour moi !

    J'ai écrit un programme test simple (juste un report avec 'HELLO') et là pas de soucis , le pdf 'passe' .
    Même chose avec le programme 'réel' avec ce même petit report et
    donc
    a) FastReport 4 Embarcadero Edition +Intraweb 14 ça fonctionne , j'avais des doutes

    b) le plantage se situe dans mon unité (peut être la conversion de D2010 a XE4) , je pense plus particulièrement à la partie liaison avec le dataset .

    La suite au prochain round !
    de toute manière je pense changer mon fusil d'épaule et plutôt écrire un service pour envoyer par e-mail le PDF (je n'ai encore aucune idée de comment le réaliser , jusque là le planificateur de tâche me faisait le boulot )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    b) le plantage se situe dans mon unité (peut être la conversion de D2010 a XE4) , je pense plus particulièrement à la partie liaison avec le dataset .
    c'était bien mon dataset qui déconnait
    une simple priorité en plus Classgroup = Vcl.Controls.TControl
    (ou l'écriture de {%CLASSGROUP 'Vcl.Controls.TControl'} dans le source)
    tout roule
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. [PDF] Envoyer en PDF le fichier HTML généré par PHP
    Par sebhm dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/03/2009, 22h55
  2. [FPDF] Envoyer plusieurs PDF ?
    Par ledébut dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 09/05/2008, 14h18
  3. comment envoyer un pdf par email
    Par nouha_79 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2007, 11h09
  4. [FPDF] créer un formulaire pour l'envoyer en pdf
    Par faucon54 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/05/2007, 09h52
  5. [PHPMailer] envoyer un pdf
    Par sansouna24 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/04/2006, 18h45

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