StampImage.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Numerics
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.Annotations
Imports GrapeCity.Documents.Pdf.Graphics
Imports GrapeCity.Documents.Drawing
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing
'' このサンプルは、FormXObject を使用して注釈にカスタム外観ストリームを
'' 追加する方法を示します。
'' 既存の PDF が読み込まれ、ドキュメントのページがループされます。
'' 各ページで、StampAnnotation と FormXObject を作成し、
'' 注釈の通常のデフォルト外観ストリームに割り当てます。
'' 次に、Transform メソッドと DrawImage メソッドを使用して、
'' スタンプを表す半透明の PNG 画像を FormXObject の Graphics に描画します。
Public Class StampImage
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
'' スタンプ注釈を追加する既存の PDF を読み込みます。
'' (ドキュメントの読み込みの詳細については、LoadPDF を参照してください)
Dim jsFile = Path.Combine("Resources", "PDFs", "diodocs_flyer.pdf")
Using fs = New FileStream(jsFile, FileMode.Open, FileAccess.Read)
doc.Load(fs)
Dim rect = New RectangleF(PointF.Empty, doc.Pages(0).Size)
'' スタンプの外観として使用される FormXObject を作成します。
Dim fxo = New FormXObject(doc, rect)
'' リソースからイメージを取得し、FormXObject のグラフィックスに描画します。
'' (GcGraphics.Transform の使用方法の詳細については、Transformations を参照してください)
Dim img = GCDRAW.Image.FromFile(Path.Combine("Resources", "ImagesBis", "circular-450x144.png"))
Dim center = New Vector2(fxo.Bounds.Width / 2, fxo.Bounds.Height / 2)
fxo.Graphics.Transform =
Matrix3x2.CreateRotation((-35 * Math.PI) / 180.0F, center) *
Matrix3x2.CreateScale(3, center)
fxo.Graphics.DrawImage(img, fxo.Bounds, Nothing, ImageAlign.CenterImage)
'' ページをループし、各ページにスタンプを追加します。
For Each page In doc.Pages
'' ページ全体に StampAnnotation を作成します。
Dim stamp = New StampAnnotation() With
{
.Icon = StampAnnotationIcon.Draft.ToString(),
.Name = "回覧用",
.page = page,
.rect = rect,
.UserName = "ユーザーA"
}
'' すべてのページで同じ FormXObject を再利用します。
stamp.AppearanceStreams.Normal.Default = fxo
Next
''
doc.Save(stream)
End Using
'' PDF ドキュメントを保存します。
Return doc.Pages.Count
End Function
End Class