gpt4 book ai didi

c# - ExpertPdf 转换错误 : WebKit Navigation timeout in GetPdfBytesFromUrl

转载 作者:行者123 更新时间:2023-11-30 18:19:04 26 4
gpt4 key购买 nike

我正在努力在不改变其功能的情况下升级 .NET 应用程序。到目前为止我所做的是:

  • 从 mvc 2 升级到 mvc 4
  • 从框架 3.5 升级到 4.0
  • 使用 visual studio 2015 而不是 2010
  • 以同样的方式升级定制的实用程序和 mvc

现在我被困在自定义实用程序 dll 中的 pdf 转换。我得到的错误在下图中。它说:

ExportHtmlToPdfBytes failed for url http://localhost:4984/Rijopdracht.mvc/Print/861175: Conversion error: WebKit Navigation timeout.

Error message.

该链接在代理后面可用和可访问。 ExportHtmlToPdfBytes 方法如下所示:

        public byte[] ExportHtmlToPdfBytes(string url)
{
try
{
PdfConverter pdfConverter = CreatePdfConvertor();

byte[] bytes = pdfConverter.GetPdfBytesFromUrl(url);

return bytes;
}
catch (Exception ex)
{
throw new WrapperException(ex, "ExportHtmlToPdfBytes failed for url {0}:", url);
}
}

在调试期间,我发现程序在调用函数 GetPdfBytesFromUrl 时中断。程序中断后,我用来访问 url 的代理用户被阻止。我发现当且仅当密码输入错误 6 次或更多次时,用户才会被阻止。

我三次检查了来自应用程序设置的用户名和密码,它们都是正确的。有人可以告诉我这是怎么回事以及如何解决这个问题吗?

这个函数来自的完整类PdfUtilities是:

using ExpertPdf.HtmlToPdf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Jumbo.Utilities
{
public class PdfUtilities
{
public PdfUtilities() {
FooterText = String.Empty;
FitWidth = false;
LeftMargin = 5;
RightMargin = 5;
TopMargin = 5;
BottomMargin = 5;
PdfCompressionLevel = PdfCompressionLevel.Normal;
JpegCompressionLevel = 10;
}

public string FooterText { get; set; }
public string AuthenticationUsername { get; set; }
public string AuthenticationPassword { get; set; }
public bool FitWidth { get; set; }
public string BaseUrl { get; set; }
public int LeftMargin { get; set; }
public int RightMargin { get; set; }
public int TopMargin { get; set; }
public int BottomMargin { get; set; }
public int JpegCompressionLevel { get; set; }
public PdfCompressionLevel PdfCompressionLevel { get; set; }

private PdfConverter CreatePdfConvertor()
{
PdfConverter pdfConverter = new PdfConverter();

pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PDFPageOrientation.Landscape;
pdfConverter.PdfDocumentOptions.LiveUrlsEnabled = false;
pdfConverter.PdfDocumentOptions.ShowHeader = true;
pdfConverter.PdfDocumentOptions.ShowFooter = true;
pdfConverter.PdfDocumentOptions.LeftMargin = LeftMargin;
pdfConverter.PdfDocumentOptions.RightMargin = RightMargin;
pdfConverter.PdfDocumentOptions.TopMargin = TopMargin;
pdfConverter.PdfDocumentOptions.BottomMargin = BottomMargin;
pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true;
pdfConverter.PdfDocumentOptions.EmbedFonts = true;
pdfConverter.PdfDocumentOptions.JpegCompressionLevel = JpegCompressionLevel;


if (FitWidth)
{
pdfConverter.PageWidth = 0;
pdfConverter.PdfDocumentOptions.FitWidth = true;
pdfConverter.PdfDocumentOptions.StretchToFit = true;
}
else
pdfConverter.PdfDocumentOptions.FitWidth = false;

//pdfConverter.PageWidth = 0;
pdfConverter.PdfDocumentOptions.ShowHeader = false;

pdfConverter.PdfFooterOptions.FooterTextColor = System.Drawing.Color.Black;
pdfConverter.PdfFooterOptions.DrawFooterLine = false;
pdfConverter.PdfFooterOptions.PageNumberText = "Page";
pdfConverter.PdfFooterOptions.ShowPageNumber = true;
pdfConverter.PdfFooterOptions.FooterText = FooterText;

if (!string.IsNullOrEmpty(AuthenticationUsername) && !string.IsNullOrEmpty(AuthenticationPassword))
{
pdfConverter.AuthenticationOptions.Username = AuthenticationUsername;
pdfConverter.AuthenticationOptions.Password = AuthenticationPassword;
}
else
{
string username = SettingsUtilities.GetSetting<string>(GenericConstants.AS_PROXY_USERNAME, null);
if (!String.IsNullOrEmpty(username))
{
string password = SettingsUtilities.GetSetting<string>(GenericConstants.AS_PROXY_PASSWORD, null);
pdfConverter.AuthenticationOptions.Username = username;
pdfConverter.AuthenticationOptions.Password = password;
}
}

pdfConverter.LicenseKey = "tZ6HlY2Vh4WBg5WDm4WVhoSbhIebjIyMjA==";

return pdfConverter;
}

public byte[] ExportHtmlToPdfBytes(string url)
{
try
{
PdfConverter pdfConverter = CreatePdfConvertor();

byte[] bytes = pdfConverter.GetPdfBytesFromUrl(url);

return bytes;
}
catch (Exception ex)
{
throw new WrapperException(ex, "ExportHtmlToPdfBytes failed for url {0}:", url);
}
}

public byte[] ExportHtmlStringToPdfBytes(string html)
{
PdfConverter pdfConverter = CreatePdfConvertor();

byte[] bytes;
if (BaseUrl == null)
bytes = pdfConverter.GetPdfBytesFromHtmlString(html);
else
bytes = pdfConverter.GetPdfBytesFromHtmlString(html, BaseUrl);

return bytes;
}

public void SaveHtmlToPdf(string url, string saveLocation)
{
Logging.LogVerboseCaller(Logging.Cat.Utilities, "Start export to htm for " + url);
byte[] contents = ExportHtmlToPdfBytes(url);
Logging.LogVerboseCaller(Logging.Cat.Utilities, "End export. Start save to " + saveLocation);
FileUtilities.SaveFile(saveLocation, contents);
Logging.LogVerboseCaller(Logging.Cat.Utilities, "End save");
}
}
}

最佳答案

我的一位同事能够解决它。

首先:如果我们需要代理,我们不应该使用 AuthenticationOptions。我相信这些是为了使用您的 ExpertPDF 帐户登录。 PdfConverter 类的代理属性可用于此目的。

但是,这不是问题所在。我的问题是我使用了早期版本的许可证。错误并不清楚,但它是一个无效的许可证 key 。

为了对此进行测试,我们注释掉了许可证 key 。我们自动使用了在生成的 pdf 上加了水印的演示版本,但它告诉我们是错误的许可证 key 把它搞砸了。

关于c# - ExpertPdf 转换错误 : WebKit Navigation timeout in GetPdfBytesFromUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914754/

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