下記のようなコードを.net famework で作成し、xpsファイルを作成します。次にxpsファイルをxpsファイルビューアーで開いて印刷を実行すると途中でエラーが発生することがありあます。
環境によっては、発生しないこともあり、Windwos7 32bit でレーザープリンタで印刷した場合に現象を確認しました。
下記コードでGraphicsPath で多数の線を追加してからDraw しているのが原因みたいです。DrawLineで書き直したら改善しました。
今回の場合のようにxpsファイルの印刷時にプリンタdllで例外エラーとなる場合、参考にしてみてください。
印刷エラー
Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click Dim doc As New PrintDocument() doc.PrinterSettings.PrinterName = "Microsoft XPS Document Writer" AddHandler doc.PrintPage, AddressOf Me.doc_PrintPage doc.Print() End Sub Private Sub doc_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) Dim path As GraphicsPath Dim font As Font Dim pen As Pen Dim i, j As Integer Dim x1, x2, y1, y2, offsetx, offsety As Single Dim leftMargin As Single = ev.MarginBounds.Left / 100 * 25.4 Dim topMargin As Single = ev.MarginBounds.Top / 100 * 25.4 Dim boxWidth As Single = 140 Dim boxHeight As Single = 220 ev.Graphics.PageUnit = GraphicsUnit.Millimeter font = New Font("Arial", 1) pen = New Pen(ColorTranslator.FromHtml("#FFE0E0E0"), 0.1) path = New GraphicsPath() x1 = leftMargin y1 = topMargin x2 = leftMargin + boxWidth y2 = topMargin + boxHeight '横線 For i = 0 To 40 path.StartFigure() offsety = i * (boxHeight / 40) path.AddLine(x1, y1 + offsety, x2, y1 + offsety) Next '縦線 For i = 0 To 40 path.StartFigure() offsetx = i * (boxWidth / 40) path.AddLine(x1 + offsetx, y1, x1 + offsetx, y2) Next ev.Graphics.DrawPath(pen, path) ev.HasMorePages = False path.Dispose() font.Dispose() pen.Dispose() End Sub