Aspose.Pdf.Facades.PdfExtractor 在 MacOS 存的檔案都是 0 byte

您好,我在 Apple M4 Pro 上使用 Aspose.PDF V25.3 .0 使用 Aspose.Pdf.Facades.PdfExtractor 來儲存 PDF 中的影像,儲存的圖檔都是 0 byte ,也沒有任何的錯誤。

註: 已透過 brew 安裝 mono-libgdiplus , 並重新開機過。
brew install mono-libgdiplus

程式如下,

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Drawing;
using System;

var contractPdf = @"c2.pdf";
var dataDir = @"/Users/user1/projects/asposeimage/docs/c2/";

using (var extractor = new Aspose.Pdf.Facades.PdfExtractor())
{
    var pdfFile = System.IO.Path.Combine(dataDir, contractPdf);
    extractor.BindPdf(pdfFile);

    // Extract images
    extractor.ExtractImage();
    // Get all the extracted images
    var i = 0;
    while (extractor.HasNextImage())
    {
        // Read image into memory stream
        MemoryStream memoryStream = new MemoryStream();
        extractor.GetNextImage(memoryStream);

        // Write to disk, if you like, or use it otherwise
        using (FileStream fileStream = new FileStream(dataDir + (++i).ToString() + ".jpg", FileMode.Create))
        {
            memoryStream.WriteTo(fileStream);
        }
        break;
    }
}

改透過 XImage.Save 會出現 Unhandled exception. System.NotImplementedException: Not supported image type at Aspose.Pdf.XImage.#=zhzaxamk=(ImageFormat #=zkxOGGrE=, Int32 #=zveucm8I=) at Aspose.Pdf.XImage.Save(Stream stream, ImageFormat format, Int32 resolution) at Aspose.Pdf.XImage.Save(Stream stream, ImageFormat format) 的錯誤。

var contractPdf = @"c2.pdf";
        var dataDir = @"/Users/user1/projects/asposeimage/docs/c2/";
        var pdfFile = System.IO.Path.Combine(dataDir, contractPdf);
        var output = System.IO.Path.Combine(dataDir, "1.jpg");
        Aspose.Pdf.Document pdfDocument = new(pdfFile);
        var page = pdfDocument.Pages[1];
        var images = page.Resources.Images;
        if (images.Any())
        {
            var image = images.First();
            using (var imageStream = new FileStream(output, FileMode.Create))
            {
                var imageInfo = (XImage)image;
                imageInfo.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }

@rainmaker_ho

您是否愿意尝试使用 Aspose.Pdf.Drawing for .NET 而不是 Aspose.PDF for .NET?它适用于非 Windows 环境,并且不依赖于 System.Drawing.Common。请删除现有 API 并安装 Aspose.Pdf.Drawing for .NET,如果它有助于解决您遇到的问题,请告知我们。

請問是否有 Aspose.Pdf.Drawing 讀取 pdf 中 images 的範例?

@rainmaker_ho

没有特定的用法或示例,因为 Aspose.Pdf.Drawing 具有相同的功能和类集,只是它与 Aspose.PDF for .NET 不同,不依赖于 System.Drawing.Common。您只需从应用程序中删除现有的 Aspose.PDF for .NET 包并从 NuGet Gallery 安装 Aspose.Pdf.Drawing for .NET,您的相同代码片段就可以工作。

您好,
依官網文件aspose.pdf.drawing 並沒有像 Aspose.Pdf 的操作 pdf 檔案的功能。

另外,在 Ubuntu 22.04.5 LTS 上執行也會有 Not supported image type 的錯誤

@rainmaker_ho

你能分享一下你提到的链接吗?

你是说你在 Ubuntu 中尝试过 API 但仍然出现这个错误吗?

您好,
link 如下,

Ubuntu 版本如下,

lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy

程式如下,

using Aspose.Pdf;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;

var pdf = "C202308302_ETP.pdf";
var pdfDoc = new Document(pdf);
var page2 = pdfDoc.Pages[2];
var images = page2.Resources.Images;
if(images.Any())
{
        var image = images.First() as XImage;
        using(var imageStream = new FileStream("p2.jpg", FileMode.Create))
        {
                
                image.Save(imageStream, ImageFormat.Jpeg);
        }

}else{

        Console.WriteLine("No Images");
}

錯誤訊息如下,

/home/azuser/projects/asposeimages/Program.cs(16,27): warning CA1416: This call site is reachable on all platforms. 'ImageFormat.Jpeg' is only supported on: 'windows' 6.1 and later. (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1416)
Unhandled exception. System.NotImplementedException: Not supported image type
   at Aspose.Pdf.XImage.#=zhzaxamk=(ImageFormat #=zkxOGGrE=, Int32 #=zveucm8I=)
   at Aspose.Pdf.XImage.Save(Stream stream, ImageFormat format, Int32 resolution)
   at Aspose.Pdf.XImage.Save(Stream stream, ImageFormat format)
   at Program.<Main>$(String[] args) in /home/azuser/projects/asposeimages/Program.cs:line 16

截圖 2025-04-01 上午9.24.25.png (105.0 KB)

@rainmaker_ho

感谢您分享此信息和耐心。看起来需要详细调查该情况。您能否分享一个示例文件供我们参考,以便我们在问题跟踪系统中记录调查单并与您分享 ID?

您好,
請參考附件,
e1.pdf (2.4 KB)

@rainmaker_ho

我们已在内部问题跟踪系统中打开以下新工单,并将根据 Free Support Policies 中提到的条款提供修复。

问题 ID:PDFNET-59658

如果您需要优先支持,您可以获取 Paid Support Services,以及直接访问我们的付费支持管理团队。