emf文件转PDF乱码

using (var image = (EmfImage)Aspose.Imaging.Image.Load(childEmfFilePath))
{
    using (FileStream outputStream = new FileStream(childPdfFilePath, FileMode.Create))
    {//Aspose分辨率为96
        using (PdfOptions pdfOptions = new PdfOptions())
        {

            using (EmfRasterizationOptions emfRasterization = new EmfRasterizationOptions())
            {
                float resolution = (float)96.0;
                if (this.deviceMode.Orientation == Orientation.Potrait)
                {
                    emfRasterization.PageWidth = (float)(this.deviceMode.PaperWidth * resolution / 10 / 25.4);
                    emfRasterization.PageHeight = (float)(this.deviceMode.PaperLength * resolution / 10 / 25.4);
                }
                else
                {
                    emfRasterization.PageHeight = (float)(this.deviceMode.PaperWidth * resolution / 10 / 25.4);
                    emfRasterization.PageWidth = (float)(this.deviceMode.PaperLength * resolution / 10 / 25.4);
                }
                emfRasterization.PageHeight = (float)(image.HeightF + 8.0 * 600.0 / 25.4) * resolution / deviceMode.YResolution;
                emfRasterization.PageWidth = (float)(image.WidthF + 8.0 * 600.0 / 25.4) * resolution / deviceMode.YResolution;
                pdfOptions.VectorRasterizationOptions = emfRasterization;
                pdfOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting();
                pdfOptions.ResolutionSettings.HorizontalResolution = resolution;
                pdfOptions.ResolutionSettings.VerticalResolution = resolution;
            }
            try
            {
                image.Save(outputStream, pdfOptions);
                filesPathList.Add(childPdfFilePath);
            }
            catch (Exception ex)
            {
                MsgLogHelper.WriteLog("SaveAsPDF", "EmfSpoolFile SaveToPdfByEmf Exception", ex, 2);
                image.Dispose();
                outputStream.Close();
                if (File.Exists(childPdfFilePath))
                {
                    File.Delete(childPdfFilePath);
                }
            }
        }
    }
}

1.zip (120.0 KB)

使用这段代码转emf文件为PDF,结果乱码,emf文件见1.zip

@iccolor

在将EMF文件转换为PDF时出现乱码的问题,可能是由于EMF文件中的某些元素未能正确解析或渲染。您可以尝试以下步骤来解决此问题:

  1. 检查EMF文件:确保EMF文件本身没有损坏,并且可以在其他图形查看器中正常显示。

  2. 调整分辨率:在设置EmfRasterizationOptions时,确保分辨率设置合理。您可以尝试不同的分辨率值,以改善输出质量。

  3. 使用不同的PDF选项:尝试使用不同的PdfOptions设置,特别是与图形渲染相关的选项。

  4. 更新Aspose库:确保您使用的是最新版本的Aspose.Imaging库,因为更新可能包含修复和改进。

  5. 示例代码:以下是您可以尝试的代码示例,确保在设置页面宽度和高度时使用适当的值:

using (var image = (EmfImage)Aspose.Imaging.Image.Load(childEmfFilePath))
{
    using (FileStream outputStream = new FileStream(childPdfFilePath, FileMode.Create))
    {
        using (PdfOptions pdfOptions = new PdfOptions())
        {
            using (EmfRasterizationOptions emfRasterization = new EmfRasterizationOptions())
            {
                float resolution = 96.0f; // 尝试不同的分辨率
                emfRasterization.PageWidth = image.WidthF * resolution / 100; // 根据需要调整
                emfRasterization.PageHeight = image.HeightF * resolution / 100; // 根据需要调整
                pdfOptions.VectorRasterizationOptions = emfRasterization;
                pdfOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting
                {
                    HorizontalResolution = resolution,
                    VerticalResolution = resolution
                };
            }
            try
            {
                image.Save(outputStream, pdfOptions);
            }
            catch (Exception ex)
            {
                // 处理异常
                Console.WriteLine($"转换过程中发生错误: {ex.Message}");
            }
        }
    }
}

如果问题仍然存在,您可能需要考虑将EMF文件转换为其他格式(如PNG或JPEG),然后再将其转换为PDF,以避免直接从EMF转换时可能出现的兼容性问题。

新给的代码,转PDF还是存在乱码情况

转的PDF好像也不是乱码,好像是转的字有部分缺失

@iccolor 你好!
感谢您使用Aspose.Imaging。 我们很抱歉您遇到了问题。 我们会尽快检查这个问题。

@iccolor
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): IMAGINGNET-7845

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.