none
Druckfehler: Illegal characters in path. RRS feed

  • Allgemeine Diskussion

  • Hallo ,
    wie schon vom Titel her zu erkennen ist, habe ich Probleme beim Ausdrucken. Das Problem besteht jedoch nur auf vereinzelten Rechnern, bei ca. 1 von 50 PCs funktioniert es nicht.
    Dort hilft nur die Neuinstallation des Systems, auch ein reinstallieren des .Net – Frameworks will nicht helfen.

    Vielleicht kennt einer das Problem oder eine alternative Druckmöglichkeit.

    Ich möchte ein FlowDocument ausdrucken und verwende dazu den PrintDialog von Microsoft, welcher jedoch die Fehlermeldung „Illegal characters in path.“ ausspuckt.
    Bei der Funktion „CloneFlow” handelt es sich um eine von mir entwickelte Lösung, welche einfach nur eine Kopie des FlowDocument erzeugt, da sonst nach dem Druckvorgang das FlowDocument verändert wäre.

    Der Fehler tritt hier auf:
    at System.IO.Path.CheckInvalidPathChars(String path)
    at System.IO.Path.Combine(String path1, String path2)

    Dim PrintDlg As New PrintDialog
     
    If PrintDlg.ShowDialog = True Then
     'Kopie des Flowdocuments anlegen, so dass die Ansicht nicht verändert wird.
     Dim FlowD As New FlowDocument
     FlowD = CloneFlow(Me.Document)
     
     With FlowD
      .ColumnGap = 0
      .PageHeight = PrintDlg.PrintableAreaHeight
      .PageWidth = PrintDlg.PrintableAreaWidth
      .ColumnWidth = PrintDlg.PrintableAreaWidth
      .PagePadding = New Thickness(Me._RandLinks, Me._RandOben, Me._RandRechts, _
       Me._RandUnten)
     End With
     
     Dim PageSize As Size = New Size(PrintDlg.PrintableAreaWidth, _
      PrintDlg.PrintableAreaHeight)
     Dim PaginatorSource As IDocumentPaginatorSource = FlowD
     PrintDlg.PrintDocument(PaginatorSource.DocumentPaginator, Me.Title)
    End If
    


    Ich kann auch die komplette Exception geben, die steht in einer log. :D

    Ich hoffe, dass einer weiterhelfen kann.

    Freitag, 1. Juli 2011 21:06

Alle Antworten

  • Hallo,

    ja, die komplette Exception (bitte die inneren Exceptions nicht vergessen) wären durchaus hilfreich. Tritt der Fehler nur bei bestimmten Windows Versionen auf, oder ist das querbeet?

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Freitag, 1. Juli 2011 21:18
  • Hallo,

    das Problem tritt bei unserer Applikation auch auf. Ich konnte das Problem auf ungültige Einträge in der Registry, genauer in den Fonts.

    Es sieht so aus, dass PrintDialog.PrintDocument erst eine Liste von Fonts anlegt und wenn diese ungültige Werte enthält mit einer Fehlermeldung abbricht.

    Abschnitt der Inner-Exeption:

       InnerException:
          ===============
          Message:    Illegal characters in path.
          Source:     mscorlib
          StackTrace:    at System.IO.Path.CheckInvalidPathChars(String path)
       at System.IO.Path.Combine(String path1, String path2)
       at Microsoft.Internal.GDIExporter.BuildFontList(String fontdir)
       at Microsoft.Internal.GDIExporter.CGDIDevice.CheckFont(GlyphTypeface typeface, String name)
       at Microsoft.Internal.GDIExporter.CGDIRenderTarget.CreateFontW(GlyphRun pGlyphRun, Double fontSize, Double scaleY)
       at Microsoft.Internal.GDIExporter.CGDIRenderTarget.RenderTextThroughGDI(GlyphRun pGlyphRun, Brush pBrush)
       at Microsoft.Internal.GDIExporter.CGDIRenderTarget.DrawGlyphRun(Brush pBrush, GlyphRun glyphRun)

    Wird der fehlerhafte Eintrag berichtigt oder gelöscht funktioniert das Drucken.

    Gibt es eine Möglichkeit, dass PrintDialog.PrintDocument fehlerhafte Einträge ignoriert? Es kann ja nicht sein, dass das Drucken abbricht, nur weil irgendwo ein fehlerhafter Font-Eintrag existiert.

    Mfg

    Christian Güth

    Montag, 10. September 2012 08:43