Seite 3 von 3

Re: Webobjekt mit Dateiamen speichern - wie?

Verfasst: 28.11.2015 00:15
von matbal
So funktioniert es bei mir:

Code: Alles auswählen

;pb-File
EnableExplicit

IncludeFile "HTML_alt_PBF.pbf"

#OLECMDEXECOPT_DODEFAULT      = 0
#OLECMDEXECOPT_PROMPTUSER     = 1
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDEXECOPT_SHOWHELP       = 3

#OLECMDID_OPEN                = 1
#OLECMDID_NEW                 = 2
#OLECMDID_SAVE                = 3
#OLECMDID_SAVEAS              = 4
#OLECMDID_SAVECOPYAS          = 5
#OLECMDID_PRINT               = 6
#OLECMDID_PRINTPREVIEW        = 7

#VT_BSTR = 8

OpenWindow_1()

Global Filename.s, SNummer$,txtSeriennummer,string_kname,Filename$
;G$=FormatDate("%yy%mm%dd", Date()) + "001HL"   ;  muss in pbf
;Global G$; muss in pbf

Procedure FormularErstellen()
   
   Protected SNummer$
   
   SNummer$ = GetGadgetText(txtSeriennummer)
   
   
   Protected HTML.s
   
   HTML + "</head><body>"
   HTML + "<div style='position:absolute; left:10mm; top:10mm; color:#000000;font-weight:bold;font-family:arial; font-size:22px;'>Formular</div>"
   HTML + "<div style='position:absolute; left:60mm; top:12mm; color:#000000;font-weight:bold;font-family:arial; font-size:17px;'>Seriennummer:</div>"
   HTML + "<div style='position:absolute; left:100mm; top:12mm; color:#000000;font-family:arial; font-size:17px;'>"+SNummer$+"</div>"
   HTML + "</body></html>"
   
   SetGadgetItemText(#Adresse, #PB_Web_HtmlCode, HTML)
   
EndProcedure

Procedure FormularDrucken(Filename.s)
   Protected WebObject.IWebBrowser2
   WebObject = GetWindowLongPtr_(GadgetID(#Adresse), #GWL_USERDATA)
   Protected filename_Unicode
   ; convert to unicode
   filename_Unicode = AllocateMemory(Len(Filename) * 2 + 2)
   MultiByteToWideChar_(#CP_ACP, 0, @Filename, -1, filename_Unicode, Len(Filename) * 2 + 2)               
   Protected filename_BSTR
   ; create bstr
   filename_BSTR = SysAllocString_(filename_Unicode)
   ; fill variant
   Protected VariantIn.VARIANT
   VariantIn\vt = #VT_BSTR
   VariantIn\bstrVal = filename_BSTR
   If GetGadgetState(Checkbox_1)=#PB_Checkbox_Checked
      WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
   Else
      WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
   EndIf
   FreeMemory(filename_Unicode)
   SysFreeString_(filename_BSTR) 
EndProcedure


Procedure FormularSpeichern(Filename.s)
   
   Protected WebObject.IWebBrowser2
   WebObject = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
   Protected filename_Unicode
   filename_Unicode = AllocateMemory(StringByteLength(Filename.s, #PB_Unicode) + 2)
   PokeS(filename_Unicode, Filename, -1, #PB_Unicode)
   Protected filename_BSTR
   ; create bstr
   filename_BSTR = SysAllocString_(filename_Unicode)
   ; fill variant
   Protected VariantIn.VARIANT
   VariantIn\vt = #VT_BSTR
   VariantIn\bstrVal = filename_BSTR
   If WebObject\ExecWB(#OLECMDID_SAVEAS, #OLECMDEXECOPT_DONTPROMPTUSER, @VariantIn, 0) = #S_OK
      MessageRequester("","Formular wurde gespeichert !")
   Else
      MessageRequester("","Formular wurde nicht gespeichert !")
   EndIf
   FreeMemory(filename_Unicode)
   SysFreeString_(filename_BSTR)
EndProcedure



Repeat
   
   Select WaitWindowEvent()
         
      Case #PB_Event_Gadget
         
         Select EventGadget()
               
            Case Button_machhtml
               Filename.s = SNummer$
               FormularErstellen()
               
            Case Button_Speichern
               SNummer$ = GetGadgetText(txtSeriennummer)
               Filename.s = SNummer$
               FormularSpeichern(Filename.s)
               
               
               
            Case Button_Drucken
               SNummer$ = GetGadgetText(txtSeriennummer)
               Filename.s = SNummer$
               FormularDrucken(Filename.s) 
               
               
         EndSelect
         
      Case #PB_Event_CloseWindow
         
         Select EventWindow()
               
            Case Window_1
               Break
               
         EndSelect
         
   EndSelect
   
ForEver

Re: Webobjekt mit Dateiamen speichern - wie?

Verfasst: 28.11.2015 10:55
von Fanpost
Hallo!

Drucken funktioniert nun - aber noch ohne Filename. Den Filename brauche ich unbedingt für den PDF-Druck.

Re: Webobjekt mit Dateiamen speichern - wie?

Verfasst: 28.11.2015 17:25
von Fanpost
Hat keiner eine Lösung?

Re: Webobjekt mit Dateiamen speichern - wie?

Verfasst: 28.11.2015 20:22
von ts-soft
Fanpost hat geschrieben:Hat keiner eine Lösung?
Unabhängig davon, das keiner weiß womit Du PDF druckst, es wird wohl immer der Dateiname händisch vergeben müssen,
es gibt keine Druckeroption, die den Dateinamen für PDF bereitstellt. Das wird also wohl nie funktionieren!

Ansonsten nur Speichern und mit shellexecute das PDF-Programm aufrufen, mit dem Flag zu Drucken. So in der Art:

Code: Alles auswählen

ShellExecute_(0, "print", PDF-Programm, PDF-Datei, "", #SW_HIDE)
Genaue Parameter bitte selbst ermitteln (durch probieren).

Re: Webobjekt mit Dateiamen speichern - wie?

Verfasst: 28.11.2015 20:49
von Fanpost
OK, Danke für die Info. Name also nur händisch. Nur zur Info: ich nehme für die PDF entweder als Drucker Bullzip.pdf oder PDF-Creator.
Dann ist meine Frage hiermit beantwortet. Danke an Alle.