如何在 ASP.NET Core 3.1 MVC 中设置 wkhtmltopdf 选项?

Eth*_*sky 1 c# wkhtmltopdf asp.net-core-mvc

我正在尝试使用 wkhtmltopdf 和 A​​SP.NET Core 3.1 生成自定义 PDF,以下是文档: https: //wkhtmltopdf.org/usage/wkhtmltopdf.txt

我的主要问题是:我应该如何以及在哪里放置这些选项?在 cshtml 里面?在控制器内?在哪里?

我无法在互联网上找到如何在 ASP.NET Core MVC 中使用它的文档。

这是我的代码,运行正常:

public async Task<IActionResult> PDF(int? id)
{
        if(id == null)
        {
            return StatusCode(400);
        }

        var comanda = _comandasRepository.Get((int)id);

        if(comanda == null)
        {
            return StatusCode(404);
        }

        return await _generatePdf.GetPdf("Views/Comandas/PDF.cshtml", comanda);
}
Run Code Online (Sandbox Code Playgroud)

这会生成一个 PDF:

在此输入图像描述

但如果您注意到 PDF 有边距,我想删除这些边距。我在文档中发现我必须使用它,--margin-top 0但我不知道将其放在哪里才能使其工作。

我试过:

public async Task<IActionResult> PDF(int? id)
{
    if(id == null)
    {
        return StatusCode(400);
    }

    var comanda = _comandasRepository.Get((int)id);

    if(comanda == null)
    {
        return StatusCode(404);
    }

    return await _generatePdf.GetPdf("--margin-top 0 Views/Comandas/PDF.cshtml", comanda);
}
Run Code Online (Sandbox Code Playgroud)

但不起作用,我尝试将其放入 cshtml 代码内的纯 html 中,但也不起作用。我的问题看起来很简单,但我无法做到这一点,我该如何解决这个问题?

Ren*_*ena 5

我的主要问题是:我应该如何以及在哪里放置这些选项?在 cshtml 里面?在控制器内?在哪里?

您的共享文档用于教您如何使用命令行对 pdf 进行一些操作。它不用于在代码隐藏中工作。

但如果您注意到 PDF 有边距,我想删除这些边距。我在文档中发现我必须使用 --margin-top 0 但我不知道将其放在哪里才能使其工作。

您需要通过创建ConvertOptions实例来添加边距:

public async Task<IActionResult> PDF(int? id)
{
    var options = new ConvertOptions
    {
        PageMargins = new Wkhtmltopdf.NetCore.Options.Margins()
        {
            Top=0
        }
    };

    _generatePdf.SetConvertOptions(options);

    var comanda = _comandasRepository.Get((int)id);

    var pdf = await _generatePdf.GetByteArray("Views/Comandas/PDF.cshtml", comanda);

    var pdfStream = new System.IO.MemoryStream();
    pdfStream.Write(pdf, 0, pdf.Length);
    pdfStream.Position = 0;
    return new FileStreamResult(pdfStream, "application/pdf");
}
Run Code Online (Sandbox Code Playgroud)

更详细的使用方法可以在github上下载示例代码:

https://github.com/fpanaccia/Wkhtmltopdf.NetCore.Example