我正在从 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);
.net core 的整个概念是减少(如果不是完全消除的话)对 Windows 代码的依赖,因此它变得多平台,甚至与 CPU“处理器”无关(允许 .net 代码在您的手机、平板电脑上运行) 、Linux,甚至一些小型 Raspberry 设备,甚至不需要 Intel/AMD 处理器即可运行此类代码)。
因此,您必须消除对 PDF Sharp 使用的 windows.system.drawing 的依赖。事实上,经常使用任何非 .net 核心库和参考会给您带来很大的痛苦,因为任何 .net 库(非核心)通常会导致对 Windows 的依赖。
我相信你可以只坚持文本,但如果你在图形中推进,那么你必须更改你的代码。
这里现在有一个 nuget 包:
https://github.com/ststeiger/PdfSharpCore
它还没有 100% 黄金时段准备就绪,但有些人报告该库取得了良好的成功。
可以在这里找到有关此问题的讨论:
如果您的 System.Drawing 版本不支持项目的目标框架版本,您可能会收到此错误。例如,如果您使用的是最新的 System.Drawing.Common,则将目标框架更改为 netcore 8 即可。