AdjustCoords.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.Annotations
'' このサンプルでは、Page.AdjustCoordinates()メソッドを使用して、
'' GcPdfDocumentに読み込まれ、かつそのページに不明な任意の変換が適用された
'' 可能性があるPDFの、視覚座標(DsPdf の規則に従ってページの左上隅から
'' 測定された座標)を正しい座標に変換する方法を示しています。調整された
'' 座標は、注釈の配置(この場合は墨消し)などに使用することができます。
''
'' このサンプルで使用されたPDFには、時計回りに90度回転させた請求書の
'' サンプルのスキャンを含むページがあります。PDFのページを270度
'' 回転させて補正しています(ですので、視覚的にページの向きが
'' 正しい縦向きになります)。
Public Class AdjustCoords
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Using fs = File.OpenRead(Path.Combine("Resources", "PDFs", "invoice-scan-rot270.pdf"))
doc.Load(fs)
If doc.Pages.Count <> 1 Then
Throw New Exception("予期せぬエラー:請求書のサンプルは1ページちょうどでなければなりません。")
End If
Dim page = doc.Pages(0)
'' PDFページの左上隅から計測された、墨消しする領域の境界の矩形です。
'' この矩形をそのまま使用すると、対象となるコンテンツを見失います。
Dim rectToRedact = New RectangleF(20, 170, 200, 40)
'' ページ変換(この場合は回転)の可能性を考慮に入れて調整された
'' 境界の矩形です。
Dim adjusted = page.AdjustCoordinates(rectToRedact)
'' 注意: 'adjusted'の代わりに'rectToRedact'を使用すると、
'' 墨消しの対象(顧客名/住所)を見失います。
Dim redact = New RedactAnnotation() With
{
.Rect = adjusted,
.OverlayFillColor = Color.Orange,
.OverlayText = "墨消しされています",
.Page = page
}
'' 墨消しを適用します。
doc.Redact(redact)
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Using
End Function
End Class