Visual Basic.NET - Integrar CUTEPDF A VB.NET

   
Vista:

Integrar CUTEPDF A VB.NET

Publicado por juan luis (23 intervenciones) el 06/10/2014 21:09:21
Estoy desarrollando una aplicacion en VB.NET que emite liquidaciones de Honorarios y necesito generar las liquidaciones en PDF desde la aplicacion sin que el operador tenga que intervenir, vale decir, a traves del programa se genera el nombre del archivo y la carpeta donde debe quedar. Estoy tratando de utilizar CUTE PDF, pero aparece para cada archivo que se genera el cuadro de dialogo guardar como y no encuentro la forma de hacerlo desaparecer. Llevo varios dias buscando una solucion y hasta ahora no la he podido encontrar. AGradecere si alguien me hecha una mano con el tema. Gracias.
JLSS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Integrar CUTEPDF A VB.NET

Publicado por Miguel (354 intervenciones) el 06/10/2014 21:34:31
con qué código generas el PDF?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por juan luis soler (23 intervenciones) el 06/10/2014 22:27:49
Si te refieres a las instrucciones utilizadas en el programa son:

printdocument.printersettings.printername="CutePDF Writer"
printdocument.printersettings.printtofile= true

para asignar la impresora e indicar que se va a grabar a un archivo, y en un loop de proceso previo a printdocument.print asigno el nombre del archivo:

printdocument.printersettings.printfilename="d:\carpeta\nombre.pdf".

He logrado generar el archivo en la carpeta, pero ahora me sale el mensaje que no se puede abrir porque no es un tipo de archivo admitido o esta dañado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por Miguel (354 intervenciones) el 07/10/2014 00:24:04
Te comento que para generar PDF's utilizo una librería llamada "iTextSharp", si pudieras explicar de dónde proviene la información que deseas enviar al PDF puedo ayudarte a usar esta librería.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por juan luis (23 intervenciones) el 07/10/2014 04:22:33
Accedo los datos desde una base access y se emite una hoja con el detalle de haberes y descuentos que conforman la liquidacion de honorarios. Se debe generar un archivo pdf por cada profesional al que se le emite la liquidacion. Posteriormente hay un proceso que envia estos archivos como adjuntos via correo electronico a cada uno de los profesionales. Todo el problema se me genero porque en la instalacion donde va a funcionar el sistema no se instala la impresora de adobe acrobat en windows 8. Te agradezco desde ya tu colaboracion. He probado con doPDF, con PDFCreator y con CutePDF pero en ninguno he podido encontrar la forma de generar el archivo pdf enviando los parametros necesarios desde el programa.

Te adjunto la rutina. PrtLiqHono.print corresponde al metodo print de vb.net donde estan las rutinas que imprimen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
If pdlgLiqHono.ShowDialog() = Windows.Forms.DialogResult.OK Then
    Borra_Boletas_Mespro(AAMMPro)
    For idx = 0 To NReg - 1
    swNoHab = False
    swnoMed = False
    swnoSoc = False
    wsRutProc = rsRutLiq.Tables("RUTLIQ").Rows(idx)("rutprof")
    prtLiqHono.DocumentName = txtCarpeta.Text & "\" & wsRutProc & ".pdf"
    prtLiqHono.PrinterSettings.PrintFileName = txtCarpeta.Text & "\" & wsRutProc & ".pdf"
    Accesa_Produccion_Rut(wsRutProc)
    If swNoHab Then Continue For
    Accesa_Datos_Medico(wsRutProc)
    If swnoMed Then Continue For
    Accesa_Datos_SocMed(rsHabLiq.Tables("HABLIQ").Rows(0)("hdrutsoc"))
    If swnoSoc Then Continue For
    wsRetenc = rsMedicos.Tables("DATMED").Rows(0)("medret")
    prtLiqHono.Print()
    Graba_Liquidacion()
    Next
    lblMensajes.Text = "Proceso Concluido"
Else
    MsgBox("Proceso de Impresión cancelado por el usuario", MsgBoxStyle.Information, "Impresión Cancelada")
    Desbloquea_Detalle()
    F1IngDesc.Enabled = True
    Exit Sub
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por Miguel (354 intervenciones) el 07/10/2014 05:42:21
Mira, yo lo que hago es pasar los datos a un DataGridView, y con esos datos escribo el PDF...

