1、参考https://cloud.tencent.com/developer/ask/148120
/// <summary>
/// 转换文件
/// </summary>
/// <param name="src"></param>
/// <param name="dest"></param>
public void ToBackgroundPDF(string src, string dest)
{
var pdfReader = new PdfReader(src);
PdfDocument pdfDoc = new PdfDocument(pdfReader,
new PdfWriter(dest,
new WriterProperties().AddUAXmpMetadata().SetPdfVersion(pdfVersion)).SetSmartMode(true)
);
try
{
// BM_NORMAL; //0.5 正常的,标准的
// BM_LUMINOSITY; //0.5 光度;光明;光辉
// BM_COLOR; //0 色彩
// BM_SATURATION; //0 饱和,饱和状态
// BM_HUE; //0 色彩;色度;色调;叫声
// BM_EXCLUSION; //1 排斥,排除在外;被排除在外的人(或事物)
// BM_SOFT_LIGHT; //0.5 柔光;柔光模式;柔光灯
// BM_HARD_LIGHT; //0.5 强光
// BM_DIFFERENCE; //1 差异,不同之处;差额;分歧
// BM_COLOR_DODGE; //0.5 颜色减淡
// BM_LIGHTEN; //0.5 减轻;发亮, 使照亮;使轻松
// BM_DARKEN; //1 (使)变暗,变黑;(使)变得阴郁;(脸色)变阴沉
// BM_OVERLAY; //1 套图透明膜;覆盖图;覆盖物,涂层;覆盖;附加的特性
// BM_SCREEN; //0.5 隐藏,遮蔽;庇护,包庇
// BM_MULTIPLY; //1 多层的
// BM_COLOR_BURN; //0 颜色加深
var gState = new PdfExtGState().SetFillOpacity(1f).SetBlendMode(PdfExtGState.BM_DARKEN);
iText.Kernel.Colors.Color bgColour = new DeviceRgb(199, 237, 204);
int nPages = pdfDoc.GetNumberOfPages();
for (int i = 1; i <= nPages; i++)
{
PdfPage page = pdfDoc.GetPage(i);
PdfCanvas canvas = new PdfCanvas(page);
iText.Kernel.Geom.Rectangle rect = page.GetPageSize();
//I used custom rgb for Color
canvas.SaveState()
.SetExtGState(gState)
.SetFillColor(bgColour)
.Rectangle(rect)
.FillStroke()
.RestoreState();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if (pdfDoc != null && !pdfDoc.IsClosed())
pdfDoc.Close();
}
}