[]
DioDocs for PDF では、Adobeによって標準化されたさまざまな注釈が提供されています。以下のセクションでは、注釈の種類とその実装方法について説明します。
テキスト注釈は、PDFドキュメント内の特定の位置にアタッチされた付箋を表します。この注釈は、閉じた状態ではアイコンとして表示され、クリックすると、関連付けられたテキストを含むポップアップウィンドウとして表示されます。表示するポップアップウィンドウのテキストのフォントサイズとフォントがビューアアプリケーションによります。DioDocs for PDFに用意されたTextAnnotation クラスを使用して、ユーザーがPDFドキュメント内にテキスト注釈を追加できます。

以下のコードは、PDFドキュメントにテキスト注釈を追加する方法を示します。
public void CreateTextAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 200, 50);
page.Graphics.DrawString("最初に開いた赤いテキスト注釈がこのメモの右側に配置されます。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//TextAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var textAnnot = new TextAnnotation()
{
UserName = "山田花子",
Contents = "これは赤い色のテキスト注釈です。",
PdfRect = new RectangleF(rc.Right, rc.Top, 72 * 2, 72),
Color = Color.Red,
Open = true
};
page.Annotations.Add(textAnnot); //Add the text annotation
doc.Save("TextAnnotation.pdf");
}フリーテキスト注釈は、ページ内にテキストを直接表示します。テキストはポップアップウィンドウに表示するではなく、表示されたままになります。DioDocs for PDFに用意された FreeTextAnnotation クラスを使用して、ユーザーがPDFドキュメントにフリーテキスト注釈を追加できます。

以下のコードは、PDFドキュメントにフリーテキスト注釈を追加する方法を示します。
public void CreateFreeTextAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 200, 50);
page.Graphics.DrawString
("青いフリーテキスト注釈が下右に配置され、 " +
"そこからこのメモへの吹き出しがあります。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//FreeTextAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var freeAnnot = new FreeTextAnnotation()
{
PdfRect = new RectangleF(rc.Right + 18, rc.Bottom + 9, 72 * 2, 72),
CalloutLine = new PointF[]
{
new PointF(rc.Left + rc.Width / 2, rc.Bottom),
new PointF(rc.Left + rc.Width / 2, rc.Bottom + 9 + 36),
new PointF(rc.Right + 18, rc.Bottom + 9 + 36),
},
LineWidth = 1,
LineEndStyle = LineEndingStyle.OpenArrow,
LineDashPattern = new float[] { 8, 4 },
Contents = "これはフリーテキスト注釈であり、引き出し線が左側のメモに行きます。",
Color = Color.LightSkyBlue,
};
page.Annotations.Add(freeAnnot); //フリーテキスト注釈を追加します
doc.Save("FreeTextAnnotation.pdf");
}線注釈は、ページ内に直線を表示します。この線をクリックすると、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意された LineAnnotation クラスを使用して、ユーザーがPDFに線注釈を追加できます。

以下のコードは、PDFドキュメントに線注釈を追加する方法を示します。
public void CreateLineAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 250, 50);
page.Graphics.DrawString
("このサンプルは、線注釈を作成する方法を示します。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//LineAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var lineAnnot = new LineAnnotation()
{
UserName = "山田花子",
Start = new PointF(rc.X, rc.Bottom),
End = new PointF(rc.Right, rc.Bottom),
LineWidth = 3,
Color = Color.Red,
LeaderLinesLength = -15,
LeaderLinesExtension = 5,
LeaderLineOffset = 10,
Contents = "線注釈",
VerticalTextOffset = -20,
TextPosition = LineAnnotationTextPosition.Inline,
};
page.Annotations.Add(lineAnnot); //これは線注釈です。
doc.Save("LineAnnotation.pdf");
}四角形注釈は、ページ内に長方形や正方形を表示します。この注釈を開くと、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意されたSquareAnnotationクラスを使用して、ユーザーがPDFに四角形注釈を追加できます。
クラス名はSquareAnnotationですが、注釈の高さと幅が違う場合があり、正方形も長方形も描画できます。下記の画像は、四角形注釈を長方形として表します。