Primero agregar la referencia de la librería "iTextSharp" (que adjunté)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Private Sub GenerarPDFdeDGV(DGV As DataGridView, EliminarUltimaFilaDeDGV As Boolean)
 
        Dim SavePDF As New SaveFileDialog
        SavePDF.Title = "Generar PDF"
        SavePDF.Filter = "Archivo PDF|*.pdf"
        If SavePDF.ShowDialog = Windows.Forms.DialogResult.OK Then
        Else
            Exit Sub
        End If
 
        Try
            Me.Cursor = Cursors.WaitCursor
 
            Dim documentoPDF As New Document(PageSize.A4, 0, 0, 40, 40)
            PdfWriter.GetInstance(documentoPDF, New FileStream(SavePDF.FileName, FileMode.Create))
 
            documentoPDF.Open()
 
            ''''TABLA''''
            Dim FilasDGV As Integer
            Select Case EliminarUltimaFilaDeDGV
                Case True
                    FilasDGV = DGV.Rows.Count - 2
                Case False
                    FilasDGV = DGV.Rows.Count - 1
            End Select
            Dim iCelda As String
            Dim ColumnasDGV As Integer = DGV.Columns.Count
 
            Dim tabla = New PdfPTable(ColumnasDGV)
 
            For iC As Integer = 0 To ColumnasDGV - 1
                Dim iEncabezado As String = DGV.Columns(iC).HeaderText
                Dim Encabezado = New PdfPCell(New Phrase(iEncabezado, FontFactory.GetFont(FontFactory.HELVETICA, 10, iTextSharp.text.Font.BOLD, pdf.CMYKColor.WHITE)))
                Encabezado.HorizontalAlignment = 1
                Encabezado.BackgroundColor = iTextSharp.text.BaseColor.RED
                tabla.AddCell(Encabezado)
            Next
 
            For i As Integer = 0 To FilasDGV
                For N As Integer = 0 To ColumnasDGV - 1
                    iCelda = DGV.Rows(i).Cells.Item(N).Value
                    tabla.AddCell(New Phrase(iCelda, FontFactory.GetFont(FontFactory.HELVETICA, 9, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK)))
                Next
            Next
 
            documentoPDF.Add(tabla)
 
            'Añadimos los metadatos para el fichero PDF
            documentoPDF.AddAuthor(txtAutor.Text)
            documentoPDF.AddCreator("PDFGenerator")
            documentoPDF.AddTitle(txtTitulo.Text)
            documentoPDF.AddCreationDate()
 
            'Cerramos el objeto documento, guardamos y creamos el PDF
            documentoPDF.Close()
 
            Me.Cursor = Cursors.Default
If System.IO.File.Exists(SavePDF.FileName) Then
                If MsgBox("El fichero PDF fué generado correctamente. " + _
                       "¿Desea abrir el fichero PDF resultante?",
                       MsgBoxStyle.Question + MsgBoxStyle.YesNo, "PDF Generado") = MsgBoxResult.Yes Then
                    'Abrimos el fichero PDF con la aplicación asociada
                    System.Diagnostics.Process.Start(SavePDF.FileName)
                    txtTitulo.Text = Nothing
                    txtAutor.Text = Nothing
                End If
            Else
                MsgBox("El fichero PDF no se ha generado, " + _
                       "compruebe que tiene permisos en la carpeta de destino.",
                       MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Error")
            End If
 
        Catch ex As Exception
            Me.Cursor = Cursors.Default
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
        End Try
 
  End Sub

Puedes modificar o ajustar el código a tus necesidades... con la librería puedes hacer una amplia variedad de cosas.
Espero que te sirva de algo.

Saludos cordiales,
Miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Integrar CUTEPDF A VB.NET

Publicado por juan luis (23 intervenciones) el 07/10/2014 15:11:33
Excelente Miguel muchas gracias. Me parece bien la solución, voy a buscar mas documentacion del itextsharp. Por de pronto una consulta mas, ya que veo que no se usa el objeto printdocument de vb..... ¿como se hacen los rectangulos y las lineas?, o mas general aun, donde puedo encontrar una buena documentacion de itextsharp?..... y con esto no te molesto mas.

JLSS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por Miguel (354 intervenciones) el 07/10/2014 15:35:07
Hola Juan Luis, me alegra que te haya servido la info. Encontré un sitio que creo te servirá para introducirte a la librería....

http://ofimatica-programacion.blogspot.com/search/label/iTextSharp

y ésta página específicamente para las líneas y rectángulos...

http://ofimatica-programacion.blogspot.com/2012/06/itextsharp-y-microsoft-visual-basic_1450.html


Cualquier otra cosa consulta en la plataforma, haremos lo posible para darte una solución.
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Integrar CUTEPDF A VB.NET

Publicado por juan luis (23 intervenciones) el 07/10/2014 17:49:31
Reitero mis agradecimientos. Voy a revisar las direcciones.

JLSS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar