54 lines
1.4 KiB
C#
54 lines
1.4 KiB
C#
using iText.Kernel.Pdf;
|
|
using iText.Kernel.Pdf.Canvas;
|
|
|
|
#if NETFRAMEWORK
|
|
using System.IO;
|
|
using System;
|
|
#endif
|
|
|
|
namespace EnvelopeGenerator.PdfEditor
|
|
#if NET
|
|
;
|
|
#elif NETFRAMEWORK
|
|
{
|
|
#endif
|
|
|
|
public static class Extensions
|
|
{
|
|
#region Edit PDF document
|
|
public static TStream Edit<TStream>(this TStream inputStream, Action<PdfDocument> edit)
|
|
where TStream : Stream, new()
|
|
{
|
|
using (var outputStream = new TStream())
|
|
{
|
|
using (var pdfDoc = new PdfDocument(new PdfReader(inputStream), new PdfWriter(outputStream)))
|
|
{
|
|
edit(pdfDoc);
|
|
}
|
|
return outputStream;
|
|
}
|
|
}
|
|
|
|
public static byte[] Edit(this byte[] pdfBytes, Action<PdfDocument> edit)
|
|
{
|
|
using (var inputStream = new MemoryStream(pdfBytes))
|
|
{
|
|
return inputStream.Edit(edit).ToArray();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public static byte[] Design(this byte[] pdfBytes, params (int pageIndex, Action<PdfCanvas> design)[] pageDesign)
|
|
=> pdfBytes.Edit(doc =>
|
|
{
|
|
foreach((int pageIndex, Action<PdfCanvas> design) in pageDesign)
|
|
{
|
|
var page = doc.GetPage(pageIndex);
|
|
var canvas = new PdfCanvas(page);
|
|
design(canvas);
|
|
}
|
|
});
|
|
}
|
|
#if NETFRAMEWORK
|
|
}
|
|
#endif |