以下のコードは、PDFドキュメントに四角形注釈を追加する方法を示します。
public void CreateSquareAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 250, 50);
page.Graphics.DrawString
("四角形注釈は、このメモの周囲に幅2ポイントの橙色線で描画されます。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc); rc.Inflate(10, 10);
//SquareAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var squareAnnot = new SquareAnnotation()
{
UserName = "山田花子",
PdfRect = rc,
LineWidth = 3,
Color = Color.Orange,
RichText =
"<body><p>この<b>リッチテキスト</b>は、メモの周囲の四角形注釈に関連付けられます。</p></body>"
};
page.Annotations.Add(squareAnnot); //Add the square annotation
doc.Save("SquareAnnotation.pdf");
}円注釈は、ページ内に楕円形や円形を表示します。この注釈を開くと、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意されたCircleAnnotationクラスを使用して、ユーザーがPDFに円注釈を追加できます。
クラス名はCircleAnnotationですが、注釈の高さと幅が違う場合があり、楕円形も円形も描画できます。下記の画像は、円注釈を楕円形として表します。

以下のコードは、PDFドキュメントに円注釈を追加する方法を示します。
public void CreateCircleAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 120, 50);
page.Graphics.DrawString("円注釈は、幅2ポイントの緑色線で描画されます。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc); rc.Inflate(15, 24);
//CircleAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var circleAnnot = new CircleAnnotation()
{
UserName = "山田花子",
PdfRect = rc,
LineWidth = 3,
Color = Color.Green,
Contents = "これは円注釈です。",
};
page.Annotations.Add(circleAnnot); //円注釈を追加します
doc.Save("CircleAnnotation.pdf");
}多角形注釈は、ページ内に多角形を表示します。この注釈を開くと、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意された PolygonAnnotation クラスを使用して、ユーザーがPDFに多角形注釈を追加できます。

以下のコードは、PDFドキュメントに多角形注釈を追加する方法を示します。
public void CreatePolygonAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(140, 30, 160, 70);
page.Graphics.DrawString("多角形注釈は、このメモの周囲に幅2ポイントの紫色線で描画されます。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//PolygonAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var polygonAnnot = new PolygonAnnotation()
{
Points = new List<PointF>()
{
new PointF(rc.X-5, rc.Y),
new PointF(rc.X+75, rc.Y-10),
new PointF(rc.X+rc.Width-5, rc.Y),
new PointF(rc.X+rc.Width-5, rc.Y+rc.Height),
new PointF(rc.X-5, rc.Y+rc.Height),
},
UserName = "山田花子",
LineWidth = 3,
LineDashPattern = new float[] { 5, 2, 15, 4 },
Color = Color.Purple,
Contents = "これは多角形注釈です。",
};
page.Annotations.Add(polygonAnnot); //多角形注釈を追加します
doc.Save("PolygonAnnotation.pdf");
}スタンプ注釈は、ページにスタンプを押したように見えるグラフィック、画像またはテキストを表示します。この注釈を開くと、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意されたStampAnnotationクラスを使用して、ユーザーがPDFにスタンプ注釈を追加できます。

以下のコードは、PDFドキュメントにスタンプ注釈を追加する方法を示します。
public void CreateStampAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
var page = doc.NewPage();
//StampAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var stamp = new StampAnnotation()
{
Contents = "これはサンプルスタンプです。",
UserName = "山田花子",
Color = Color.SkyBlue,
Icon = StampAnnotationIcon.Confidential.ToString(),
CreationDate = DateTime.Today,
PdfRect = new RectangleF(100.5F, 110.5F, 72, 72),
};
page.Annotations.Add(stamp); //スタンプ注釈を追加します
doc.Save("StampAnnotation.pdf");
}インク注釈は、1つ以上の切断されたパスで構成されるフリーハンドの落書きを表します。この注釈を開くと、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意されたInkAnnotationクラスを使用して、ユーザーがPDFにインク注釈を追加できます。

