gpt4 book ai didi

imageresizer - 使用 ImageResizer 调整 PDF 大小有时会导致异常,直到重新启动应用程序池才能解决

转载 作者:行者123 更新时间:2023-12-04 18:20:05 26 4
gpt4 key购买 nike

我们正在使用 ImageResizer (imageresizing.net) 来生成 PDF 首页的缩略图。它工作得很好(与 ImageResizer 相关的几乎所有其他事情一样),除了我在此处发布的以下场景,这些场景可能信息不足,希望有人以适当的解决方案遇到相同的问题。

1) 在数千个 PDF 中,有几个 PDF 不允许生成缩略图。每次尝试都会导致以下异常:

Message :  An error occurred while parsing EntityName. Line 3, position 85.
Source: System.Xml
Stack Trace :
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseEntityName()
at System.Xml.XmlTextReaderImpl.ParseEntityReference()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlReader.ReadString()
at System.Xml.XmlReader.ReadElementString()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPdfInfo.Read4_PdfInfo(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPdfInfo.Read5_pdf()

TargetSite : Void Throw(System.String, System.String)

我们的假设是,实际的 PDF 文件实际上以某种方式(无论是元数据还是其他方式)损坏,导致在尝试对其进行解析时出现异常。不幸的是,无法从源重新生成它们(源不再可用)。

似乎没有发布与此问题相关的任何 GhostScript 或 ImageResizer 错误。

2)当尝试一次在多个 PDF 上生成缩略图时(即 > ~100 的批处理),它通常工作正常,但有时它会在一个 PDF 上踢 jar 头(没有押韵或原因),并且所有后续缩略图生成尝试都失败,直到应用程序池重新启动。哎哟。最初我们并不太担心,因为我们只是在开始时进行批量生成,而随后的缩略图生成数量会少得多。然而,我们后来发现,即使数量较少,这个问题也会偶尔出现。我们会自动收到警报,但必须重置应用程序是必须使用的大锤。
Source: ImageResizer
Stack Trace :
at ImageResizer.ImageBuilder.LoadImage(Object source, ResizeSettings settings, Boolean restoreStreamPos)
at ImageResizer.ImageBuilder.BuildJob(ImageJob job)
at ImageResizer.ImageBuilder.Build(ImageJob job)
at ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource, Boolean addFileExtension)
at ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings, Boolean disposeSource)
at ImageResizer.ImageBuilder.Build(Object source, Object dest, ResizeSettings settings)
at ImageResizer.InterceptModule.<>c__DisplayClass2.<HandleRequest>b__1(Stream stream)
at ImageResizer.Plugins.DiskCache.CustomDiskCache.<>c__DisplayClasse.<TryWriteFile>b__d()
at ImageResizer.Plugins.DiskCache.LockProvider.TryExecute(String key, Int32 timeoutMs, LockCallback success)
at ImageResizer.Plugins.DiskCache.CustomDiskCache.TryWriteFile(CacheResult result, String physicalPath, String relativePath, ResizeImageDelegate writeCallback, DateTime sourceModifiedUtc, Int32 timeoutMs, Boolean recheckFS)
at ImageResizer.Plugins.DiskCache.CustomDiskCache.GetCachedFile(String keyBasis, String extension, ResizeImageDelegate writeCallback, DateTime sourceModifiedUtc, Int32 timeoutMs, Boolean asynchronous)
at ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e)
at ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext context, IResponseArgs e)
at ImageResizer.InterceptModule.HandleRequest(HttpContext context, String virtualPath, NameValueCollection queryString, IVirtualFile vf)
at ImageResizer.InterceptModule.CheckRequest_PostAuthorizeRequest(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
TargetSite : System.Drawing.Bitmap LoadImage(System.Object, ImageResizer.ResizeSettings, Boolean)

在这个问题上,我们假设这是一个内存/资源问题,但同样,如果无法忠实地重现问题,希望其他人已经遇到了问题并找到了解决方案。
  • IIS 7.5 (Windows Server 2008 R2)
  • ASP.NET MVC 3

  • 在 App Start 中使用以下内容强制生成指定文件夹中所有 PDF 的特定大小和类型的图像(通过不同的路径处理对 PDF 的实际访问以进行身份​​验证和下载跟踪):
            Config.Current.Pipeline.Rewrite += delegate(IHttpModule sender, HttpContext context, IUrlEventArgs ev)
    {
    if (!ev.VirtualPath.StartsWith(VirtualPathUtility.ToAbsolute("~/pdf/"), StringComparison.OrdinalIgnoreCase))
    return;

    ev.QueryString["width"] = "160";
    ev.QueryString["format"] = "png";
    };

    最佳答案

    如果在同一个可执行文件中启动多个实例,GhostScript 将永久崩溃。

  • 如果应用程序池中有多个应用程序或应用程序文件夹,则会发生这种情况
  • 或者,如果您没有手动禁用重叠回收。

  • [更新]

    特定于 PDF 的问题是由于元数据中未编码的 & 符号造成的;这是 PostScript 脚本中的一个缺陷,它返回有关 PDF 的信息,应该可以修复。

    关于imageresizer - 使用 ImageResizer 调整 PDF 大小有时会导致异常,直到重新启动应用程序池才能解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858731/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com