C # копировать изображение из формы PowerPoint в Word - PullRequest
3 голосов
/ 01 марта 2010

Мне нужно приложение для копирования текста и изображений из PowerPoint в Word. Я использую следующие библиотеки: Microsoft.Office.Interop.PowerPoint и Microsoft.Office.Interop.Word.

Текст легко переносится, но когда я нахожу в PowerPoint фигуру, содержащую только изображение, он показывает эту ошибку: « Произошла общая ошибка GDI + », в этой части кода:

foreach (PowerPoint.Shape shape in slide.Shapes)
{
   if (shape.HasTextFrame != MsoTriState.msoTrue){
      shape.Copy();
      Image img = (Image)Clipboard.GetData(DataFormats.Bitmap);
      string filepath = Environment.SpecialFolder.Desktop + "\\img.jpg";
      if (File.Exists(filepath))
      {
         File.Delete(filepath);
      }
      img.Save(filepath);
      doc.Shapes.AddPicture(filepath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
   }
}

Как я могу скопировать фигуру, содержащую изображение из PowerPoint в Word в этих обстоятельствах? Любая помощь приветствуется. Я предпочитаю пример кода.

Спасибо.

1 Ответ

0 голосов
/ 01 марта 2010

Если вы переписаете свой код, как это, он будет работать? GetImage выполнит автоматическое преобразование, чтобы убедиться, что это изображение. Если вы знаете, что это растровое изображение, вы можете включить в код проверку, чтобы убедиться, что буфер обмена действительно содержит изображение.

shape.Copy();
bool imgOk = Clipboard.ContainsImage();
if (imgOk)
{
    Image img = Clipboard.GetImage();
    MessageBox.Show(imgOk.ToString());
    string filepath = @"c:\temp\img.jpg";
    if (File.Exists(filepath))
    {
        File.Delete(filepath);
    }
    img.Save(filepath);
}
...