以下のコードは、PDFドキュメントにインク注釈を追加する方法を示します。
public void CreateInkAnnotation()
{
var doc = new GcPdfDocument();
var page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 250, 50);
page.Graphics.DrawString("このサンプルはインク注釈を作成し、InkAnnotation.Pathsプロパティの使用方法を示します。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//InkAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var inkAnnot = new InkAnnotation()
{
UserName = "山田花子",
PdfRect = new RectangleF(rc.Left, rc.Bottom + 20, 72 * 5, 72 * 2),
LineWidth = 2,
Color = Color.DarkBlue,
Contents = "これはInkAnnotation.Pathsで描画されたインク注釈です。"
};
float x = 80, y = rc.Bottom + 24, h = 18, dx = 2, dy = 4, dx2 = 4, w = 10, xoff = 15;
// 落書きの「インク注釈」テキスト
// i
List<PointF[]> paths = new List<PointF[]>();
paths.Add(new[] { new PointF(x + w / 2, y), new PointF(x + w / 2, y + h),
new PointF(x + w, y + h * .7f) });
paths.Add(new[] { new PointF(x + w / 2, y), new PointF(x + w / 2, y + h),
new PointF(x + w, y + h * .7f) });
paths.Add(new[] { new PointF(x + w / 2 - dx, y - h / 3 + dy),
new PointF(x + w / 2 + dx, y - h / 3) });
// n
x += xoff;
paths.Add(new[] { new PointF(x, y), new PointF(x, y + h), new PointF(x, y + h - dy),
new PointF(x + w*0.7f, y),
new PointF(x + w - dx/2, y + h*.6f), new PointF(x + w, y + h), new PointF(x + w + dx2, y + h*.7f) });
// k
x += xoff;
paths.Add(new[] { new PointF(x, y - h / 3), new PointF(x, y + h) });
paths.Add(new[] { new PointF(x + w, y), new PointF(x + dx, y + h/2 - dy), new PointF(x, y + h/2),
new PointF(x + dx2, y + h/2 + dy), new PointF(x + w, y + h), new PointF(x + w + dx2, y + h*.7f) });
inkAnnot.Paths = paths;
page.Annotations.Add(inkAnnot);
doc.Save("InkAnnotation.pdf");
}添付ファイル注釈は、PDF内に埋め込まれたファイルへの参照を表します。この注釈はPDF内にペーパークリップアイコンとして表示されます。アイコンをダブルクリックすると、埋め込みファイルが開き、ユーザーがファイルをシステム内に表示または保存できます。DioDocs for PDFに用意されたFileAttachmentAnnotation クラスを使用して、ユーザーがPDFに添付ファイル注釈を追加できます。

