I've modified h_controlmisc.prg to allow user to enter base filename for saving his prinouts:
Code: Select all
Function _HMG_PRINTER_SavePages()
Local c , i , f , t , d , e, x, h, a := {}
Local g := {"PDF", "BMP","JPG","GIF","TIF","PNG","EMF"}
Local nTypePicture := { Nil , BT_FILEFORMAT_BMP, BT_FILEFORMAT_JPG, BT_FILEFORMAT_GIF, BT_FILEFORMAT_TIF, BT_FILEFORMAT_PNG, Nil }
Local hBitmap, nType
Local flag_PDF := .F.
local nWidth, nHeight, nDPI, cDocName
x := _HMG_PRINTER_GetOutFileType ( g ) /* Returns following Array:
( x[1]=>Folder_Name | x[2]=>File_Type | x[3]=>Base file name) */
if HMG_LEN(x)=0
Return Nil
endif
IF x[ 2 ] == 1
flag_PDF := .T.
endif
cDocName := alltrim(x[ 3 ])
if empty(cDocName)
cDocName := "HMG_PrintFile_"
else
// avoid to use special chars in filename
cDocName := charrepl(":/.,|\@#$%&^*+ ",_HMG_SYSDATA [ 358 ],"_") + "_"
endif
If HB_URIGHT(x[1],1) != '\'
e := x[1] + '\'
Else
e := x[1]
endif
h := g[x[2]] // File_Type extension
nType := nTypePicture[ x[2] ]
t := gettempfolder()
//MsgStop(_HMG_SYSDATA [ 358 ])
c := adir ( t + _HMG_SYSDATA [ 379 ] + "_hmg_print_preview_*.Emf")
asize ( a , c )
adir ( t + _HMG_SYSDATA [ 379 ] + "_hmg_print_preview_*.Emf" , a )
For i := 1 To c
f := t + a [i]
d := e + cDocName + StrZero ( i , 4 )
//MsgStop("f->"+f+chr(10)+"t->"+t+chr(10)+"d->"+d+chr(10)+"cDocName->"+ cDocName+ "len(a)->"+str(len(a)))
IF HMG_UPPER (h) == "EMF"
COPY FILE (F) TO (D+"."+h)
ELSE
// by Dr. Claudio Soto, April 2014
hBitmap = BT_BitmapLoadEMF ( f, WHITE )
IF hBitmap <> 0 .AND. flag_PDF == .F.
BT_BitmapSaveFile (hBitmap, d+"."+h, nType)
BT_BitmapRelease (hBitmap)
ENDIF
IF hBitmap <> 0 .AND. flag_PDF == .T. // by Rathinagiri (May 2014)
if i == 1
nDPI := 300
nWidth := ( BT_BitmapWidth ( hBitmap ) / nDPI * 25.4 )
nHeight := ( BT_BitmapHeight( hBitmap ) / nDPI * 25.4 )
_HMG_HPDF_INIT ( d+".pdf", 1, 256, nHeight, nWidth, .f. )
_hmg_hpdf_startdoc()
_HMG_HPDF_SetCompression( 'ALL' )
h := "JPG"
endif
_hmg_hpdf_startpage()
BT_BitmapSaveFile (hBitmap, d+"."+h, BT_FILEFORMAT_JPG)
BT_BitmapRelease (hBitmap)
_HMG_HPDF_IMAGE ( d+"."+h, 0, 0, nHeight, nWidth, .t. , h )
_hmg_hpdf_endpage()
FERASE( d+"."+h )
if i == c
_hmg_hpdf_enddoc()
endif
ENDIF
ENDIF
Next i
Return Nil
Function _HMG_PRINTER_GetOutFileType (aFiletype) // by Pablo César, April 2014
Local cFolder_aux,cFolder:=GetCurrentFolder(), aRet:={}
DEFINE WINDOW Out_File AT 171 , 285 WIDTH 468 HEIGHT 179 ;
TITLE "Output type file" MODAL NOSIZE NOSYSMENU
ON KEY ESCAPE ACTION ThisWindow.Release()
DEFINE LABEL Label_1
ROW 22
COL 20
WIDTH 60
HEIGHT 20
VALUE "Folder:"
FONTNAME "Arial"
FONTSIZE 9
END LABEL
DEFINE TEXTBOX Text_1
ROW 18
COL 90
WIDTH 320
HEIGHT 22
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
READONLY .T.
VALUE cFolder
END TEXTBOX
DEFINE BUTTON Button_1
ROW 17
COL 412
WIDTH 30
HEIGHT 24
ACTION (cFolder_aux:=GetFolder(),cFolder := IIF (EMPTY(cFolder_aux),cFolder,cFolder_aux), SetProperty("Out_File","Text_1","Value",cFolder))
FONTNAME "Arial"
FONTSIZE 9
PICTURE "HP_FOLDER"
PICTALIGNMENT TOP
END BUTTON
DEFINE LABEL Label_OutFileName
ROW 50
COL 10
WIDTH 79
HEIGHT 40
VALUE "Base filename:"
FONTNAME "Arial"
FONTSIZE 9
END LABEL
DEFINE TEXTBOX Text_OutFileName
ROW 50
COL 90
WIDTH 320
HEIGHT 22
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
READONLY .F.
VALUE charrepl(":/.,|\@#$%&^*+ ",_HMG_SYSDATA [ 358 ],"_")
END TEXTBOX
DEFINE LABEL Label_2
ROW 90
COL 20
WIDTH 60
HEIGHT 20
VALUE "File type:"
FONTNAME "Arial"
FONTSIZE 9
END LABEL
DEFINE COMBOBOX Combo_1
ROW 86
COL 90
WIDTH 100
HEIGHT 126
ITEMS aFiletype
VALUE 1
FONTNAME "Arial"
FONTSIZE 9
END COMBOBOX
DEFINE BUTTON Button_2
ROW 110
COL 270
WIDTH 80
HEIGHT 24
ACTION (aRet:={GetProperty("Out_File","Text_1","Value"),GetProperty("Out_File","Combo_1","Value"),GetProperty("Out_File","Text_OutFileName","Value")},ThisWindow.Release())
CAPTION _HMG_SYSDATA [ 371 ] [11]
FONTNAME "Arial"
FONTSIZE 9
END BUTTON
DEFINE BUTTON Button_3
ROW 110
COL 360
WIDTH 80
HEIGHT 24
ACTION ThisWindow.Release()
CAPTION _HMG_SYSDATA [ 371 ] [12]
FONTNAME "Arial"
FONTSIZE 9
END BUTTON
END WINDOW
CENTER WINDOW Out_File
ACTIVATE WINDOW Out_File
Return aRet