RE:Generar PDF desde VB 6.0
Publicado por
Issac (1 intervención) el 08/07/2008 18:38:21
Esto lo he encontrado andando por varios foros, aún no lo he implementado si les funciona me avisan.
Pasar de Word a PDF
sub escribeEnWord()
dim wordApp as new word.application
dim texto as String
wordApp.Documents.Open FileName:="c:documento.doc" , ReadOnly:=False
texto = "Extensión: "
wordApp.Selection.TypeText Text:=texto
' Así escribes líneas
wordApp.Selection.InsertBreak Type:=6
' Así haces salto de línea y retorno de carro
wordApp.Documents("C:documento.doc").SaveAs FileName:="C:DocumentoFinal.doc")
wordApp.Documents("C:documento.doc").Close SaveChanges:=0
wordApp.Application.Quit
end sub
Prueba esto, pero deberás tener un documento llamado documento.doc vacío en "c:".
Luego solo tendrás que curarte la ayuda de vba de word.
Luego, cuando tengas el documento word salvado, lo pasas a PDF.
Hazlo de antes de matar el objeto wordApp.
call imprimePDF("nombreDocumento")
Sub imprimePDF(nombre As String)
Dim impresoraPorDefecto As String
impresoraPorDefecto = ActivePrinter
ActivePrinter = "CutePDF Printer on NE04"
ActiveDocument.PrintOut OutputFileName:=nombre, PrintToFile:=True
ActivePrinter = impresoraPorDefecto
End Sub
Para esta fase lo que necesitas es haberte instalado la impresora virtual CutePDF Printer.
Es simple, deberás tener un editor de texto en visual y posteriormente hacer la rutina consecuente para salvarlo como pdf... MMM me parece que tienes que usar algunas funciones del API checalas bien por que te permitiran guardar ese archivo de texto en pdf o bien usa el commondialog y que al salvarlo te lo guarde como pdf...
Para la manipulación te recomiendo que uses el API ShellExecute para llamar los pdf a tus aplicaciones de visual suerte
mmmmmm y digo yo ¿como se le puede indicar al driver (el q estoy usando es el Cute PDF) por parámetros el nombre del fichero? si se lo paso por el OutPutFile, luego al intentar abrirlo con el Acrobat Reader da formato incorrecto. Estoy mirando por ahí y parece ser que hay q meterle alguna clave en el registro de windows para que pille un fichero por defecto, pero con las que he probao no me tira ¿alguna idea? Gracias.
Para pasar ficheros doc a pdf en visual Basic:
Después de probar con CutePdf, he probado con pdf995 (www.pdf995.com), y manipulando el ini de este programa he conseguido obtener pdf sin que se pare en la pantalla save as.
'Instalando pdf995.Suite.7.0_complete y ejecutando cr-ap9995.exe del keygen
'Fichero en pdf995
espdf995.ini modificado como sigue:
'[Parameters]
'Use GPL Ghostcript=1
'Quiet = 0
'Document Name=Microsoft Word - sample.doc
'Initial Dir=C:PDF995
'Output Folder=C:PDF995output 'En qué directorio se genera el fichero de salida
'Fixed Dir=C:PDF995output 'En qué directorio se genera el fichero de salida
'Default A4 = 1
'Output File = 4 'Esto indica cómo se va a llamar el siguiente fichero a generar
'User File=C:PDF995output\3.pdf 'Esto lo pone el programa con lo último generado
'Launch=C:PDF995output\3.pdf 'Esto lo pone el programa con lo último generado
Dim wd 'As New Word.Application
Dim ficherodestino As String
Dim numficdestino As Integer
numficdestino = 10
ficherodestino = CStr(numficdestino)
bien = AsignaIni("c:pdf995
espdf995.ini", "Parameters", "Output File", ficherodestino) 'Esto llama a una función que manipula el ini
Set wd = New Word.Application
wd.Documents.Open FileName:="""c:sample.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto
impresoraPorDefecto = wd.ActivePrinter
wd.Documents.Application.ActivePrinter = "PDF995"
wd.Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
Collate:=False, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, _
PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
bien = ESPERAR() 'Esto lo he puesto para esperar un tiempo en la prueba
MsgBox "Fichero Impreso"
wd.ActivePrinter = impresoraPorDefecto
wd.Quit
Set wd = Nothing