以下のコードは、PDFドキュメントに添付ファイル注釈を追加する方法を示します。
public void CreateFileAttachmentAnnotation()
{
var doc = new GcPdfDocument();
var page = doc.NewPage();
var g = page.Graphics;
RectangleF rc = new RectangleF(50, 50, 400, 80);
g.DrawString("いくつかのファイルはサンプルの Resources / Imagesフォルダからこのページに添付されます。 添付ファイルが表示されない視聴者もいるため場所(通常クリック可能な)を示すために長方形が描画されます。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
var ip = new PointF(rc.X, rc.Bottom + 9);
var attSize = new SizeF(36, 12);
var gap = 8;
string[] files = new string[]
{
"tudor.jpg",
"sea.jpg",
"puffins.jpg",
"lavender.jpg",
};
foreach (string fn in files)
{
string file = Path.Combine("Resources", "Images", fn);
//FileAttachmentAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
FileAttachmentAnnotation faa = new FileAttachmentAnnotation()
{
Color = Color.FromArgb(unchecked((int)0xFFc540a5)),
UserName = "山田花子",
PdfRect = new RectangleF(ip.X, ip.Y, attSize.Width, attSize.Height),
Contents = "添付ファイル: " + file,
Icon = FileAttachmentAnnotationIcon.Paperclip,
File = FileSpecification.FromEmbeddedFile(EmbeddedFileStream.FromFile(doc, file)),
};
page.Annotations.Add(faa); //添付ファイル注釈を追加します
g.FillRectangle(faa.Rect, Color.FromArgb(unchecked((int)0xFF40c5a3)));
g.DrawRectangle(faa.Rect, Color.FromArgb(unchecked((int)0xFF6040c5)));
ip.Y += attSize.Height + gap;
}
doc.Save("FileAttachmentAnnotation.pdf");
}リッチメディア注釈は、PDFドキュメントに組み込まれたメディアリソース(オーディオおよび動画)への参照です。この注釈は、再生ボタンが付いた長方形のボックスとして表示されます。リッチメディア注釈をPDFドキュメントに追加するには、RichMediaAnnotation クラスの SetVideo、SetAudio と SetContent メソッドを使用します。
DioDocs for PDF は、RichMediaAnnotation クラスの次のプロパティを定義する RichMediaAnnotationActivation、RichMediaAnnotationDeactivation、および RichMediaAnnotationPresentationStyle ヘルパー クラスも提供します。
プロパティ | 定数 | 説明 |
|---|---|---|
ActivationCondition | UserAction | 注釈は、ユーザーアクションまたはスクリプトによって明示的に有効化します。 |
PageReceivesFocus | 注釈を含むページが現在のページとしてフォーカスを受け取ると、注釈が有効になります。 | |
PageBecomesVisible | 注釈を含むページの一部が表示されると、注釈が有効になります。 | |
DeactivationCondition | UserAction | 注釈は、ユーザーアクションやスクリプトによって明示的に無効化します。 |
PageLosesFocus | 注釈を含むページが現在のページとしてフォーカスを失うと、注釈が無効になります。 | |
PageBecomesInvisible | 注釈を含むページ全体が表示されなくなると、注釈が無効になります。 | |
PresentationStyle | Embedded | メディアはビューワ内で再生します。 |
Windowed | メディアは別のウィンドウで再生します。 |

次のサンプルコードは、RichMediaAnnotationクラスを使用して動画を追加する方法を示します。
// GcPDFDcoumentを初期化します
var doc = new GcPdfDocument();
// PDFドキュメントに空白ページを追加します
var page = doc.NewPage();
// GcPdfGraphicsを初期化します
var g = page.Graphics;
// 動画のパスを定義します
var videoPath = Path.Combine("waterfall.mp4");
const int smallGap = 18;
// テキストを書式設定します
var tf = new TextFormat()
{
Font = StandardFonts.HelveticaBold,
FontSize = 14
};
// ページが表示されたときに再生する動画を追加します
var rc = new RectangleF(new PointF(60, 50), new SizeF(500, 10));
// 文字列を追加します
g.DrawString("ページが表示されると、次のビデオが自動的に再生されます。", tf, rc);
// RichMediaAnnotationとそのプロパティを初期化します
var rma = new RichMediaAnnotation();
var videoEfs = EmbeddedFileStream.FromFile(doc, videoPath);
var videoFileSpec = FileSpecification.FromEmbeddedStream(Path.GetFileName(videoPath), videoEfs);
// 動画のメディアを設定します
rma.SetVideo(videoFileSpec);
// プレゼンテーションのスタイルを設定します
rma.PresentationStyle = RichMediaAnnotationPresentationStyle.Embedded;
// 有効化の条件を設定します
rma.ActivationCondition = RichMediaAnnotationActivation.PageBecomesVisible;
// 無効化の条件を設定します
rma.DeactivationCondition = RichMediaAnnotationDeactivation.PageBecomesInvisible;
// ナビゲーションペインの動作を設定します
rma.ShowNavigationPane = true;
// RichMediaAnnotationを追加するページを設定します
rma.Page = page;
// RichMediaAnnotationを追加する長方形を設定します
rma.Rect = new RectangleF(rc.X, rc.Bottom + smallGap, 72 * 5, 72 * 5 * 0.56f);
// ドキュメントを保存します
doc.Save("RichMediaAnnotation.pdf");RichMediaAnnotation クラスの GetContent メソッドを使用して、リッチメディア注釈からメディアを取得することもできます。
音声注釈は、テキスト注釈と似ていますが、テキストの代わりに、既存のファイルまたはマイク 録音からインポートされた音声(.au、.aiff、または.wav形式)を含みます。DioDocs for PDFに用意されたSoundAnnotation クラスを使用して、ユーザーがPDFに音声注釈を追加できます。

以下のコードは、PDFドキュメントに音声注釈を追加する方法を示します。
public void CreateSoundAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 250, 50);
page.Graphics.DrawString("赤い音声注釈がこのメモの右側に配置されます。 アイコンをダブルクリックしてサウンドを再生します。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 11 }, rc);
//SoundAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var aiffAnnot = new SoundAnnotation()
{
UserName = "山田花子",
Contents = "AIFFトラックを含む音声注釈。",
PdfRect = new RectangleF(rc.Right, rc.Top, 24, 24),
Icon = SoundAnnotationIcon.Speaker,
Color = Color.Red,
Sound = SoundObject.FromFile(Path.Combine("Resources", "Sounds", "ding.aiff"), AudioFormat.Aiff)
};
page.Annotations.Add(aiffAnnot);
doc.Save("SoundAnnotation.pdf");
}ウィジェット注釈は、対話式のフォームでフィールドの外観を表すために使用されます。また、この注釈がユーザー操作の管理でも使われます。DioDocs for PDFに用意された WidgetAnnotation クラスを使用して、ユーザーがPDFにウィジェット注釈を追加できます。

