TextToOutlines.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
'' 
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.AcroForms
Imports GrapeCity.Documents.Pdf.Graphics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text

'' このサンプルは、既存のPDF内のすべてのテキストについて、フォントのアウトライン化を行う方法を示しています。
'' 結果として得られるPDFは元のPDFと全く同じように見えますが、その中のすべてのグリフはGraphicsPathとして
'' レンダリングされます。この方法は、テキストのコピーや検索を不可とするために使用することができます。
'' なお、結果として得られるPDFにはフォントが存在しないことに注意してください。
'' このサンプルで使用した元のPDFは、 PaginatedTextによって生成されたものです。
Public Class TextToOutlines
    Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Using fs = File.OpenRead(Path.Combine("Resources", "PDFs", "StrongInTheRain.pdf"))
            '' 元となるPDFを開き、それを一時ドキュメントに読み込みます。
            Dim srcDoc = New GcPdfDocument()
            srcDoc.Load(fs)
            '' 元となるPDFのすべてのページを新しいPDFのページに描画します。
            For Each srcPage In srcDoc.Pages
                Dim page = doc.Pages.Add(srcPage.Size)
                '' Graphics.DrawTextAsPathをtrueに設定すると、すべてのグリフがフォントを使ってテキストを
                '' レンダリングするのではなく、GraphicsPathとして描画されます。
                page.Graphics.DrawTextAsPath = True
                '' ターゲット上に元となるページを描画します。
                srcPage.Draw(page.Graphics, srcPage.Bounds)
            Next
            '' PDF ドキュメントを保存します。
            doc.Save(stream)
            Return doc.Pages.Count
        End Using
    End Function
End Class