Risolto cambiando strada.
Viste le difficoltà nell'arrivare ad una soluzione utilizzando ReportViewer, ho provato ad utilizzare CrystalReport ed ho ottenuto quello che mi serve. Innanzitutto devo dire che Crystal Report offre molto di più e comunque non è così complicato da utilizzare, poi, che il vero problema è stato soprattutto la mia pigrizia nel non voler provare strade nuove. Questo è il vero errore!
Comunque, una volta costruito il Report con Crystal Report, per stamparlo in PDF bastano queste poche righe di codice:
codice:
Imports System.IO
Imports System.ComponentModel
Imports System.Threading
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class MiaClass
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Cursor = Cursors.WaitCursor
Application.DoEvents()
Dim Rpt As New ReportDocument
Dim DOp As New DiskFileDestinationOptions
' Per aprire il File PDF sul Desktop
Dim Dest As String = "C:\Users\" & Environment.UserName & "\Desktop\MioFile.pdf"
' Occorre indicare il path completo del Report: "C:\MiaDirectory\....." nel mio caso
Rpt.Load("C:\MiaDirectory\MioProgetto\MioProgetto\CrystalReport1.rpt", CrystalDecisions.[Shared].OpenReportMethod.OpenReportByDefault)
DOp.DiskFileName = Dest
With Rpt.ExportOptions
.DestinationOptions = DOp
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
Rpt.Refresh()
Application.DoEvents()
Rpt.Export()
' Aspetta che il Report venga creato e poi lo apre a video in PDF
Do Until System.IO.File.Exists(Dest) = True
Thread.Sleep(100)
Loop
Process.Start(Dest)
Cursor = Cursors.Default
End Sub
End Class
senza nemmeno la necessità di aprire il Report in una Form.
Anche l'eseguibile funziona senza problemi, magari è solo un poco lento, però,...
NOTE: Attenzione ad istanziare gli Imports necessari; probabilmente quelli che ho indicato sono troppi, ma mi servivano anche per altre Sub.
Io ho utilizzato .NET Framework 4.6.1
Spero possa servire.
Saluti.