小桃桃的旅行日记 發表於 2025-6-4 17:18:00

C# Wkhtmltopdf HTML转PDF碰到的问题

<blockquote>
<p>最近碰到一个Html转PDF的需求,看了一下基本上都是需要依赖Wkhtmltopdf,需要在Windows或者linux安装这个可以后使用。找了一下选择了HtmlToPDFCore,这个库是对Wkhtmltopdf.NetCore简单二次封装,这个库的好处就是通过NuGet安装HtmlToPDFCore就带了Windows/Mac/Linux的依赖包,就是包有点大。也可以使用HtmlToPDFCore包含了Wkhtmltopdf.NetCore,直接用Wkhtmltopdf.NetCore也是可以的。</p>
</blockquote>
<p><strong>下面总结一下碰到的问题:</strong></p>
<h5 id="1权限问题">1、权限问题</h5>
<pre><code>An error occurred trying to start process '/path/rotativa/Linux/wkhtmltopdf' with working directory '/path'. Permission denied
</code></pre>
<p>本质上Wkhtmltopdf.NetCore是通过进程调用Wkhtmltopdf的,在Linux会有执行权限问题,需要给到wkhtmltopdf执行权限<br>
<img src="https://img2024.cnblogs.com/blog/705163/202506/705163-20250604164139055-775158416.png"></p>
<h5 id="2中文乱码的问题">2、中文乱码的问题</h5>
<p>中文在Windows是正常的,但是Linux有问题</p>
<pre><code># 安装中文字体包
sudo apt-get update
sudo apt-get install -y \
    fonts-wqy-microhei \
    fonts-wqy-zenhei \
    fonts-noto-cjk \
    ttf-mscorefonts-installer \
    fontconfig

# 刷新字体缓存
sudo fc-cache -fv

# 验证中文字体安装
fc-list :lang=zh
</code></pre>
<h5 id="3直接通过wkhtmltopdf检查是否可以正常使用">3、直接通过wkhtmltopdf检查是否可以正常使用</h5>
<p>wkhtmltopdf是可以直接调用的<br>
<img src="https://img2024.cnblogs.com/blog/705163/202506/705163-20250604171727625-644258999.png"><br>
如果输出的pdf是正常的,那么在代码里调用也是正常的</p>
<p>接下来就可以正常使用了:</p>
<pre><code>HtmlToPDFCore.HtmlToPDF htmlToPDF   = new HtmlToPDFCore.HtmlToPDF();
var html ="&lt;html&gt;&lt;body&gt;123中文&lt;/body&gt;&lt;/html&gt;";
return File(htmlToPDF.ReturnPDF(html), "application/pdf", $"{id}_{DateTime.Now:yyyyMMddHHmmss}.pdf");
</code></pre>
<p>HtmlToPDFCore项目地址:https://github.com/carloscds/HtmlToPDFCore</p><br><br>
来源:https://www.cnblogs.com/dx5800/p/18910695
頁: [1]
查看完整版本: C# Wkhtmltopdf HTML转PDF碰到的问题