使用版本 4.2.5
我有一个允许用户上传 PDF 的应用程序,然后将其光栅化为图像流(使用 HiQPDF),然后我使用 ImageResizer 将其缩小。
在 PDF 的打印尺寸非常大的情况下,光栅化的结果图像非常大(30,000 像素 x 75,000 像素),因此 Image.Build() 失败并出现以下错误。
HiQPDF 在光栅化期间没有任何大小缩放选项,所以我有点卡住了。关于是否有办法解决此错误的任何想法?
Overflow error.
堆栈跟踪:
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, PointF[] destPoints, RectangleF srcRect, GraphicsUnit srcUnit, ImageAttributes imageAttr, DrawImageAbort callback, Int32 callbackData)
at System.Drawing.Graphics.DrawImage(Image image, PointF[] destPoints, RectangleF srcRect, GraphicsUnit srcUnit, ImageAttributes imageAttr)
at ImageResizer.ImageBuilder.InternalGraphicsDrawImage(ImageState state, Bitmap dest, Bitmap source, PointF[] targetArea, RectangleF sourceArea, Single[][] colorMatrix)
at ImageResizer.ImageBuilder.RenderImage(ImageState s)
at ImageResizer.ImageBuilder.Render(ImageState s)
at ImageResizer.ImageBuilder.Process(ImageState s)
at ImageResizer.ImageBuilder.BuildJobBitmapToBitmap(ImageJob job, Bitmap source, Boolean transparencySupported)
at ImageResizer.ImageBuilder.BuildJobBitmapToStream(ImageJob job, Bitmap source, Stream dest)
at ImageResizer.ImageBuilder.BuildJob(ImageJob job)
at ImageResizer.ImageBuilder.BuildInternal(ImageJob job)
at ImageResizer.ImageBuilder.BuildInQueue(ImageJob job, Boolean useSemaphore, Int32 maxQueuingMilliseconds, CancellationToken cancel)
at ImageResizer.ImageBuilder.Build(ImageJob job)
相关代码:
string strInstructions = $"maxwidth={maxWidthPixels};maxheight={maxHeightPixels};format=jpg;mode=max;";
strInstructions += "quality=" + ImageSaveQuality + ";";
using (var updatedImageFileStream = new MemoryStream())
{
ImageJob imageJob = new ImageJob(origFileStream, updatedImageFileStream,
new Instructions(strInstructions)
);
imageJob.Build();