目前我通过Aspose引擎生成的所有EMF文件都处于EMF双模式。
如果有人可以通过Aspose生成EMFPlus文件,那将是非常好的。如果你能提供一个不是双模式的样本EMFPlus文件,那就太棒了。
或者,请告诉我从哪里可以从互联网上下载。
答案 0 :(得分:1)
我相信您在Aspose.Words Support forum中发布了类似的问题,因此我将首先解释您对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一起担任开发者布道者。