以下のコードは、PDFドキュメントにウィジェット注釈を追加する方法を示します。
public void CreateWidgetAnnotation()
{
var doc = new GcPdfDocument();
var page = doc.NewPage();
var g = page.Graphics;
TextFormat tf = new TextFormat();
tf.FontSize = 11;
PointF ip = new PointF(72, 72);
float fldOffset = 72 * 2;
float fldHeight = tf.FontSize * 1.2f;
float dY = 32;
// テキストフィールド:
g.DrawString("Text field:", tf, ip);
var fldText = new TextField();
fldText.Value = "Initial TextField value";
//テキストフィールドのビュープロパティを指定するためのWidgetAnnotationを取得します
WidgetAnnotation widgetAnnotation = fldText.Widget;
widgetAnnotation.Page = page;
widgetAnnotation.PdfRect = new RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight);
widgetAnnotation.Border.Color = Color.Silver;
widgetAnnotation.BackColor = Color.LightSkyBlue;
doc.AcroForm.Fields.Add(fldText);
ip.Y += dY;
doc.Save("WidgetAnnotation.pdf");
}ウォーターマーク注釈は、ページのサイズに関係なく、ページの固定位置に固定サイズで印刷するグラフィックを表します。DioDocs for PDFに用意された WatermarkAnnotation クラスを使用して、ユーザーがPDFにウォーターマーク注釈を追加できます。

以下のコードは、PDFドキュメントにウォーターマーク注釈を追加する方法を示します。
public void CreateWatermarkAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
var fs = new FileStream(Path.Combine("CompleteJavaScriptBook.pdf"), FileMode.Open, FileAccess.Read);
doc.Load(fs); //ドキュメントをロードします
//ページをループし、各ページにウォーターマークを追加します
foreach (var page in doc.Pages)
{
//WatermarkAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var watermark = new WatermarkAnnotation()
{
PdfRect = new RectangleF(50, 300, 500, 150),
Image = Image.FromFile("draft-copy.png"),
Page = page // ウォーターマークをページに追加します
};
doc.Save("WatermarkAnnotation.pdf");
}
}墨消し注釈により、ユーザーがPDFドキュメントから表示したくないコンテンツを削除できます。 本注釈は、次の2 段階で適用できます。
墨消し領域をマークすると、コンテンツの場所にマークやハイライトが表示され、墨消しのためにマークされた領域であることがわかるようになります。DioDocs for PDFクラスライブラリを使用すると、テキストのすべてのインスタンスを検索し、墨消しのためにコンテンツをマークできます。これにより、マークされたコンテンツに墨消しを適用できるようになります。DioDocs for PDFではRedactAnnotationクラスを使用して、PDFファイル内の墨消し領域をマークできます。

