Skip to content
ComPDF

完整示例

创建发票文档

csharp
public void GenerateInvoice()
{
    // 创建文档
    using (CDocument document = new CDocument())
    {
        // 创建 A4 页面
        CPage page = document.CreatePage(595, 842);

        // 创建页面容器
        CDiv container = page.CreateDiv();
        container.SetPadding(40);

        // 创建标题样式
        CStyle titleStyle = document.CreateStyle();
        titleStyle.SetFontSize(24);
        titleStyle.SetFontWeight(CFontWeight.Bold);
        titleStyle.SetMarginBottom(20);
        titleStyle.SetTextAlignment(CTextAlignment.Center);

        // 添加标题
        CText title = container.CreateText("销售发票");
        title.AddStyle(titleStyle);

        // 添加发票信息
        CDiv infoSection = container.CreateDiv();
        infoSection.SetMarginBottom(20);

        CParagraph invoiceNo = infoSection.CreateParagraph("发票编号: INV-2024-001");
        invoiceNo.SetFontSize(12);

        CParagraph date = infoSection.CreateParagraph("日期: 2024-01-15");
        date.SetFontSize(12);

        // 创建产品表格
        CTable table = container.CreateTable(4);
        table.UseAllAvailableWidth();
        table.SetMarginBottom(20);

        // 表头
        table.StartNewHeaderRow();
        table.CreateHeaderCell().CreateText("产品名称");
        table.CreateHeaderCell().CreateText("数量");
        table.CreateHeaderCell().CreateText("单价");
        table.CreateHeaderCell().CreateText("金额");

        // 表格数据
        string[] products = { "产品 A", "产品 B", "产品 C" };
        int[] quantities = { 2, 5, 3 };
        decimal[] prices = { 100m, 50m, 75m };

        for (int i = 0; i < products.Length; i++)
        {
            table.StartNewRow();
            table.CreateCell().CreateText(products[i]);
            table.CreateCell().CreateText(quantities[i].ToString());
            table.CreateCell().CreateText($"¥{prices[i]}");
            table.CreateCell().CreateText($"¥{quantities[i] * prices[i]}");
        }

        // 计算总计
        decimal total = 0;
        for (int i = 0; i < products.Length; i++)
        {
            total += quantities[i] * prices[i];
        }

        // 表尾 - 总计
        table.StartNewFooterRow();
        CCell totalLabelCell = table.CreateFooterCell(colspan: 3);
        totalLabelCell.CreateText("总计");
        totalLabelCell.SetTextAlignment(CTextAlignment.Right);
        totalLabelCell.SetFontWeight(CFontWeight.Bold);

        CCell totalAmountCell = table.CreateFooterCell();
        totalAmountCell.CreateText($"¥{total}");
        totalAmountCell.SetFontWeight(CFontWeight.Bold);

        // 添加备注
        CParagraph notes = container.CreateParagraph("备注:请在 30 天内付款。");
        notes.SetFontSize(10);
        notes.SetFontColor(new CColor(100, 100, 100, 255));

        // 保存文档
        document.SaveToFile("invoice.pdf");
    }
}

创建报告文档

csharp
public void GenerateReport()
{
    using (CDocument document = new CDocument())
    {
        CPage page = document.CreatePage(595, 842);
        CDiv container = page.CreateDiv();
        container.SetPadding(50);

        // 标题
        CText title = container.CreateText("年度报告");
        title.SetFontSize(28);
        title.SetFontWeight(CFontWeight.Bold);
        title.SetTextAlignment(CTextAlignment.Center);

        // 添加章节
        AddSection(container, "1. 概述",
            "本报告概述了公司在过去一年的主要成就和发展方向...");

        // 添加图表
        CDiv chartSection = container.CreateDiv();
        chartSection.SetMarginTop(20);
        chartSection.SetMarginBottom(20);

        CText chartTitle = chartSection.CreateText("2. 销售数据");
        chartTitle.SetFontSize(18);
        chartTitle.SetFontWeight(CFontWeight.Bold);

        CImage chart = chartSection.CreateImage("path/to/chart.png");
        chart.SetWidth(400);
        chart.SetHeight(300);
        chart.SetHorizontalAlignment(CHorizontalAlignment.Center);

        // 添加关键指标列表
        CText metricsTitle = container.CreateText("3. 关键指标");
        metricsTitle.SetFontSize(18);
        metricsTitle.SetFontWeight(CFontWeight.Bold);

        CList metricsList = container.CreateList();
        metricsList.SetListSymbol(CListSymbolType.Disc);
        metricsList.CreateListItem("年度收入增长: 25%");
        metricsList.CreateListItem("客户满意度: 92%");
        metricsList.CreateListItem("市场份额提升: 3%");

        document.SaveToFile("report.pdf");
    }
}

private void AddSection(CDiv container, string heading, string content)
{
    CParagraph headingPara = container.CreateParagraph(heading);
    headingPara.SetFontSize(18);
    headingPara.SetFontWeight(CFontWeight.Bold);
    headingPara.SetMarginTop(20);
    headingPara.SetMarginBottom(10);

    CParagraph contentPara = container.CreateParagraph(content);
    contentPara.SetFontSize(12);
    contentPara.SetTextAlignment(CTextAlignment.Justify);
    contentPara.SetMultipliedLeading(1.5f);
}