0

目前我通过 Aspose 引擎生成的所有 EMF 文件都处于 EMF 双模式。

如果有人能告诉我如何通过 Aspose 生成 EMFPlus 文件,那就太好了。如果你能给我提供一个不处于双模式的示例 EMFPlus 文件,那就太好了。

或者,请告诉我从哪里可以从互联网上下载它。

4

1 回答 1

1

我相信您已经在Aspose.Words 支持论坛中发布了类似的问题,因此我将首先从 Aspose.Words 解决您的问题。请注意,Aspose.Words API 允许您以 EmfOnly、EmfPlus 和 EmfPlusWithFallback 格式呈现文档。请检查以下使用 Aspose.Words for .NET API 将输入文档转换为 EmfPlus 格式的代码。

var doc = new Aspose.Words.Document("D:/sample.docx");
var saveOptions = new Aspose.Words.Saving.ImageSaveOptions(Aspose.Words.SaveFormat.Emf);
saveOptions.MetafileRenderingOptions.EmfPlusDualRenderingMode = Aspose.Words.Saving.EmfPlusDualRenderingMode.EmfPlusWithFallback;
doc.Save("D:/output.emf", saveOptions);

如果您打算将现有的 EmfPlusDual 图像转换为 EmfPlus,您可以使用 GDI+ 例程来实现此目的。请检查以下以 System.IO.Stream 形式接受图像数据并将其转换为 EmfPlus 的方法,然后再将其保存回磁盘。

    void ReSaveEmfToEmfPlus(Stream srcStream, String destPath)
    {
       Bitmap dummyBitmap = null;
       Graphics dummyGfx = null;
       IntPtr hdc = IntPtr.Zero;
       System.Drawing.Imaging.Metafile metafile = null;

       try
       {
          dummyBitmap = new Bitmap(1, 1);
          dummyGfx = Graphics.FromImage(dummyBitmap);
          hdc = dummyGfx.GetHdc();
          Image srcImage = Image.FromStream(srcStream);
          Rectangle rect = new Rectangle(0, 0, srcImage.Width, srcImage.Height);
          metafile = new System.Drawing.Imaging.Metafile(destPath, hdc, rect, System.Drawing.Imaging.MetafileFrameUnit.Pixel, EmfType.EmfPlusOnly);
          Graphics graphic = Graphics.FromImage(metafile);
          graphic.DrawImage(srcImage, rect);
          srcImage.Dispose();
          graphic.Dispose();
      }
      finally
      {
          if (metafile != null)
          {
             metafile.Dispose();
          }
          if (hdc != IntPtr.Zero)
          {
             dummyGfx.ReleaseHdc(hdc);
          }
          if (dummyGfx != null)
          {
             dummyGfx.Dispose();
          }
          if (dummyBitmap != null)
          {
             dummyBitmap.Dispose();
          }
      }
   }

如果您正在寻找 EmfPlus 示例,您可以使用适当的关键字在 Internet 上搜索它们,希望您能够找到所需的文件。

我与 Aspose 一起担任开发人员宣传员。

于 2015-09-03T09:41:25.410 回答