264 messaggi dal 06 settembre 2002
Ciao,
pensavo che stampare un pdf fosse una cosa banale, ma evidentemente mi sbagliavo.

Ho creato questa funzione:
        Public Function PrintPDF(ByVal PDFFile As String, ByVal PrinterName As String, ByVal Timeout As Integer) As Integer

            Dim pPrinterSettings As New System.Drawing.Printing.PrinterSettings
            Dim intTimeout As Integer = 1
            Dim pPrint As New Process()

            If PrinterName.Trim.Length = 0 Then
                PrinterName = (New System.Drawing.Printing.PrinterSettings).PrinterName
            End If

            pPrinterSettings.PrinterName = PrinterName
            pPrinterSettings.Copies = 2

            Try
                Dim param As String = String.Format("/n /t ""{0}"" ""{1}""", PDFFile, PrinterName)
                Dim starter As New ProcessStartInfo("AcroRd32.exe", param)
                
                pPrint.StartInfo.UseShellExecute = True
                pPrint.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
                pPrint.StartInfo.CreateNoWindow = True
                pPrint.StartInfo.Verb = "print"

                pPrint.StartInfo = starter

                pPrint.Start()
                pPrint.CloseMainWindow()
                Do While Timeout > 0 AndAlso Not pPrint.HasExited
                    System.Threading.Thread.Sleep(1000)
                    Timeout -= 1
                Loop

                If Not pPrint.HasExited Then
                    Debug.Print("Killing process")
                    pPrint.Kill()
                End If

                Debug.WriteLine("Closing process")
                pPrint.Close()

            Catch ex As Exception
                MsgBox(ex.Message)

            End Try

            Return 0

        End Function


Stampa, ma si attiva per un secondo l'Adobe Acrobat Reder ... fa veramente ribrezzo.

Ho cercato poi di utilizzare la libreria AcroPDFLib

        Dim AcrobatPDFOCX As New AcroPDFLib.AcroPDF
        AcrobatPDFOCX.src = "fiches2011.pdf"
        AcrobatPDFOCX.printAll()


Questo è l'errore che genera quando tenta di istanziare l'oggetto:

Recupero della class factory COM per il componente con CLSID {CA8A9780-280D-11CF-A24D-444553540000} non riuscito a causa del seguente errore: 80040154.

Se qualcuno ha una dritta ... (anche due magari ;)).

Grazie

>*************************************************<
>** se fossi mondo monderei lo mondo **<
>*************************************************<
264 messaggi dal 06 settembre 2002
Per risolvere l'errore
Recupero della class factory COM per il componente con CLSID {CA8A9780-280D-11CF-A24D-444553540000} non riuscito a causa del seguente errore: 80040154."


ecco un video http://www.youtube.com/watch?v=pDtyGns6mOw

Ora l'istanza la crea, l'istruzione
AcrobatPDFOCX.LoadFile(File)


genera il seguente errore:
System.InvalidCastException è stata individuata
  Message=Impossibile eseguire il cast di oggetti COM di tipo 'AcroPDFLib.AcroPDFClass' in tipi di interfaccia 'AcroPDFLib.IAcroAXDocShim'. L'operazione non è stata completata perché la chiamata QueryInterface sul componente COM per l'interfaccia con IID '{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}' non è riuscita a causa del seguente errore: Interfaccia non supportata. (Eccezione da HRESULT: 0x80004002 (E_NOINTERFACE)).
  Source=Interop.AcroPDFLib
  StackTrace:
       in AcroPDFLib.AcroPDFClass.LoadFile(String fileName)
       in AutomhaSoftwareEngineering.EventsServices.Events.OnTimerToElaborateEvent() in ...

>*************************************************<
>** se fossi mondo monderei lo mondo **<
>*************************************************<
264 messaggi dal 06 settembre 2002
La soluzione è usare un Ghostscript ...

Qui un link utilissimo!!!

http://www.codeproject.com/KB/applications/PDFViewerControl.aspx


Ciaociao!

>*************************************************<
>** se fossi mondo monderei lo mondo **<
>*************************************************<

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.