Сохранить изображение xaml как pdf в wpf - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь экспортировать изображение wpf в файл pdf. До сих пор я успешно экспортировал в png файл следующим образом:

xaml

<Window x:Class="ImageDownload.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ImageDownload"
        mc:Ignorable="d"
        Title="ImageDemo" Height="450" Width="800">
    <StackPanel>
        <Button x:Name="DownloadButton" Margin="10" Click="DownloadButton_Click">Download</Button>
        <Image x:Name="canvas" Source="Googlelogo.png" Stretch="Uniform" />
    </StackPanel>
</Window>

код позади

private void DownloadButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Png Image(*.PNG)|*.png";

                if (saveDialog.ShowDialog().Value == true)
                {
                    // Save current canvas transform
                    Transform transform = canvas.LayoutTransform;
                    // reset current transform (in case it is scaled or rotated)
                    canvas.LayoutTransform = null;

                    // Get the size of canvas
                    Size size = new Size(canvas.ActualWidth, canvas.ActualHeight);
                    // Measure and arrange the surface
                    // VERY IMPORTANT
                    canvas.Measure(size);
                    canvas.Arrange(new Rect(size));

                    // Create a render bitmap and push the surface to it
                    RenderTargetBitmap renderBitmap =
                      new RenderTargetBitmap(
                        (int)size.Width,
                        (int)size.Height,
                        96d,
                        96d,
                        PixelFormats.Default);
                    renderBitmap.Render(canvas);
                    BitmapEncoder encoder = new BmpBitmapEncoder();
                    string extension = saveDialog.FileName.Substring(saveDialog.FileName.LastIndexOf('.'));
                    encoder = new PngBitmapEncoder();
                    // push the rendered bitmap to it
                    encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    // Create a file stream for saving image
                    using (FileStream fs = File.Open(saveDialog.FileName, FileMode.OpenOrCreate))
                    {
                        encoder.Save(fs);
                    }
                    // Restore previously saved layout
                    canvas.LayoutTransform = transform;
                }

            }
            catch (Exception)
            {

                throw;
            }
        }

Я видел некоторые предложения в Интернете, чтобы сначала экспортировать его как файл изображения, а затем экспортировать файл изображения как файл pdf, но мне не удалось его реализовать. Кто-нибудь может подсказать мне, как экспортировать изображение в PDF-файл?

Заранее спасибо.

...