前言
使用 wkhtmltopdf 實現(xiàn)轉(zhuǎn)換 PDF 時,是否可以設(shè)置自定義頁眉和頁腳內(nèi)容?wkhtmltopdf 作為一個命令行工具,它提供了全局參數(shù)、大綱參數(shù)選項、頁面對象參數(shù)、頁眉和頁腳參數(shù)選項和目錄對象參數(shù)五種命令參數(shù)。本文介紹頁眉和頁腳參數(shù)選項實現(xiàn)自定義頁眉和頁腳內(nèi)容。
命令參數(shù)
1、頁眉和頁腳參數(shù)
--header-center [text]:在頁眉中居中指定文本;
--header-left [text]:將文本放置在頁眉的左側(cè);
--header-right [text]:將文本放置在頁眉的右側(cè);
--header-html [url]:允許對標題使用自定義的 HTML 文件【包含格式化文本、圖像等】;
--footer-center [text]:在頁腳中居中指定文本;
--footer-left [text]:將文本放在頁腳的左側(cè);
--footer-right [text]:將文本放置在頁腳的右側(cè);
--footer-html [url]:允許對頁腳使用自定義的 HTML 文件【包含格式化文本、圖像等】;
頁眉或頁腳參數(shù)的text用下面元素替換,則可顯示對應(yīng)的內(nèi)容。如 --footer-center "[page] of [topage]"
[page]:當前頁碼
[toPage]:總頁數(shù)
[date]:當前日期
[time]:當前時間
[title]:文檔標題
[subTitle]:文檔副標題
[pageNumber]:頁碼
[totalPages]:總頁數(shù)
#region 頁眉
--header-spacing [value]:控制頁眉與內(nèi)容之間的間距;
--header-font-size [size]:設(shè)置標題文本的字體大??;
--header-line:在頁眉下方顯示一條直線分隔正文;
#endregion
#region 頁腳
--footer-spacing [value]:控制頁腳與內(nèi)容之間的間距;
--footer-font-size [size]:設(shè)置頁腳文本的字體大??;
--footer-line:在頁腳上方顯示一條直線分隔正文;
#endregion
2、頁面對象參數(shù)
#region 部分
--print-media-type:用顯示媒體類型代替屏幕;
--no-print-media-type:不用顯示媒體類型代替屏幕;
--page-offset <offset>:設(shè)置頁碼的起始值(默認值為0);
--encoding <encoding>:為輸入的文本設(shè)置默認的編碼方式;
--zoom <float>:設(shè)置轉(zhuǎn)換成PDF時頁面的縮放比例(默認為1);
#endregion
3、全局參數(shù)
#region 部分
--margin-bottom <unitreal> 設(shè)置頁面的 底邊距;
--margin-left <unitreal> 設(shè)置頁面的 左邊距 (默認是 10mm);
--margin-right <unitreal> 設(shè)置頁面的 右邊距 (默認是 10mm);
--margin-top <unitreal> 設(shè)置頁面的 上邊距;
--page-height <unitreal> 頁面高度;
--page-size <Size> 設(shè)置頁面的尺寸,如:A4,Letter等,默認是:A4;
--page-width <unitreal> 頁面寬度;
--quiet 靜態(tài)模式,不在標準輸出中打印任何信息;
#endregion
4、命令參數(shù)詳解附錄
https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
自定義示例
1、轉(zhuǎn)換的HTML文件
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gbk">
<title>測式文件</title>
</head>
<body>
<div id="sse">
<input id="url" size=200 value="ws://127.0.0.1:8080/service" /><button id="btn1" onclick="changewebsocket(this)" tt=1>打開連接</button><br>
<input id="msg" size=200 value='測試內(nèi)容'/>
<button onclick="sendmsg()">發(fā)送數(shù)據(jù)</button><br>
<textarea id="onmsg" rows="10" cols="30"></textarea>
</div>
</body>
</html>
2、作為頁眉的HTML 文件
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Testing
</title>
</head>
<body>
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td style="max-width:40%">
<img alt="text" src="https://profile-avatar.csdnimg.cn/7d678480185a4ae5babed86c378e532e_funniyuan.jpg!1"
style="max-width:100%">
</td>
<td style="max-width:60%">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td align="center" style="font-size:30px;color:#e14a3a;font-family:SimHei;font-weight:600;padding:15px 0 5px">
Company Name
</td>
</tr>
<tr>
<td align="center" style="font-size:16px;color:#0a0f84;font-family:SimHei;padding-bottom:10px">
Invoice
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" style="width:100%;border-width:1px;border-style:solid;border-color:#000">
</td>
</tr>
</table>
</body>
</html>
3、實現(xiàn)與調(diào)用
using System.Diagnostics;
namespace Fountain.WinConsole.ToPDFOrImageDemo
{
public class ConverterPDF:IConverterEngine
{
/// <summary>
/// wkhtmltopdf 工具路徑
/// </summary>
public string ConverterPath { get; }
/// <summary>
/// 轉(zhuǎn)換類型
/// </summary>
public int EngineType { get; } = 1;
/// <summary>
///
/// </summary>
/// <param name="converterPath"></param>
public ConverterPDF(string converterPath)
{
ConverterPath = converterPath;
}
/// <summary>
///
/// </summary>
/// <param name="htmlPath"></param>
/// <param name="outputPath"></param>
/// <returns></returns>
public bool Convert(string htmlPath, string outputPath)
{
try
{
var ticks = DateTime.UtcNow.Ticks;
string optionSwitches = "";
#region 頁眉
// 設(shè)置標題字體大小
optionSwitches += "--header-font-size 10 ";
// 將 header.html 作為頁眉內(nèi)容
optionSwitches += "--header-html header.html ";
#endregion
#region 頁面
// 使用的打印介質(zhì)類型,而不是屏幕
optionSwitches += "--print-media-type ";
// 邊距
optionSwitches += "--margin-top 40mm --margin-bottom 10mm --margin-right 10mm --margin-left 10mm ";
// 紙張大小
optionSwitches += "--page-size A4 ";
#endregion
#region 頁腳
//
optionSwitches += "--footer-font-size 8 ";
// 在頁腳的居中部分顯示頁腳文本
optionSwitches += "--footer-right \"[page]/[topage]\" ";
#endregion
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = this.ConverterPath;
process.StartInfo.Arguments = $"{optionSwitches} \"{htmlPath}\" \"{outputPath}\" ";
process.Start();
}
catch (Exception ex)
{
throw new Exception("轉(zhuǎn)PDF出錯", ex);
}
return true;
}
}
}
using System.Text;
namespace Fountain.WinConsole.ToPDFOrImageDemo
{
internal class Program
{
static void Main(string[] args)
{
var ticks = DateTime.UtcNow.Ticks;
string outputpdf = $"{AppDomain.CurrentDomain.BaseDirectory}{ticks}.pdf";
string htmlPath = $"{AppDomain.CurrentDomain.BaseDirectory}test.html";
string convertPath= $"{AppDomain.CurrentDomain.BaseDirectory}wkhtmltopdf.exe";
ConverterPDF converter = new ConverterPDF(convertPath);
converter?.Convert(htmlPath, outputpdf);
Console.ReadKey();
}
}
}
小結(jié)
以上是頁眉和頁腳參數(shù)選項內(nèi)容介紹,并通過以個示例,了解其實現(xiàn)自定義頁眉和頁腳內(nèi)容的方式。
該文章在 2024/11/18 9:05:00 編輯過