DioDocs for PDF では、GcGraphics クラスの DrawImage メソッドを使用して、ページ内に画像を描画できます。ファイル、またはストリームを使用して画像をロードできます。このライブラリは、BMP、GIF(シングルフレームのみ)、JPEG、SVG、PNG などのさまざまな画像形式をサポートします。 さらに、Windows では、TIFF、JpegXR、および ICO 形式もサポートされます。
同じImageオブジェクトをGcPdfDocument インスタンス内で複数回描画される場合、DioDocs for PDF はそれを自動的に辞書に格納し、ドキュメント内でその画像が使用されるすべての場所からその画像データを参照します。これにより、時間を節約し、キャッシュで同じ画像が複数回描画されるため、最適なサイズのPDFファイルをより迅速に作成できます。この機能は、繰り返しページヘッダーに会社のロゴを含んだドキュメントを描画する場合に特に便利です。
また、DioDocs for PDF ライブラリには ImageAlign クラスが用意されており、AlignHorz、AlignVert、BestFit、TileHorz などのプロパティを使用してさまざまな方法で画像を配置できます。GcPdfDocument クラスにある ImageOptions プロパティを通じて、カラー値の圧縮、JPEG 画像の品質の設定など、画質を制御することもできます。
PDF ドキュメントに画像を追加するには、Image.FromFile メソッドを使用して、アプリケーションに画像をロードします。このメソッドは、画像を Image クラスのオブジェクトに格納します。画像を追加したら、GcGraphics クラスの DrawImage メソッドを使用して画像をレンダリングできます。
C# |
コードのコピー
|
---|---|
public void CreatePDF(Stream stream) { GcPdfDocument doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; // アプリケーションに画像を追加します var image = GrapeCity.Documents.Drawing.Image.FromFile (Path.Combine("Resources", "Images", "clouds.jpg")); // DrawImageを使用して画像をレンダリングします g.DrawImage(image, new RectangleF(30.6F, 30.7F, 40.8F, 100.9F), null, ImageAlign.CenterImage); // PDFファイルを保存します doc.Save(stream); } |
ストリームを使用して PDF ドキュメントに画像を追加するには、Image.FromStream メソッドを使用して、ストリームに画像を格納する必要があります。 画像を格納したら、それをアプリケーションに追加できます。その後、GcGraphics クラスの DrawImage メソッドを使用して画像を描画できます。
C# |
コードのコピー
|
---|---|
public void CreatePDF(Stream stream) { GcPdfDocument doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; string fileName = @"C:\Users\Admin\Desktop\clouds.png"; FileStream fs = new FileStream(fileName, System.IO.FileMode.Open); // アプリケーションに画像を追加します var image = GrapeCity.Documents.Drawing.Image.FromStream(fs); // DrawImageを使用して画像を描画します g.DrawImage(image, new RectangleF(30.6F, 30.7F, 40.8F, 100.9F), null, ImageAlign.CenterImage); // PDFファイルを保存します doc.Save(stream); } |
さらに、DioDocs for PDF では、ToJpegStream メソッドを使用して JPEG として、ToPngStream メソッドを使用して PNG として、ConvertToGrayscale メソッドを使用してグレースケール画像として、画像をメモリストリームに保存できます。
DioDocs for PDFでは、GcPdfDocument クラスの RemoveImages メソッドを使用することで、PDFドキュメント内の画像を削除できます。GcPdfDocument クラスのGetImages メソッドを使うことでPDFドキュメントから画像を取得できます。 このメソッドで取得される画像には、WidgetAnnotation.ButtonAppearance.Image や WidgetAnnotation.ButtonAppearance.RolloverAppearance.Image 、WidgetAnnotation.ButtonAppearance.DownAppearance.Imageなどのプロパティを通して、WidgetAnnotationオブジェクトに直接参照される画像だけではなく、Pages や FormXObjects などのコンテンツストリーム内に埋め込まれた画像も含まれます。また、GetImages メソッドは、PdfImageInfo.WidgetReferences プロパティを通じてWidgetAnnotationオブジェクトに関連付けられた画像も取得できます。
PdfImageLocation クラスには、注釈やFormXObjectで参照される画像の位置情報を示す Annotation プロパティや FormXObject プロパティが用意されています。 これらのプロパティは、注釈の外観ストリームが画像を含んでいる場合、nullにはなりません。また、デフォルトでは、GetImagesメソッドは、ドキュメント内で使用されていない画像も取得します。この使用されていない画像は、リソースディクショナリには表示されるが、コンテンツストリームでは使用されず、どのプロパティにも表れません。
すべての画像を削除
PDFドキュメントからすべての画像を削除するサンプルコードです。
C# |
コードのコピー
|
---|---|
// Initialize GcPdfDocument. GcPdfDocument doc = new GcPdfDocument(); // Load PDF file with images. var stream = new FileStream("ImageTestCommon_E-0.pdf", FileMode.Open); doc.Load(stream); // Get all the images. var images = doc.GetImages(); // Remove all images. doc.RemoveImages(images); // Save the PDF document. doc.Save("RemovedAllImages.pdf"); |
先頭の画像のみ削除
PDFドキュメントから先頭の画像のみを削除するサンプルコードです。
C# |
コードのコピー
|
---|---|
// GcPdfDocumentオブジェクトを生成します GcPdfDocument doc = new GcPdfDocument(); // 画像を持つPDFファイルを開きます var stream = new FileStream("ImageTestCommon_E-0.pdf", FileMode.Open); doc.Load(stream); // すべての画像情報を取得します var images = doc.GetImages(); // 先頭の画像を削除します doc.RemoveImages(new PdfImageInfo[] { images[0] }); // PDFドキュメントを保存します doc.Save("RemovedFirstImage.pdf"); |
複数の場所で参照されている画像の一部を削除
GetImagesメソッドで取得された画像のコレクションの中の先頭の画像について、その画像が参照されている複数の場所のうち、先頭の場所(先頭のインデックス)以外のすべての場所から画像を削除するサンプルコードです。
C# |
コードのコピー
|
---|---|
// GcPdfDocumentオブジェクトを生成します GcPdfDocument doc = new GcPdfDocument(); // 画像を持つPDFファイルを開きます var stream = new FileStream("ImageTestCommon_E-0.pdf", FileMode.Open); doc.Load(stream); // すべての画像情報を取得します var images = doc.GetImages(); // 先頭画像の情報を取得します PdfImageInfo pii = images[0]; // 先頭画像の配置情報から、先頭の配置情報以外の情報を削除します(2つのみ削除) pii.Locations.RemoveRange(1, 2); // 先頭画像の先頭配置情報のみを削除します doc.RemoveImages(new PdfImageInfo[] { pii }); // PDFドキュメントを保存します doc.Save("RemoveExceptFirstIndexImage.pdf"); |
複数の場所で参照されている画像をすべて削除
GetImagesメソッドで取得された画像のコレクションの中の先頭の画像について、その画像が参照されているすべての場所(ウィジェット注釈を含む)から画像を削除するサンプルコードです。
C# |
コードのコピー
|
---|---|
// GcPdfDocumentオブジェクトを生成します GcPdfDocument doc = new GcPdfDocument(); // 画像を持つPDFファイルを開きます var stream = new FileStream("ImageTestCommon_E-0.pdf", FileMode.Open); doc.Load(stream); // すべての画像情報を取得します var images = doc.GetImages(); // 先頭の画像を削除します(ウィジェット注釈で参照されているものを含む) doc.RemoveImages(new PdfImageInfo[] { new PdfImageInfo(images[0].Image) }); // PDFドキュメントを保存します doc.Save("RemoveFirstImageCompletely.pdf"); |
指定された透明度で画像を描画するには、不透明度をパラメータとして受け取るDrawImageメソッドを使用してPDFドキュメントに画像を追加します。
C# |
コードのコピー
|
---|---|
//PDFドキュメントを作成します GcPdfDocument doc = new GcPdfDocument(); GcPdfGraphics g = doc.NewPage().Graphics; g.DrawString("A sample document showing an image with controlled opacity.", new TextFormat() { Font = StandardFonts.Times, FontSize = 12 }, new PointF(72, 72)); //不透明度を調整して画像を追加します var image = RawImage.FromFile(Path.Combine("Resources", "sea.jpg"), RawImageFormat.Jpeg, 800, 532); ImageAlign ia = new ImageAlign(ImageAlignHorz.Center, ImageAlignVert.Center, true, true, true, false, false); g.DrawImage(image, new RectangleF(100, 100, 180, 100), null, ImageAlign.ScaleImage,0.3F); //PDFドキュメントを保存します doc.Save("AddImage_Opacity.pdf"); Console.WriteLine("終了するには任意のキーを押してください。"); Console.ReadKey(); |
PDFドキュメントから画像を抽出するには、次のようにGetImagesメソッドを使用します。
C# |
コードのコピー
|
---|---|
using (FileStream fs = new FileStream(Path.Combine("Resources", "Wetlands.pdf"), FileMode.Open, FileAccess.Read)) { GcPdfDocument docSrc = new GcPdfDocument(); //画像を含む既存のPDFドキュメントをロードします docSrc.Load(fs); //ロードされたPDFから画像に関する情報を抽出します var imageInfos = docSrc.GetImages(); GcPdfDocument doc = new GcPdfDocument(); var textPt = new PointF(72, 72); foreach (var imageInfo in imageInfos) { //同じ画像が複数の場所に表示されることがあります //imageInfoにはページインデックスとページ上に画像の位置に関する情報が含まれます var g = doc.NewPage().Graphics; g.DrawImage(imageInfo.Image, new RectangleF(10,0,400,400), null, ImageAlign.ScaleImage); } doc.Save("ExtractImage.pdf"); } Console.WriteLine("終了するには任意のキーを押してください。"); Console.ReadKey(); |
同様に、GcPdfDocumentクラスのGetImageメソッドを使用して、ページから画像を抽出できます。
先頭に戻るDioDocs for PDF を使用した画像の実装の詳細については、DioDocs for PDF サンプルブラウザを参照してください。
コードを使用してSVG画像を作成するには
C# |
コードのコピー
|
---|---|
public static GcSvgDocument DrawCarrot() { // 新しいSVGドキュメントを作成します var doc = new GcSvgDocument(); var svg = doc.RootSvg; svg.ViewBox = new SvgViewBox(0, 0, 313.666f, 164.519f); // SvgPathBuilderクラスのインスタンスを作成します var pb = new SvgPathBuilder(); // パスを定義します pb.AddMoveTo(false, 29.649f, 9.683f); pb.AddCurveTo(true, -2.389f, -0.468f, -4.797f, 2.57f, -6.137f, 5.697f); pb.AddCurveTo(true, 2.075f, -2.255f, 3.596f, -1.051f, 4.91, 5f, -0.675f); pb.AddCurveTo(true, -2.122f, 2.795f, -4f, 5.877f, -7.746f, 5.568f); pb.AddCurveTo(true, 2.384f, -6.014f, 2.963f, -12.977f, 0.394f, -17.78f); pb.AddCurveTo(true, -1.296f, 2.591f, -1.854f, 6.054f, -5.204f, 7.395f); pb.AddCurveTo(true, 3.575f, 2.455f, 0.986f, 7.637f, 1.208f, 11.437f); pb.AddCurveTo(false, 11.967f, 21.17f, 6.428f, 16.391f, 9.058f, 10.67f); pb.AddCurveTo(true, -3.922f, 8.312f, -2.715f, 19.745f, 4.363f, 22.224f); pb.AddCurveTo(true, -3.86f, 4.265f, -2.204f, 10.343f, 0.209f, 13.781f); pb.AddCurveTo(true, -0.96f, 1.808f, -1.83f, 2.546f, -3.774f, 3.195f); pb.AddCurveTo(true, 3.376f, 1.628f, 6.612f, 4.866f, 11.326f, 3.366f); pb.AddCurveTo(true, -1.005f, 2.345f, -12.389f, 9.499f, -15.16f, 10.35f); pb.AddCurveTo(true, 3.216f, 0.267f, 14.492f, -2.308f, 16.903f, -5.349f); pb.AddCurveTo(true, -1.583f, 2.84f, 1.431f, 2.28f, 2.86f, 4.56f); pb.AddCurveTo(true, 1.877f, -3.088f, 3.978f, -2.374f, 5.677f, -3.311f); pb.AddCurveTo(true, -0.406f, 4.826f, -2.12f, 9.27f, -5.447f, 13.582f); pb.AddCurveTo(true, 2.834f, -4.894f, 6.922f, -5.367f, 10.474f, -5.879f); pb.AddCurveTo(true, -0.893f, 4.245f, -3.146f, 8.646f, -7.077f, 10.479f); pb.AddCurveTo(true, 5.359f, 0.445f, 11.123f, -3.934f, 13.509f, -9.944f); pb.AddCurveTo(true, 12.688f, 3.209f, 28.763f, -1.932f, 39.894f, 7.084f); pb.AddCurveTo(true, 1.024f, 0.625f, 1.761f, -4.98f, 1.023f, -5.852f); pb.AddCurveTo(false, 72.823f, 55.357f, 69.273f, 68.83f, 52.651f, 54.498f); pb.AddCurveTo(true, -0.492f, -0.584f, 1.563f, -5.81f, 1f, -8.825f); pb.AddCurveTo(true, -1.048f, -3.596f, -3.799f, -6.249f, -7.594f, -6.027f); pb.AddCurveTo(true, -2.191f, 0.361f, -5.448f, 0.631f, -7.84f, 0.159f); pb.AddCurveTo(true, 2.923f, -5.961f, 9.848f, -4.849f, 12.28f, -11.396f); pb.AddCurveTo(true, -4.759f, 2.039f, -7.864f, -2.808f, -12.329f, -1.018f); pb.AddCurveTo(true, 1.63f, -3.377f, 4.557f, -2.863f, 6.786f, -3.755f); pb.AddCurveTo(true, -3.817f, -2.746f, -9.295f, -5.091f, -14.56f, -0.129f); pb.AddCurveTo(false, 33.228f, 18.615f, 32.064f, 13.119f, 29.649f, 9.683f); // SVGのChildrenコレクションに要素を追加します svg.Children.Add(new SvgPathElement() { FillRule = SvgFillRule.EvenOdd, Fill = new SvgPaint(Color.FromArgb(0x43, 0x95, 0x39)), PathData = pb.ToPathData(), }); pb.Reset(); pb.AddMoveTo(false, 29.649f, 9.683f); pb.AddCurveTo(true, -2.389f, -0.468f, -4.797f, 2.57f, -6.137f, 5.697f); pb.AddCurveTo(true, 2.075f, -2.255f, 3.596f, -1.051f, 4.915f, -0.675f); pb.AddCurveTo(true, -2.122f, 2.795f, -4f, 5.877f, -7.746f, 5.568f); pb.AddCurveTo(true, 2.384f, -6.014f, 2.963f, -12.977f, 0.394f, -17.78f); pb.AddCurveTo(true, -1.296f, 2.591f, -1.854f, 6.054f, -5.204f, 7.395f); pb.AddCurveTo(true, 3.575f, 2.455f, 0.986f, 7.637f, 1.208f, 11.437f); pb.AddCurveTo(false, 11.967f, 21.17f, 6.428f, 16.391f, 9.058f, 10.67f); pb.AddCurveTo(true, -3.922f, 8.312f, -2.715f, 19.745f, 4.363f, 22.224f); pb.AddCurveTo(true, -3.86f, 4.265f, -2.204f, 10.343f, 0.209f, 13.781f); pb.AddCurveTo(true, -0.96f, 1.808f, -1.83f, 2.546f, -3.774f, 3.195f); pb.AddCurveTo(true, 3.376f, 1.628f, 6.612f, 4.866f, 11.326f, 3.366f); pb.AddCurveTo(true, -1.005f, 2.345f, -12.389f, 9.499f, -15.16f, 10.35f); pb.AddCurveTo(true, 3.216f, 0.267f, 14.492f, -2.308f, 16.903f, -5.349f); pb.AddCurveTo(true, -1.583f, 2.84f, 1.431f, 2.28f, 2.86f, 4.56f); pb.AddCurveTo(true, 1.877f, -3.088f, 3.978f, -2.374f, 5.677f, -3.311f); pb.AddCurveTo(true, -0.406f, 4.826f, -2.12f, 9.27f, -5.447f, 13.582f); pb.AddCurveTo(true, 2.834f, -4.894f, 6.922f, -5.367f, 10.474f, -5.879f); pb.AddCurveTo(true, -0.893f, 4.245f, -3.146f, 8.646f, -7.077f, 10.479f); pb.AddCurveTo(true, 5.359f, 0.445f, 11.123f, -3.934f, 13.509f, -9.944f); pb.AddCurveTo(true, 12.688f, 3.209f, 28.763f, -1.932f, 39.894f, 7.084f); pb.AddCurveTo(true, 1.024f, 0.625f, 1.761f, -4.98f, 1.023f, -5.852f); pb.AddCurveTo(false, 72.823f, 55.357f, 69.273f, 68.83f, 52.651f, 54.498f); pb.AddCurveTo(true, -0.492f, -0.584f, 1.563f, -5.81f, 1f, -8.825f); pb.AddCurveTo(true, -1.048f, -3.596f, -3.799f, -6.249f, -7.594f, -6.027f); pb.AddCurveTo(true, -2.191f, 0.361f, -5.448f, 0.631f, -7.84f, 0.159f); pb.AddCurveTo(true, 2.923f, -5.961f, 9.848f, -4.849f, 12.28f, -11.396f); pb.AddCurveTo(true, -4.759f, 2.039f, -7.864f, -2.808f, -12.329f, -1.018f); pb.AddCurveTo(true, 1.63f, -3.377f, 4.557f, -2.863f, 6.786f, -3.755f); pb.AddCurveTo(true, -3.817f, -2.746f, -9.295f, -5.091f, -14.56f, -0.129f); pb.AddCurveTo(false, 33.228f, 18.615f, 32.064f, 13.119f, 29.649f, 9.683f); pb.AddClosePath(); // SVGのChildrenコレクションに要素を追加します svg.Children.Add(new SvgPathElement() { Fill = SvgPaint.None, Stroke = new SvgPaint(Color.Black), StrokeWidth = new SvgLength(2.292f), StrokeMiterLimit = 14.3f, PathData = pb.ToPathData(), }); pb.Reset(); pb.AddMoveTo(false, 85.989f, 101.047f); pb.AddCurveTo(true, 0f, 0f, 3.202f, 3.67f, 8.536f, 4.673f); pb.AddCurveTo(true, 7.828f, 1.472f, 17.269f, 0.936f, 17.269f, 0.936f); pb.AddCurveTo(true, 0f, 0f, 2.546f, 5.166f, 10.787f, 7.338f); pb.AddCurveTo(true, 8.248f, 2.168f, 17.802f, 0.484f, 17.802f, 0.484f); pb.AddCurveTo(true, 0f, 0f, 8.781f, 1.722f, 19.654f, 8.074f); pb.AddCurveTo(true, 10.871f, 6.353f, 20.142f, 2.163f, 20.142f, 2.163f); pb.AddCurveTo(true, 0f, 0f, 1.722f, 3.118f, 14.11f, 9.102f); pb.AddCurveTo(true, 12.39f, 5.982f, 14.152f, 2.658f, 28.387f, 4.339f); pb.AddCurveTo(true, 14.232f, 1.672f, 19.36f, 5.568f, 30.108f, 7.449f); pb.AddCurveTo(true, 10.747f, 1.886f, 25.801f, 5.607f, 25.801f, 5.607f); pb.AddCurveTo(true, 0f, 0f, 4.925f, 0.409f, 12.313f, 6.967f); pb.AddCurveTo(true, 7.381f, 6.564f, 18.453f, 4.506f, 18.453f, 4.506f); pb.AddCurveTo(true, 0f, 0f, -10.869f, -6.352f, -15.467f, -10.702f); pb.AddCurveTo(true, -4.594f, -4.342f, -16.901f, -11.309f, -24.984f, -15.448f); pb.AddCurveTo(true, -8.079f, -4.14f, -18.215f, -7.46f, -30.233f, -11.924f); pb.AddCurveTo(true, -12.018f, -4.468f, -6.934f, -6.029f, -23.632f, -13.855f); pb.AddCurveTo(true, -16.695f, -7.822f, -13.662f, -8.565f, -28.347f, -10.776f); pb.AddCurveTo(true, -14.686f, -2.208f, -6.444f, -11.933f, -23.917f, -16.356f); pb.AddCurveTo(true, -17.479f, -4.423f, -11.037f, -4.382f, -26.016f, -9.093f); pb.AddCurveTo(true, -14.97f, -4.715f, -10.638f, -10.104f, -26.665f, -13.116f); pb.AddCurveTo(true, -14.149f, -2.66f, -21.318f, 0.468f, -27.722f, 11.581f); pb.AddCurveTo(false, 73.104f, 89.075f, 85.989f, 101.047f, 85.989f, 101.047f); // SVGのChildrenコレクションに要素を追加します svg.Children.Add(new SvgPathElement() { FillRule = SvgFillRule.EvenOdd, Fill = new SvgPaint(Color.FromArgb(0xFF, 0xC2, 0x22)), PathData = pb.ToPathData(), }); pb.Reset(); pb.AddMoveTo(false, 221.771f, 126.738f); pb.AddCurveTo(true, 0f, 0f, 1.874f, -4.211f, 4.215f, -6.087f); pb.AddCurveTo(true, 2.347f, -1.868f, 2.812f, -2.339f, 2.812f, -2.339f); pb.AddMoveTo(false, 147.11f, 105.122f); pb.AddCurveTo(true, 0f, 0f, 0.882f, -11.047f, 6.765f, -15.793f); pb.AddCurveTo(true, 5.879f, -4.745f, 10.882f, -5.568f, 10.882f, -5.568f); pb.AddMoveTo(false, 125.391f, 86.008f); pb.AddCurveTo(true, 0f, 0f, 2.797f, -6.289f, 6.291f, -9.081f); pb.AddCurveTo(true, 3.495f, -2.791f, 4.194f, -3.49f, 4.194f, -3.49f); pb.AddMoveTo(false, 181.153f, 124.8f); pb.AddCurveTo(true, 0f, 0f, -1.206f, -4.014f, -0.709f, -6.671f); pb.AddCurveTo(true, 0.493f, -2.66f, 0.539f, -3.256f, 0.539f, -3.256f); pb.AddMoveTo(false, 111.704f, 107.641f); pb.AddCurveTo(true, 0f, 0f, -1.935f, -6.604f, -1.076f, -10.991f); pb.AddCurveTo(true, 0.862f, -4.389f, 0.942f, -5.376f, 0.942f, -5.376f); pb.AddMoveTo(false, 85.989f, 101.047f); pb.AddCurveTo(true, 0f, 0f, 3.202f, 3.67f, 8.536f, 4.673f); pb.AddCurveTo(true, 7.828f, 1.472f, 17.269f, 0.936f, 17.269f, 0.936f); pb.AddCurveTo(true, 0f, 0f, 2.546f, 5.166f, 10.787f, 7.338f); pb.AddCurveTo(true, 8.248f, 2.168f, 17.802f, 0.484f, 17.802f, 0.484f); pb.AddCurveTo(true, 0f, 0f, 8.781f, 1.722f, 19.654f, 8.074f); pb.AddCurveTo(true, 10.871f, 6.353f, 20.142f, 2.163f, 20.142f, 2.163f); pb.AddCurveTo(true, 0f, 0f, 1.722f, 3.118f, 14.11f, 9.102f); pb.AddCurveTo(true, 12.39f, 5.982f, 14.152f, 2.658f, 28.387f, 4.339f); pb.AddCurveTo(true, 14.232f, 1.672f, 19.36f, 5.568f, 30.108f, 7.449f); pb.AddCurveTo(true, 10.747f, 1.886f, 25.801f, 5.607f, 25.801f, 5.607f); pb.AddCurveTo(true, 0f, 0f, 4.925f, 0.409f, 12.313f, 6.967f); pb.AddCurveTo(true, 7.381f, 6.564f, 18.453f, 4.506f, 18.453f, 4.506f); pb.AddCurveTo(true, 0f, 0f, -10.869f, -6.352f, -15.467f, -10.702f); pb.AddCurveTo(true, -4.594f, -4.342f, -16.901f, -11.309f, -24.984f, -15.448f); pb.AddCurveTo(true, -8.079f, -4.14f, -18.215f, -7.46f, -30.233f, -11.924f); pb.AddCurveTo(true, -12.018f, -4.468f, -6.934f, -6.029f, -23.632f, -13.855f); pb.AddCurveTo(true, -16.695f, -7.822f, -13.662f, -8.565f, -28.347f, -10.776f); pb.AddCurveTo(true, -14.686f, -2.208f, -6.444f, -11.933f, -23.917f, -16.356f); pb.AddCurveTo(true, -17.479f, -4.423f, -11.037f, -4.382f, -26.016f, -9.093f); pb.AddCurveTo(true, -14.97f, -4.715f, -10.638f, -10.104f, -26.665f, -13.116f); pb.AddCurveTo(true, -14.149f, -2.66f, -21.318f, 0.468f, -27.722f, 11.581f); pb.AddCurveTo(false, 73.104f, 89.075f, 85.989f, 101.047f, 85.989f, 101.047f); pb.AddClosePath(); // SVGのChildrenコレクションに要素を追加します svg.Children.Add(new SvgPathElement() { Fill = SvgPaint.None, Stroke = new SvgPaint(Color.Black), StrokeWidth = new SvgLength(3.056f), StrokeMiterLimit = 11.5f, PathData = pb.ToPathData(), }); // ドキュメントをsvgとして保存します doc.Save("demo.svg"); return doc; } |
GrapeCity.Documents.Svg名前空間のGcSvgDocumentクラスを使用して、SVGファイルをPDFページに描画できます。
SVG画像をPDFドキュメントに描画するには
C# |
コードのコピー
|
---|---|
var doc = new GcPdfDocument(); var g = doc.NewPage().Graphics; var prevT = g.Transform; g.Transform = Matrix3x2.CreateScale(factor); using var svg = GcSvgDocument.FromFile("Rectangle.svg"); g.DrawSvg(svg, new PointF(72 / factor, 72 / factor)); g.Transform = prevT; doc.Save("SVGImage.pdf"); |
DioDocs for PDFを使用してSVG画像をPDFファイルに描画する方法の詳細については、DioDocs for PDF サンプルブラウザを参照してください。