''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' Copyright (c) GrapeCity inc. All rights reserved.
''
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 をロードし、PDF 全体を" +
"マルチページ TIFF として保存します。" +
"また、各ページを個別のJPEG画像として保存します。" +
"作成されたすべての画像がこのドキュメントに添付されます。",
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
'' PDF ドキュメントを保存します。
doc.Save(stream)
'' 一時ファイルを削除します。
tfiles.ForEach(Sub(tf_) File.Delete(tf_))
Return doc.Pages.Count
End Function
End Class