以下のコードは、PDFドキュメントにて墨消し領域をマークする方法を示しています。
public void CreatePDF()
{
GcPdfDocument doc = new GcPdfDocument();
var fs = new FileStream(Path.Combine("TimeSheet.pdf"), FileMode.Open, FileAccess.Read);
doc.Load(fs); //ドキュメントをロードします
//墨消し注釈を作成します
RedactAnnotation redactAnnotation = new RedactAnnotation();
//search the text(e.g employee name) which needs to be redacted
var l = doc.FindText(new FindTextParams("Jaime Smith", true, false), null);
// 注釈にテキストのフラグメント領域を追加します
List<Quadrilateral> area = new List<Quadrilateral>();
area.Add(l[0].Bounds[0]);
redactAnnotation.Area = area;
redactAnnotation.Justification = VariableTextJustification.Centered;
redactAnnotation.MarkBorderColor = Color.Black;
//ページに墨消し注釈を追加します
doc.Pages[0].Annotations.Add(redactAnnotation);
doc.Save("TimeSheet_Redacted.pdf");
}PDFドキュメントにて墨消し領域がマークされると、その領域に墨消しを適用してPDFドキュメントからコンテンツを削除できます。PDFコンテンツが墨消しされた後は、そのコンテンツの抽出、コピー、他への貼り付けはできなくなります。 ただし、墨消しされたコンテンツの場所に上書きテキストを追加することができます。
DioDocs for PDFでは、GcPdfDocumentクラスのRedactメソッドを使用して、PDFドキュメント内の墨消しのためにマークされた領域に墨消しを適用できます。また、Redactメソッドの3つのオーバーロードを使用して、PDFドキュメント内の墨消しのためにマークされたすべての領域、特定の領域、領域のリストのいずれかに墨消しを適用することもできます。

以下のコードは、PDFドキュメントに墨消しを適用する方法を示しています。
var doc = new GcPdfDocument();
using (var fs = new FileStream(Path.Combine("Resources", "PDFs", "TimeSheet_Redacted.pdf"), FileMode.Open, FileAccess.Read))
{
//墨消し注釈(墨消しのためにマークされた領域)を含むPDFをロードします
doc.Load(fs);
//新しい墨消し領域をマークします
var rc = new RectangleF(280, 150, 100, 30);
var redact = new RedactAnnotation()
{
PdfRect = rc,
Page = doc.Pages[0],
OverlayFillColor = Color.PaleGoldenrod,
OverlayText = "REDACTED",
OverlayTextRepeat = true
};
//すべて(上記及び既存の墨消し注釈)に墨消しを適用します
doc.Redact();
doc.Save(stream);
return doc.Pages.Count;
}type=note
メモ:一旦墨消しが適用されると、墨消し注釈はPDFドキュメントから削除されます。 つまり、墨消しのためにマークされたコンテンツは、マークするために使用された墨消し注釈とともにPDFから削除されることになります。
画像に対して墨消しを行った時、ドキュメント上の他の場所にも同じ画像が存在する場合、DioDocs for PDFでは、すべての画像が墨消しされた画像に置き換わります。しかしながら、RedactOptions クラスの CopyImagesOnRedact プロパティを使用することで、他の場所に表示されている画像を、墨消しを適用する前にコピーする(墨消し画像に置き換わらないようにする)かどうかを選択することができます。このプロパティのデフォルト値は"false"です。
墨消しを適用する前に画像をコピーする方法については、以下のサンプルコードを参照してください。
// GcPdfDocumentのインスタンスを生成します
var doc0 = new GcPdfDocument();
// PDFドキュメントを開きます
using var fs0 = File.OpenRead("image3pg.pdf");
doc0.Load(fs0);
// 先頭ページにある画像の一部を墨消しします
doc0.Pages[0].Annotations.Add(new RedactAnnotation() { Rect = new RectangleF(90, 160, 72 * 4.5f, 72 * 2.8f) });
// 墨消しを適用する前に画像をコピーする設定にします
RedactOptions options = new RedactOptions();
options.CopyImagesOnRedact = true;
// 墨消しを適用します
doc0.Redact(options);
// PDFドキュメントを保存します
doc0.Save("Redacted.pdf");テキストマークアップ注釈は、ページテキストを作成するための単純なマークアップ注釈です。ドキュメント内のテキストを強調表示したり、テキストに下線、取り消し線、またはギザギザ下線(波下線)を付けたりするために使用されます。DioDocs for PDFに用意された TextMarkupAnnotation クラスを使用して、ユーザーがPDFにテキストマークアップ注釈を追加できます。

