DioDocs for PDF
画像
機能 > 画像
トピック内容:

DioDocs for PDF では、GcGraphics クラスの DrawImage メソッドを使用して、ページ内に画像を描画できます。ファイル、またはストリームを使用して画像をロードできます。このライブラリは、BMP、GIF(シングルフレームのみ)、JPEG、SVG、PNG などのさまざまな画像形式をサポートします。 さらに、Windows では、TIFF、JpegXR、および ICO 形式もサポートされます。

同じImageオブジェクトをGcPdfDocument インスタンス内で複数回描画される場合、DioDocs for PDF はそれを自動的に辞書に格納し、ドキュメント内でその画像が使用されるすべての場所からその画像データを参照します。これにより、時間を節約し、キャッシュで同じ画像が複数回描画されるため、最適なサイズのPDFファイルをより迅速に作成できます。この機能は、繰り返しページヘッダーに会社のロゴを含んだドキュメントを描画する場合に特に便利です。

また、DioDocs for PDF ライブラリには ImageAlign クラスが用意されており、AlignHorzAlignVertBestFitTileHorz などのプロパティを使用してさまざまな方法で画像を配置できます。GcPdfDocument クラスにある ImageOptions プロパティを通じて、カラー値の圧縮、JPEG 画像の品質の設定など、画質を制御することもできます。

PDF の画像

ファイルからの画像の追加

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.ImageWidgetAnnotation.ButtonAppearance.RolloverAppearance.ImageWidgetAnnotation.ButtonAppearance.DownAppearance.Imageなどのプロパティを通して、WidgetAnnotationオブジェクトに直接参照される画像だけではなく、PagesFormXObjects などのコンテンツストリーム内に埋め込まれた画像も含まれます。また、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メソッドを使用します。

  1. GcPdfDocumentクラスの Load メソッドを使用して、画像を含むPDFドキュメントをロードします。
  2. GcPdfDocumentクラスの GetImages メソッドを使用して、PDFドキュメントから画像を抽出します。
  3. Graphics.DrawImageメソッドを使用して、抽出された画像を別のPDFドキュメントに描画します。
  4. GcPdfDocumentクラスの Save メソッドを使用してドキュメントを保存します。
    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画像の作成

コードを使用してSVG画像を作成するには

  1. GcSvgDocumentのインスタンスを作成して、新しいSVGドキュメントを作成します。
  2. SvgPathBuilderクラスのインスタンスを作成します。このクラスは、パスコマンドを実行するメソッドを提供します。
  3. AddMoveToAddCurveToなどメソッドを使用して、SVGに描画される図形の輪郭を描画するパスを定義します。
  4. Addメソッドを使用して、これらの要素を「svg」要素のルートコレクションに追加します。
  5. パスを描画するための命令を表すSvgPathBuilderクラスのToPathDataメソッドを使用してSvgPathDataを提供します。
  6. 各パスの他のプロパティ(塗りつぶし、ストロークなど)を定義します。
  7. GcSvgDocumentクラスのSaveメソッドを使用して、ドキュメントを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;
    }
    
先頭に戻る

PDFにSVG画像の描画

GrapeCity.Documents.Svg名前空間のGcSvgDocumentクラスを使用して、SVGファイルをPDFページに描画できます。

SVG画像をPDFドキュメントに描画するには

  1. GcSvgDocumentクラスのFromFileメソッドを使用して、SVG画像をPDFドキュメントにロードします。
  2. GcGraphicsクラスのDrawSvgメソッドを使用して、指定したSVGドキュメントをPDFドキュメントに描画します。
  3. GcPdfDocumentクラスのSaveメソッドを使用して、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 サンプルブラウザを参照してください。