在多页上打印图像

Print images on multiple pages

我的文件夹中有条形码图像,我想像下图一样打印它们。但问题是我无法让图像的其余部分转到下一页。

在这种情况下,我有 22 张图片,但纸张只能容纳 20 到 21 张(最后一张图片被裁掉了边距)。我的问题是,如果下一页有很多图片,我该如何使剩下的 20 秒和 20 秒?

barcode images

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage

    Dim extensions As New List(Of String)
    extensions.Add("*.jpg")
    ' And so on, until all are in...

    Dim fileCount As Integer
    For i As Integer = 0 To extensions.Count - 1
        fileCount += Directory.GetFiles(Application.StartupPath & "\temp\", extensions(i), SearchOption.AllDirectories).Length
    Next

    Dim imgPictures(fileCount) As Image

    For i As Integer = 1 To fileCount
        imgPictures(i) = Bitmap.FromFile(Application.StartupPath & "\temp\" & i & ".jpg")
        e.Graphics.DrawImage(imgPictures(i), 50, 50 * i)
        If i = 20 Then
            e.HasMorePages = True
        ElseIf i = fileCount Then
            e.HasMorePages = False
        End If
    Next
End Sub

经过几个小时的尝试,终于成功了,向jmcilhinney大声呼救,帮大忙

Dim recordCount As Integer

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim lineCount As Integer
    Dim extensions As New List(Of String)
    extensions.Add("*.jpg")
    ' And so on, until all are in...

    Dim fileCount As Integer
    For i As Integer = 0 To extensions.Count - 1
        fileCount += Directory.GetFiles(Application.StartupPath & "\temp\", extensions(i), SearchOption.AllDirectories).Length
    Next

    Dim imgPictures(fileCount) As Image
    For i As Integer = 1 To fileCount
        recordCount += 1
        lineCount += 1
        imgPictures(recordCount) = Bitmap.FromFile(Application.StartupPath & "\temp\" & recordCount & ".jpg")
        e.Graphics.DrawImage(imgPictures(recordCount), 50, 50 * i)
        If lineCount >= 20 Then
            Exit For
        ElseIf recordCount = fileCount Then
            Exit For
        End If
    Next
    If recordCount = fileCount Then
        e.HasMorePages = False
    ElseIf lineCount = 20 Then
        e.HasMorePages = True
    End If
End Sub

Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    recordCount = 0
End Sub