Neue Denksportaufgabe:
Ich habe 2 ähnliche Programme, beide besitzen eine RichTextbox (RichtextboxEx.RichTextBoxEx) mit geladenem Dokument.
Beide haben eine Druckfunktion, mit der das RichTextBoxEx.Document gedruckt oder wahlweise mit einem PDF-Drucker als PDF gespeichert werden kann, z.B. "Microsoft Print To PDF".
In beiden Programmen verwende ich 1:1 denselben Code zur Ausgabe (Variablen- und Objektnamen unterscheiden sich, aber Namen sind Schall und Rauch).
In dem Code wird bei PDF-Erstellung dem Dokument ein Namen zugewiesen, der dann im Speichern-Unter-Dialog als Dateinamen vorgegeben wird. Oder werden soll.
Und da liegt das Problem: Im einen Programm funktioniert das, im anderen nicht. Und ich finde keinen Unterschied
Zum Beweis mal beide Codes nebeinander kopiert:
und hier nochmal einer im Klartext (hier der nicht funktionierende)
Code:
Sub Output(Optional DoCreatePDF As Boolean = False)
Dim oldPrintername As String = ""
If PDFPrintername = "" And DoCreatePDF Then Exit Sub 'Drucken oder PDF erstellen
If DoCreatePDF Then
'PDF:
SetDocumentName()
With Mainform.PrintRTFDocument
oldPrintername = .PrinterSettings.PrinterName
.PrinterSettings.PrinterName = PDFPrintername
End With
Else
'Drucken mit Druckdialog:
With Mainform.PrintDialog1
.PrinterSettings = Mainform.PrintRTFDocument.PrinterSettings
If .ShowDialog() = Windows.Forms.DialogResult.OK Then
' Einstellungen von Dialog an PringDocument übergeben
Mainform.PrintRTFDocument.PrinterSettings = .PrinterSettings
Else
Exit Sub
End If
End With
End If
'Sowohl beim Drucken als auch bei PDF:
With Mainform.PrintRTFDocument.DefaultPageSettings.Margins()
.Bottom = 20
.Top = 20
.Left = 70
.Right = 50
End With
iPages = 0
initPrint = True
'Druck:
Mainform.PrintRTFDocument.Print()
If DoCreatePDF Then
'Druckername wieder herstellen
Mainform.PrintRTFDocument.PrinterSettings.PrinterName = oldPrintername
End If
End Sub
Public Sub SetDocumentName()
With Mainform.PrintRTFDocument
.DocumentName = "Bremsschema"
If Mainform.tbSchemanummer.Text <> "" Then
.DocumentName = Mainform.tbSchemanummer.Text
End If
'If UseLanguageSuffix Then
' .DocumentName = .DocumentName & "_" & Mainform.lbFormlanguage.Text
'End If
End With
End Sub
Ich habs natürlich debuggt, bei SetDocumentName wird auf jeden Fall ein Name gesetzt.
Ich bin mit meinem Latein am Ende , aber vielleicht fällt ja euch Experten noch was ein?
Vielen Dank schon mal fürs Nachdenken
------------------
Klaus
http://www.alko-tech.com | mein Gästebuch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP