Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 07-10-2009 08:51:40

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

[RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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.

Code: pb

 
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

 

#2 07-10-2009 09:07:33

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

Bonjour,



Merci d'avance de corriger votre post


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 07-10-2009 11:17:07

johnpelu  
Membre Power Geek
Date d'inscription: 17-10-2008
Messages: 179
Pépites: 677
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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.

Code: pb

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

 

#4 07-10-2009 12:21:35

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

#5 07-10-2009 12:39:24

johnpelu  
Membre Power Geek
Date d'inscription: 17-10-2008
Messages: 179
Pépites: 677
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

#6 08-10-2009 14:03:16

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

#7 08-10-2009 18:19:17

johnpelu  
Membre Power Geek
Date d'inscription: 17-10-2008
Messages: 179
Pépites: 677
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

Hors ligne

 

#8 09-10-2009 06:23:24

johnpelu  
Membre Power Geek
Date d'inscription: 17-10-2008
Messages: 179
Pépites: 677
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

#9 12-10-2009 09:39:41

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

#10 12-10-2009 13:45:14

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

Bonjour,

As tu essayé ceci

Code: pb

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

 

#11 13-10-2009 09:43:48

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: [RESOLU] Sauvegarde d'une crosstab en pdf (ghostscript)

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22