目前,我通过Aspose引擎生成的所有EMF文件都处于EMF双模式。
如果有人能启发我如何通过Aspose生成一个EMFPlus文件,那就太好了。如果你能为我提供一个样本EMFPlus文件,这是不是在双模式,这将是伟大的。
或者,请告诉我在哪里可以从互联网上下载。
发布于 2015-09-03 17:41:25
我相信你已经在Aspose.Words Support forum上发布了类似的问题,因此我将首先从Aspose.Words的角度来解决你的担忧。请注意,Aspose.Words API允许您以EmfOnly、EmfPlus和EmfPlusWithFallback格式呈现文档。请查看以下使用Aspose.Words for .NET接口将输入文档转换为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一起工作,作为开发人员的布道者。
https://stackoverflow.com/questions/32368237
复制相似问题