摘要
在C#开发中,生成和编辑PDF文档是一个常见的需求,而PdfSharp是一个流行的库,可用于创建、编辑和操作PDF文件。
正文
首先,你需要在你的C#项目中安装PdfSharp库。你可以使用NuGet包管理器来安装它。

1.创建一个pdf文件

public Form1()
{
    InitializeComponent();
    //初使化字体
    GlobalFontSettings.FontResolver = new FontProvider();
}
private void btnCreatePdf_Click(object sender, EventArgs e)
{
    // 创建一个新的PDF文档
    PdfDocument document = new PdfDocument();
    // 添加一个空白页面
    PdfPage page = document.AddPage();
    // 获取页面的绘图上下文
    XGraphics gfx = XGraphics.FromPdfPage(page);
    // 添加文本到页面
     XFont font = new XFont("Arial", 20, XFontStyleEx.Italic);
    XTextFormatter tf = new XTextFormatter(gfx);
    tf.DrawString("Hello, PdfSharp!", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft);
    // 保存PDF文档到文件
    document.Save("example-1.pdf");
}
创建一个Provider
public class FontProvider: IFontResolver
{
    public string DefaultFontName => throw new NotImplementedException();
    public byte[] GetFont(string faceName)
    {
        using (var ms = new MemoryStream())
        {
            using (var fs = File.Open(faceName, FileMode.Open))
            {
                fs.CopyTo(ms);
                ms.Position = 0;
                return ms.ToArray();
            }
        }
    }
    public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
    {
        if (familyName == "Arial")
        {
            if (isBold && isItalic)
            {
                return new FontResolverInfo("arial.ttf");
            }
            else if (isBold)
            {
                return new FontResolverInfo("arial.ttf");
            }
            else if (isItalic)
            {
                return new FontResolverInfo("arial.ttf");
            }
            else
            {
                return new FontResolverInfo("arial.ttf");
            }
        }
        return null;
    }
}
2.添加图片到Pdf
private void btnAddImg_Click(object sender, EventArgs e)
{
    // 创建一个新的PDF文档
    PdfDocument document = new PdfDocument();
    PdfPage page = document.AddPage();
    XGraphics gfx = XGraphics.FromPdfPage(page);
    // 添加图像到页面
    XImage image = XImage.FromFile("feGsv0kJ6CEBng3.png");
    gfx.DrawImage(image, 10, 10, 200, 100);
    // 保存PDF文档
    document.Save("image_example-1.pdf");
}

3.合并多个Pdf

private void btnMergePdf_Click(object sender, EventArgs e)
{
    // 创建一个新的PDF文档
    PdfDocument mergedDocument = new PdfDocument();
    // 打开第一个PDF文档
    PdfDocument firstDocument = PdfReader.Open("example-1.pdf", PdfDocumentOpenMode.Import);
    // 将第一个文档的页面添加到合并文档
    foreach (PdfPage page in firstDocument.Pages)
    {
        mergedDocument.AddPage(page);
    }
    // 打开第二个PDF文档
    PdfDocument secondDocument = PdfReader.Open("image_example-1.pdf", PdfDocumentOpenMode.Import);
    // 将第二个文档的页面添加到合并文档
    foreach (PdfPage page in secondDocument.Pages)
    {
        mergedDocument.AddPage(page);
    }
    // 保存合并后的文档
    mergedDocument.Save("merged_documents.pdf");
}
该文章在 2024/6/1 15:27:28 编辑过