SaveAsImage.vb
'' 完毕:
Imports System.IO
Imports System.Linq
Imports System.Collections.Generic
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Drawing

'' 此示例演示如何将现有 PDF 页面另存为图像。
'' 加载由SlidePages示例生成的PDF,然后保存
'' 整个 PDF 作为多页 TIFF。它还保存每个页面
'' 作为单独的 JPEG 图像。
'' 所有生成的图像都附加到生成的 PDF 中。
'' 
'' 还支持其他图像格式:PNG、BMP、GIF。
Public Class SaveAsImage
    Public Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Dim page = doc.NewPage()

        Util.AddNote(
            "我们加载“幻灯片页面”示例生成的 PDF," +
            "",
            page)

        '' 跟踪临时文件,退出时删除它们:
        Dim tfiles = New List(Of String)

        Using fs = New FileStream(Path.Combine("Resources", "PDFs", "SlidePages.pdf"), FileMode.Open, FileAccess.Read)
            Dim origDoc = New GcPdfDocument()
            origDoc.Load(fs)
            '' 将加载的 PDF 的所有页面保存为多页 TIFF:
            Dim tf = Path.GetTempFileName()
            origDoc.SaveAsTiff(tf)
            Dim fspec = FileSpecification.FromEmbeddedFile(EmbeddedFileStream.FromFile(doc, tf))
            fspec.File.FileName = "SlidePages.tiff"
            doc.EmbeddedFiles.Add(tf, fspec)
            tfiles.Add(tf)

            '' 将加载的 PDF 的每一页保存为 JPEG:
            For Each p In origDoc.Pages
                tf = Path.GetTempFileName()
                p.SaveAsJpeg(tf)
                fspec = FileSpecification.FromEmbeddedFile(EmbeddedFileStream.FromFile(doc, tf))
                fspec.File.FileName = $"Page_{p.Index}.jpeg"
                doc.EmbeddedFiles.Add(tf, fspec)
                tfiles.Add(tf)
            Next

        End Using
        '' 完毕:
        doc.Save(stream)
        '' 清理:
        tfiles.ForEach(Sub(tf_) File.Delete(tf_))
        Return doc.Pages.Count
    End Function
End Class