以下のコードは、PDFドキュメントにテキストマークアップ注釈を追加する方法を示します。
public void CreateTextMarkupAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
var page = doc.NewPage();
var tl = page.Graphics.CreateTextLayout();
tl.DefaultFormat.Font = StandardFonts.Times;
tl.DefaultFormat.FontSize = 14;
tl.Append("このサンプルは、テキストマークアップ注釈を作成する方法を示します。");
page.Graphics.DrawTextLayout(tl, new PointF(72, 72));
//TextMarkupAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var textMarkupAnnot = new TextMarkupAnnotation();
textMarkupAnnot.MarkupType = TextMarkupType.Highlight;
textMarkupAnnot.UserName = "山田花子";
textMarkupAnnot.Contents = "これはテキストマークアップ注釈です。";
//編集する必要があるテキスト(従業員名など)を検索します。
var found = doc.FindText(new FindTextParams("Text markup", true, false), null);
List<Quadrilateral> area = new List<Quadrilateral>();
foreach (var f in found)
area.Add(f.Bounds[0]);
textMarkupAnnot.Area = area;
textMarkupAnnot.Color = Color.Yellow;
page.Annotations.Add(textMarkupAnnot); //テキストマークアップ注釈をページに追加します
doc.Save("TextMarkupAnnotation.pdf");
}折れ線注釈は、ページ内に複数の端を持つ閉じたまたは開いた形状を表示します。この注釈をクリックすると、関連付けられたテキストを含むポップアップウィンドウが表示されます。DioDocs for PDFに用意されたPolyLineAnnotation クラスを使用して、ユーザーがPDFにテキストマークアップ注釈を追加できます。

以下のコードは、PDFドキュメントに折れ線注釈を追加する方法を示します。
public void CreatePolyLineAnnotation()
{
GcPdfDocument doc = new GcPdfDocument();
Page page = doc.NewPage();
RectangleF rc = new RectangleF(50, 50, 400, 40);
page.Graphics.DrawString("このサンプルは、折れ線注釈を作成する方法を示します。",
new TextFormat() { Font = StandardFonts.Times, FontSize = 14 }, rc);
//折れ線の点を定義します
var points = new List<PointF>();
float x = rc.Left,y=rc.Bottom;
for (int i=0 ;i<10 ;i++,x+=10)
{
points.Add(new PointF(x,y));
y = i % 2 == 0 ? y - 10 : y+10;
}
//PolyLineAnnotationクラスのインスタンスを作成し、それに関連するプロパティを設定します
var polyLineAnnot = new PolyLineAnnotation()
{
Points = points,
UserName = "山田花子",
LineWidth = 2,
Color = Color.Green,
Contents = "これは折れ線注釈です。",
};
page.Annotations.Add(polyLineAnnot); //折れ線注釈をページに追加します
doc.Save("PolyLineAnnotation.pdf");
}キャレット注釈は、テキストの変更をマークしたり、欠落しているテキストを示すために使用される視覚的なシンボルです。DsPdf では、PDF ファイルにキャレット注釈を追加するには、 CaretAnnotation?クラスを使用します。

次のサンプルコードは、PDFドキュメントにキャレット注釈を追加する方法を示しています。
// GcPdfDocument を初期化します。
GcPdfDocument doc = new GcPdfDocument();
// ファイルストリームを作成します。
FileStream fs = new FileStream("Wetlands.pdf", FileMode.Open, FileAccess.Read);
// ファイルストリームをロードします。
doc.Load(fs);
// 最初のページを取得します。
var page = doc.Pages[0];
// テキストマップを取得します。
var tm = page.GetTextMap();
// 「The Importance」テキストの後にキャレット注釈を挿入します。
tm.FindText(new FindTextParams("The Importance", false, true), (fp_) =>
{
// 「r」は見つかったテキストの境界です。
var r = fp_.Bounds[0].ToRect();
// キャレット注釈を作成し、ページに追加します。
CaretAnnotation ca = new CaretAnnotation();
ca.Page = page;
// このコードではアノテーションのサイズがハードコードされています。
// 見つかったテキストフラグメントの高さに応じて注釈のサイズを調整するコードを作成できます。
ca.Rect = new System.Drawing.RectangleF(r.Right - 4, r.Bottom - 8, 8, 8);
ca.Opacity = 1f;
ca.Color = Color.Red;
ca.Contents = "これはキャレット注釈です。";
});
doc.Save("CaretAnnotation.pdf");DioDocs for PDF を使用して注釈の使用方法の詳細については、DioDocs For PDF サンプルブラウザを参照してください。