首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenHtmlToPdf访问被ASP.NET拒绝

OpenHtmlToPdf访问被ASP.NET拒绝
EN

Stack Overflow用户
提问于 2019-10-27 12:59:39
回答 1查看 2.6K关注 0票数 3

在我的ASP.NET应用程序(.NET Framework4.7)中,我使用OpenHtmlToPdf根据网站中的页面创建PDF。

它在本地工作,但在服务器生产中不起作用:我有以下错误:

异常类型: System.ComponentModel.Win32Exception异常消息:访问被拒绝 堆栈跟踪:在System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)在System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)在OpenHtmlToPdf.HtmlToPdfConverterProcess.Convert(ConversionSource conversionSource)在OpenHtmlToPdf.Pdf.DocumentBuilder.ReadContentUsingTemporaryFile(String temporaryFilename)

我认为这个问题与wkhtmltopdf有关,因为OpenHtmlToPdf正在使用这个库来生成PDF。代码很简单。

代码语言:javascript
运行
复制
    var pdf = Pdf.From(html)
                 .WithGlobalSetting("orientation", "Landscape")
                 .WithObjectSetting("web.defaultEncoding", "utf-8")
                 .Content();

    return File(pdf, System.Net.Mime.MediaTypeNames.Application.Octet, "Reference.pdf");

那么,如何生成PDF呢?

EN

Stack Overflow用户

发布于 2019-10-27 13:28:09

OpenHTMLToPDF使用Path.GetTempPath()和Guid.NewGuid()创建临时文件。确保正在运行的进程有足够的privelegdes来写入Path.GetTempPath()返回的路径;

这里的参考是负责创建临时文件名和编写它的源代码。

代码语言:javascript
运行
复制
//inside TemporaryPdf class
public static string TemporaryFilePath() 
{
  return Path.Combine(Path.GetTempPath(), "OpenHtmlToPdf", TemporaryPdf.TemporaryFilename());
}

private static string TemporaryFilename()
{
  return Guid.NewGuid().ToString("N") + ".pdf";
}

然后在调用内容时使用它。

代码语言:javascript
运行
复制
  // inside the Pdf class
  public byte[] Content()
  {
    return this.ReadContentUsingTemporaryFile(TemporaryPdf.TemporaryFilePath());
  }

  private byte[] ReadContentUsingTemporaryFile(string temporaryFilename)
  {
    this._globalSettings["out"] = temporaryFilename;
    HtmlToPdfConverterProcess.ConvertToPdf(this._html, this._globalSettings, this._objectSettings);
    byte[] numArray = TemporaryPdf.ReadTemporaryFileContent(temporaryFilename);
    TemporaryPdf.DeleteTemporaryFile(temporaryFilename);
    return numArray;
  }

其余的代码可以在GitHub上找到:OpenHTMLToPDF

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58579634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档