此平台不支持 System.Drawing.Common - 在 Windows、VS2019 上

问题描述 投票:0回答:2

我正在从 WorkerService 类调用类库项目中的函数。这两个应用程序都使用 .net core 3.1。我正在 Windows 10 上本地编译代码并使用 Visual Studio 2019。

我到底错过了什么?

这是我使用 PdfSharp 的代码

                PdfDocument doc = new PdfDocument();
                doc.Options.FlateEncodeMode = PdfFlateEncodeMode.BestCompression;
                doc.Options.UseFlateDecoderForJpegImages = PdfUseFlateDecoderForJpegImages.Automatic;
                doc.Options.NoCompression = false;
                doc.Options.CompressContentStreams = true;
                Image MyImage = Image.FromFile(imageLocation);
                for (int PageIndex = 0; PageIndex < MyImage.GetFrameCount(FrameDimension.Page); PageIndex++)
                {
                    MyImage.SelectActiveFrame(FrameDimension.Page, PageIndex);
                    XImage img = XImage.FromGdiPlusImage(MyImage);
                    var page = new PdfPage();
                    page.Size = PageSize.Letter;
                    if (MyImage.Width > MyImage.Height)
                    {
                        // In case the scanned POD is landscape, rotate the image by 90 degrees
                        MyImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
                        page.Rotate = 270;
                    }
                    doc.Pages.Add(page);
                    XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[doc.Pages.Count - 1]);
                    xgr.DrawImage(img, 0, 0, page.Width, page.Height);
                    xgr.Dispose();
                }
                doc.Save(Savepath);
                doc.Close();

这条线上火爆了

 Image MyImage = Image.FromFile(imageLocation);
c# asp.net .net-core pdfsharp
2个回答
2
投票

.net core 的整个概念是减少(如果不是完全消除的话)对 Windows 代码的依赖,因此它变得多平台,甚至与 CPU“处理器”无关(允许 .net 代码在您的手机、平板电脑上运行) 、Linux,甚至一些小型 Raspberry 设备,甚至不需要 Intel/AMD 处理器即可运行此类代码)。

因此,您必须消除对 PDF Sharp 使用的 windows.system.drawing 的依赖。事实上,经常使用任何非 .net 核心库和参考会给您带来很大的痛苦,因为任何 .net 库(非核心)通常会导致对 Windows 的依赖。

我相信你可以只坚持文本,但如果你在图形中推进,那么你必须更改你的代码。

这里现在有一个 nuget 包:

https://github.com/ststeiger/PdfSharpCore

它还没有 100% 黄金时段准备就绪,但有些人报告该库取得了良好的成功。

可以在这里找到有关此问题的讨论:

https://github.com/empira/PDFsharp/issues/6


0
投票

如果您的 System.Drawing 版本不支持项目的目标框架版本,您可能会收到此错误。例如,如果您使用的是最新的 System.Drawing.Common,则将目标框架更改为 netcore 8 即可。

© www.soinside.com 2019 - 2024. All rights reserved.