Pregunta: | 52981 - OBJETO OLE PARA ACROBAT STANDARD |
Autor: | Marta Fernández |
Saludos a todo el mundo que me lea, necesito saber como poder imprimir un DataWindow composite en formato PDF, he probado el SaveAs y no me lo hace bien, he probado Print de DataWindow y me sale la ventana de diálogo, pero necesito que esté todo automatizado, ¿alguien sabe de alguna API u objeto OLE? Muchas gracias! |
Respuesta: | Jose Cardenas |
Yo hago los siguiente:
string ls_impresora, ls_default //Obtener la impresora actual comp predeterminada RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", ls_default) ls_impresora = f_impresoras ("Adobe PDF") dw_listar.Modify("DataWindow.Print.DocumentName='" + NOMBRE+ "'") dw_listar.Print () ls_impresora = f_impresoras (ls_default) // El codigo de La funcion f_impresoras integer nret string ls_default, ls_driver, ls_port, ls_printer, ls_key, ls_config,ls_valores string nulo setnull(nulo) if isnull(as_impresora) then return nulo environment env GetEnvironment(env) if env.OSType = WindowsNT! then //Obtener la impresora actual comp predeterminada RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", ls_default) ls_default=mid(ls_default,1,pos(ls_default,",") -1) //impresora instalada //como predeterminada if upper(ls_default) = upper(as_impresora) then //si ya esta como predeterminada retorna return (ls_default) end if //Obtiene los valores de la impresora a poner RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices", as_impresora, ls_valores) nret = RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", as_impresora+","+ls_valores) if nret <> 1 then // Messagebox("Error...", "No se pudo cambiar la impresora predeterminada.") return (nulo) end if //Devuelve el nombre de la impresora que estaba predeterminadaç return (ls_default) end if if env.OSType = Windows! then RegistryGet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default", ls_default) if upper(ls_default) = upper(as_impresora) then //si ya esta como predeterminada retorna return (ls_default) end if //Obtiene los valores de la impresora a poner nret = RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default", as_impresora) if nret <> 1 then // Messagebox("Error...", "No se pudo cambiar la impresora predeterminada.") return (nulo) end if //Poner el driver y el nombre de la impresora en WIN.INI ls_key = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\"+as_impresora RegistryGet(ls_key, "Printer Driver", ls_driver) //obtener driver RegistryGet(ls_key, "Port", ls_port) //obtener puerto ls_config = ls_driver + "," + ls_port ls_printer = as_impresora + "," + ls_Config nret = SetProfileString("c:\windows\win.ini", "Windows", "device",ls_printer) if nret <> 1 then // Messagebox("Error...", "No se pudo modificar el archivo Win.ini") return(nulo) end if //Devuelve el nombre de la impresora que estaba predeterminada return (as_impresora) end if return (nulo) Si tienes cualquier duda me escribes un email. Suerte |