Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour
Nous faisons une sauvegarde des datawindows en PDF en utilisant une imprimante ps et ghostscript.
Cela fonctionne bien pour des datawindows freeform, grid et autre , mais ne fonctionne pas pour les crosstab.
Elle n'a pas l'air de passer dans la bonne imprimante et génère des pdf vide de 3ko.
String sMod // modifie le printfilename de la datawindow sMod='DataWindow.Export.PDF.Method=Distill!' sMod=this.dwPS.modify(sMod) // modifie l'imprimante sMod='datawindow.Printer="'+this.sPSPrinter+'"' sMod=this.dwPS.modify(sMod) sMod='DataWindow.Export.PDF.Distill.CustomPostScript=Yes' sMod=this.dwPS.modify(sMod) // Sauve sur un lecteur avec une lettre IF this.dwPS.SaveAs(sOutPut,PDF!,TRUE)=-1 THEN this.sOutPut='' end if RETURN(this.sOutPut)
De ce que j'ai lu de la doc sysbase, le fait d'appeler la méthode modify sur une crosstab nécessite un rebuilt de la datawindow.
Des infos la dessus ?
(pb 11.5 4566)
Merci
Dernière modification par ydl (13-10-2009 09:44:11)
Hors ligne
Bonjour,
Merci d'avance de corriger votre post
Hors ligne
Bonjour,
Je ne vois pas pourquoi cela fonctionnerait avec certaines Datawindow et pas avec d'autre.
J'ai récemment posé la question de la sauvegarde en PDF sur ce forum. (voir plus bas dans la liste des sujets).
Essaie peut-être ceci, c'est ce que moi j'ai mis juste avant mon SaveAs.
dw_name.Object.DataWindow.Export.PDF.Method = Distill! dw_name.Object.DataWindow.Printer = "Sybase Datawindow PS" dw_name.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
Dernière modification par johnpelu (07-10-2009 11:18:50)
Hors ligne
En fait la datawindow crosstab, n'est pas une datawindow comme les autres.
La modification des certaine propriétes entraine un rebuilt du datacontrol, qui la ne se fait pas. En fait on passe la datawindow à un datastore.
(la Sybase Datawindow PS est celle qui est créé par défaut, nous utilisons quand à nous une HP 8500 ps)
J'ai essayé en utilisant la méthode XSL-FO, l'export de la crosstab en pdf se fait, mais cette méthode présente selon la doc sysbase des limitations
Doc sybase:
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.
Pour ma part la méthode ghostscript support bien le RichText. Les infos sur la XLS-FO sont-elles exactes ?
Dernière modification par ydl (07-10-2009 12:22:43)
Hors ligne
ydl a écrit:
la Sybase Datawindow PS est celle qui est créé par défaut, nous utilisons quand à nous une HP 8500 ps
J'ai essayé en utilisant la méthode XSL-FO, l'export de la crosstab en pdf se fait, mais cette méthode présente selon la doc sysbase des limitations
Doc sybase:
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.
Pour ma part la méthode ghostscript support bien le RichText. Les infos sur la XLS-FO sont-elles exactes ?
Tu as , une ou 2 imprimantes de type PS sur ta machine ?
L'impression en PDF des autres Datawindow fonctionne correctement avec le Distill! ?
Est-ce qu'il s'agit d'une application que tu devras déployer sur plusieurs postes ?
Car dans le cas de GhostScript comme celui de XSL-FO il faudra déployer des choses à l'installation, pour l'un comme pour l'autre.
Je ne sais pas la charge que tu as pour cela, mais à ta place j'essaierai d'uniformiser l'impression de mes Datawindow pour toute l'application, et ce avec GhostScript.
Peux-tu fournir les exemples de code ?
Est ce que dans le DataWindow Painter tu as bien Distill! et les autres paramètres adéquats ?
Hors ligne
Toutes nos applications utilisent distill et ghostscript.
Nos applications sont centralisés chez nos clients sur des serveurs TSE ou répertoire partagé.
L'impression PDF fonctionne sans problème, seule les crosstab posent problème.
Le problème vient du fait que je ne peux pas modifier les propriétés en script de la crosstab.
Si dans l'onglet 'Print Spécifications' , je renseigne le 'printer name', le programme génère bien le pdf.
Je cherche donc un moyen de forcer le rebuilt de la crosstab après modification des propriétés de cette dernière.
Hors ligne
Bonsoir,
peut-être ici http://download.sybase.com/pdfdocs/pbg0900e/dwprgug.pdf
Hors ligne
Bonjour,
Et avec ceci ?
Rebuild columns at runtime
Check to specify the crosstab as a dynamic crosstab. (If this box is unchecked, the crosstab is a static crosstab.)
Crosstab.property DataWindow object property
Settings for a DataWindow object whose presentation style is Crosstab.
PowerBuilder dot notation:
dw_control.Object.DataWindow.Crosstab.property
Describe and Modify argument:
"DataWindow.Crosstab.property { = value }"
Parameter Description
property A property for a Crosstab DataWindow. Properties and their settings are listed in the table below.
value A string expression listing the items to be assigned to the property. For Crosstab properties, value is always quoted and can be a DataWindow expression.
Property for Crosstab Value
Columns (exp) A string containing a comma- or tab-separated list of the names of columns that make up the columns of the crosstab. These are the columns that display across the top of the crosstab.
Painter: Columns option.
Rows (exp) A string containing a comma- or tab-separated list of the names of columns that make up the rows of the crosstab.
Painter: Rows option.
SourceNames (exp) A string containing a comma-separated list of column names to be displayed in the Crosstab Definition dialog box. The default names are the column names from the database.
Painter: Source Data option.
StaticMode A string indicating whether a dynamic crosstab should be put into a static mode. The dynamic crosstab remains in static mode until you set StaticMode to No. While the dynamic crosstab is in static mode, you can manipulate the properties of individual columns.
Values are:Yes - StaticMode is enabledNo - (Default) StaticMode is disabledPainter: Not set in painter.
Values (exp) A string containing a comma- or tab-separated list of expressions that will be used to calculate the values of the crosstab.
Painter: Values option.
Usage
In the painter
For DataWindow objects with the Crosstab presentation style, set the values in the Crosstab Definition dialog box. To display the dialog box, right-click in the Design view to display the pop-up menu and select Crosstab.
Dernière modification par johnpelu (09-10-2009 06:27:54)
Hors ligne
Merci pour ton aide, mais cela ne m'avance pas beaucoup.
Je connais, je pense relativement bien les datawindows, cela fait 6 ans que je travaille sur pb (version depuis la 7, c'est juste pour situer mon niveau).
Le problème vient du fait que le datawindow control ne fait pas sont job pour les crosstab.
Une fois que j'ai modifié les propriétés citées plus haut, il devrait faire un rebuilt tout seul, chose qu'il ne fait pas.
Je cherche donc à l'obliger à le faire.
Hors ligne
Bonjour,
As tu essayé ceci
dwc_impression.dataobject = "a_crosstab" dwc_impression.settransobject(sqlca) dwc_impression.retrieve() dwc_impression.Object.DataWindow.Export.PDF.Method = Distill! dwc_impression.Object.DataWindow.Export.PDF.Distill.CustomPostScript="No" dwc_impression.SaveAs("c:\test.pdf",PDF!, True)
Je n'utilise pas les crosstab, mais je viens d'essayer sur mon poste et cela fonctionne très bien.
De plus, j'ai également utilisé la méthode modify avec succès.
Est il nécessaire de modifier ton imprimante par défaut?
Hors ligne
Cela fonctionne effectivement en utilisant l'imprimante postscript par défaut 'Sybase DataWindow PS' ou même modifiant le nom d'une imprimante post script en 'Sybase DataWindow PS' .
J'ai installé une hp 8500 ps renommer en 'Sybase DataWindow PS' et la cela fonctionne et même mieux que le driver acrobat distiller.
Je génère pour des petits documents des fichiers qui font moitié moins en taille.
Merci encore à tous.
Hors ligne