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 のサンプルをお探しの場合は、適切なキーワードを使用してインターネットで検索すると、目的のファイルを見つけることができます。

私は開発者エバンジェリストとして Aspose で働いています。

于 2015-09-03T09:41:25.410 に答える