Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
J'utilise Powerbuilder 11.2 build 8407.
J'ai actuellement des problèmes pour sauver une datawindow composite en un fichier PDF.
Ma datawindow composite contient:
- un champ texte
- une datawindow freeform
- une datawindow tabular
- une datawindow freeform
Dans un premier temps, je n'arrive pas à ce que les 3 datawindows aient bien le format PDF dans les propriétés Data Export.
Idem pour la méthode XSLFOP!.
Quand je les set manuellement dans le painter et que je les sauve. Il ne garde pas mes changements dans les datawindows.
2e point: Je n'arrive pas à changer le format d'export en PDF pour le composite lui-même.
Alors j'essaie de le faire dans le code, mais je ne suis pas sur que mon code pour mettre la méthode XSLFOP! soit correct,
mais cela ne plante pas.
Enfin, le SaveAs() retourne -1 quand j'exécute en mode debug.
Est-ce que vous auriez des idées, des conseils, des corrections..... n'importe quoi !!!!
adw_data.Object.dw_1.Object.DataWindow.Export.PDF.Method = XSLFOP! adw_data.Object.dw_1.Object.DataWindow.Export.PDF.XSLFOP.Print = 'Yes' adw_data.Object.dw_2.Object.DataWindow.Export.PDF.Method = XSLFOP! adw_data.Object.dw_2.Object.DataWindow.Export.PDF.XSLFOP.Print = 'Yes' adw_data.Object.dw_3.Object.DataWindow.Export.PDF.Method = XSLFOP! adw_data.Object.dw_3.Object.DataWindow.Export.PDF.XSLFOP.Print = 'Yes' li_rc = adw_data.SaveAs(as_file_name, PDF!, true)
Merci d'avance de votre aide
Dernière modification par Thorben (16-11-2010 12:38:55)
Hors ligne
salut,
Pour ce qui concerne ton problème d'enregistrement de la propriété Format : PDF c'est normal.
En fait ta sélection est bien enregistrer mais lorsque tu ouvre ta datawindow celle ci n'apparait et pourtant elle est bien sélectionné.
Pour celà tu dois faire un Edit source de ta datawindow et verras ce type de ligne à la fin
export.xml(usetemplate="t1" headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 template=(comment="" encoding="UTF-16LE" name="t1" xml="<?xml version=~"1.0~" encoding=~"UTF-16LE~" standalone=~"no~"?><d_admin_policy_holders><d_admin_policy_holders_row __pbband=~"detail~"><id>id</id><userid>userid</userid><password>password</password><titleid>titleid</titleid><fname>fname</fname><lname>lname</lname><dob>dob</dob><addressid>addressid</addressid><phone>phone</phone><email>email</email><bankname>bankname</bankname><branchcode>branchcode</branchcode><accounttypeid>accounttypeid</accounttypeid><accountnumber>accountnumber</accountnumber></d_admin_policy_holders_row></d_admin_policy_holders>")) import.xml() export.pdf(method=0 distill.custompostscript="1" xslfop.print="0" )
Tu vois dans cet exemple que j'ai mis un template appelé T1 pour l'export en xml et j'ai choisit la méthode xslfop pour le PDF.
Si j'utilise la fonction saveas de la datawindow et que je met en argument de la fonction saveas PDF! il me feras du xslfop
Pour ce qui est de la composite as tu vérifier les éléments suivants :
Deployment requirements
If your application uses the distill method, you must distribute the GNU Ghostscript files and default PostScript printer driver and related files (if using the default printer) with your application. If your application uses the XSL-FO method, you must distribute Apache FOP files and the Java Runtime Environment (JRE) with your application. For more information, see the chapter on deploying your application in Application Techniques.
Hors ligne
Merci pour ta réponse.
Pour les fichiers PDF je n'utilise pas la méthode 'Distill'. Mais XLSFOP!, et cela fonctionne très bien sur une datawindow grid.
J'ai modifié les 3 datawindows avec l'Edit source pour mettre
export.pdf(method=0 distill.custompostscript="1" xslfop.print="0" )
Cela n'a rien donné.
Ensuite j'ai changé pour mettre
export.pdf(method=1 distill.custompostscript="0" xslfop.print="1" )
Et ne produit rien non plus. Je l'ai fait aussi pour le composite , sans succès non plus.
Je ne comprend pas où est mon problème.
Dernière modification par Thorben (16-11-2010 12:39:14)
Hors ligne
Bonjour,
C'est normal, la méthode XSL-FO comporte plusieurs limitations par rapport à la méthode ghostscript :
Chapter 19 Enhancing Datawindows Object => Saving Data in an external file
Limitations
The Ghostscript method currently does not support OLE and RichText DataWindow objects. The XSL-FO method currently does not support OLE, RichText, graph, and composite DataWindow objects.
Hors ligne
Merci bien pour cette dernière précision non négligeable !!!
Je change donc pour utiliser la méthode Distill!
Les 2 lignes suivantes ont le même résultat:
ls_ret = adw_data.Modify("DataWindow.Export.PDF.Method = Distill!")
adw_data.Object.DataWindow.Export.PDF.Method = Distill!
Ensuite, je fais ce qui suit pour la datawindow dw_1 qui est dans la composite:
adw_data.Object.dw_1.Object.DataWindow.Export.PDF.Method = Distill! adw_data.Object.dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript='1' adw_data.Object.dw_1.Object.DataWindow.Printer = "PDF995"
Quand je fais le SaveAs, il me retourne toujours -1.
Est-ce que vous auriez une idée ?
Dernière modification par Thorben (16-11-2010 12:38:21)
Hors ligne
Bonjour,
Tu as installé le pré-requis pour utiliser la méthode Distill : Ghostscript, ... ?
Hors ligne
Pour rappel:
Merci d'avance de corriger.
Hors ligne