Cách tạo tập tin Word, PDF với thư viện Spire.Doc, Spire.PDF bằng C#

232 lượt xem

Tải về dự án: Dammio_Spire

Có nhiều cách để tạo 1 tập tin DOC hoặc PDF với C#, trong đó cách thuận tiện nhất là dùng thư viện Spire.Doc của e-iceblue. Trang web này cung cấp 2 nhóm sản phẩm: 1 nhóm miễn phí và 1 nhóm thương mại. Trong bài này chúng ta sẽ sử dụng thư viện Spire.Doc miễn phí, thư viện này giới hạn 500 đoạn và 25 bảng trong 1 tập tin Word và PDF, đủ để tạo 1 tập tin có dung lượng vừa phải.

Đầu tiên, chúng ta tải 2 thư viện Spire.Doc và Spire.PDF bản miễn phí ở địa chỉ: https://www.e-iceblue.com/Download/download-word-for-net-free.htmlhttps://www.e-iceblue.com/Download/download-pdf-for-net-free.html. Bạn có thể tải về tại trang web này: Spire.rar

Sau đó, tạo 1 dự án C# Console và nhúng thư viện này vào dự án vừa tạo.

Trong thư mục Bin/Debug thật ra còn có thêm thư viện Spire.License.dll để Spire kiểm tra tình trạng bản quyền. Nguyên tắc tạo tập tin Word hay PDF là tạo đối tượng Document trước, sau đó đến Paragraph rồi đến các đối tượng Text, Table, Image, …

1. Tạo 1 đoạn văn bản
Ví dụ sau tạo 1 đoạn văn bản “Xin chào dammio!” in đậm canh giữa vào tập tin mới test.doc (hoặc test.pdf). Tập tin mới sẽ nằm ở thư mục Debug, bạn có thể tùy chỉnh đường dẫn tập tin tùy ý nếu muốn.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Spire.Doc;
using Spire.Pdf;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace TestProject
{
    class Program
    {
        static void Main(string[] args)
        {
            // Tạo đối tượng tài liệu (Document)
            Document doc = new Document();
            
            // Tạo đối tượng đoạn (Paragraph)
            Paragraph paragraph = doc.AddSection().AddParagraph();

            // Tạo văn bản (TextRange)
            Spire.Doc.Fields.TextRange text = paragraph.AppendText("Xin chào dammio.com!");
            //text.CharacterFormat.Italic = true;  // in nghiêng
            //text.CharacterFormat.UnderlineStyle = UnderlineStyle.Single; // gạch chân
            text.CharacterFormat.Bold = true;                                   // kiểu in đậm
            paragraph.Format.TextAlignment = TextAlignment.Center;              // văn bản canh giữa 
            paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;  // đoạn canh giữa
            //paragraph.Format.HorizontalAlignment = HorizontalAlignment.Left;  // đoạn canh trái  
            //paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right; // đoạn canh phải

            // Lưu đối tượng tài liệu vào tập tin test.doc (nằm ở thư mục Debug của dự án)
            doc.SaveToFile("test.doc", Spire.Doc.FileFormat.Doc);
            // doc.SaveToFile("test.pdf", Spire.Doc.FileFormat.PDF); -- tạo PDF

            // đóng đối tượng
            doc.Close();
        }
    }
}

2. Thêm kiểu chữ, kích thước chữ cho đoạn văn bản
Chúng ta sử dụng đối tượng ParagraphStyle để tạo kích thước, kiểu chữ sau đó thêm phong cách này vào đoạn văn bản bằng dòng lệnh paragraph.ApplyStyle(style.Name);

// Tạo văn bản (TextRange) --- dammio.com
Spire.Doc.Fields.TextRange text = paragraph.AppendText("Xin chào dammio.com!");
text.CharacterFormat.Bold = true;                                   // kiểu in đậm
paragraph.Format.TextAlignment = TextAlignment.Center;              // văn bản canh giữa 
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;  // đoạn canh giữa

// Tạo phong cách cho đoạn --- dammio.com
ParagraphStyle style = new ParagraphStyle(doc);
style.Name = "FontStyle";
style.CharacterFormat.FontName = "Century Gothic";		// kiểu chữ Century Gothic
style.CharacterFormat.FontSize = 20;					// kích thước 20
doc.Styles.Add(style);
paragraph.ApplyStyle(style.Name);

3. Thêm 1 đoạn mới
Quay lại mục 1, khi tạo 1 đoạn mới chúng ta dùng đoạn mã Paragraph paragraph = doc.AddSection().AddParagraph();, tuy nhiên để thêm 1 đoạn mới nữa bạn phải dùng hàm doc.Sections[0].AddParagraph(); như trong ví dụ sau đây.

// đoạn mới tên biến là  paragraph1
Paragraph paragraph1 = doc.Sections[0].AddParagraph();
// tên văn bản mới là text1
Spire.Doc.Fields.TextRange text1 = paragraph1.AppendText("Đây là nội dung bài viết");
text1.CharacterFormat.FontSize = 18;
text1.CharacterFormat.Bold = true;

4. Canh Tab
Để canh Tab thì dùng paragraph2.Format.Tabs.AddTab(175).Justification = TabJustification.Right; với TabJustification.Right là Tab phải và 175 (float) là vị trí Tab, ngoài ra có có Tab trái ở vị trí 375 (Left) và Tab giữa (Centered) chưa được thêm vào.

Paragraph paragraph2 = doc.Sections[0].AddParagraph();

// Canh Tab phải vị trí 175 --- dammio.com
paragraph2.Format.Tabs.AddTab(175).Justification = TabJustification.Right;
paragraph2.Format.Tabs.AddTab(375).Justification = TabJustification.Left;
//paragraph2.Format.Tabs.AddTab(175).Justification = TabJustification.Centered;
// Phải có \t để dịch đến Tab cần canh
Spire.Doc.Fields.TextRange text2 = paragraph2.AppendText("\t Canh phải \t Canh trái");

5. Chèn hình
Đầu tiên bạn phải thêm thư viện System.Drawing vào dự án (Add Reference), sau đó gọi 2 namespace ở trên đầu file code.

using Spire.Doc.Fields;
using System.Drawing;

Tiếp theo tạo đối tượng Bitmap và DocPicture để thêm hình vào đối tượng Document.

 // Tạo đối tượng hình ảnh DocPicture (using using Spire.Doc.Fields;)
DocPicture picture = doc.Sections[0].Paragraphs[0].AppendPicture(b1);

// Vị trí ảnh theo chiều dọc, ngang
picture.HorizontalPosition = 50.0F;
picture.VerticalPosition = 200.0F;

// Kích thước ảnh
picture.Width = 150;
picture.Height = 100;

 // Kiểu chèn ảnh nổi trên văn bản
 picture.TextWrappingStyle = TextWrappingStyle.InFrontOfText;

6. Thêm bảng biểu
Chúng ta dùng đối tượng Table để tạo bảng, trong đó tạo dòng tiêu đề trước và phần dữ liệu từng dòng sau.

// Dữ liệu mẫu
List<string> list = new List<string> { "Dammio", "John", "Adam" };

// Tạo đối tượng bảng Table
Spire.Doc.Table table = doc.Sections[0].AddTable(true);

// Tạo cột
String[] Header = { "STT", "Tên"};

// Số dòng và số cột cho bảng
table.ResetCells(list.Count + 1, Header.Length);

// Độ rộng bảng ở dòng 0 và 2 cột STT và Tên (tạo tiêu đề bảng)
doc.Sections[0].Tables[0].Rows[0].Cells[0].Width = 200;
doc.Sections[0].Tables[0].Rows[0].Cells[1].Width = 200;

// Tạo dòng tiêu đề cho bảng (dòng 0)
Spire.Doc.TableRow FRow = table.Rows[0];
FRow.IsHeader = true;
FRow.Height = 23;

for (int i = 0; i < Header.Length; i++)
{
	// Định dạng cell
	Paragraph p = FRow.Cells[i].AddParagraph();
	FRow.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
	p.Format.HorizontalAlignment = HorizontalAlignment.Center;

	// Định dạng văn bản trong bảng
	Spire.Doc.Fields.TextRange TR = p.AppendText(Header[i]);
	TR.CharacterFormat.FontName = "Times New Roman";
	TR.CharacterFormat.FontSize = 13;
	TR.CharacterFormat.Bold = true;
}

// Định dạng dữ liệu từng dòng (lấy từ list)
for (int r = 0; r < list.Count; r++)
{
	doc.Sections[0].Tables[0].Rows[r + 1].Cells[0].Width = 200;
	doc.Sections[0].Tables[0].Rows[r + 1].Cells[1].Width = 200;

	// Định dạng dòng thứ r + 1 (bỏ dòng đầu là tiêu đề)
	Spire.Doc.TableRow DataRow = table.Rows[r + 1];
	DataRow.Height = 20;

	DataRow.Cells[0].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
	Paragraph p1 = DataRow.Cells[0].AddParagraph();
	Spire.Doc.Fields.TextRange TR1 = p1.AppendText((r + 1).ToString()); // STT
	p1.Format.HorizontalAlignment = HorizontalAlignment.Center;

	DataRow.Cells[1].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
	Paragraph p2 = DataRow.Cells[1].AddParagraph();
	Spire.Doc.Fields.TextRange TR2 = p2.AppendText(list[r].ToString()); // Tên
	p2.Format.HorizontalAlignment = HorizontalAlignment.Center;
}

Kết quả từ trên xuống dưới chúng ta có file DOC như sau (file PDF cũng tương tự):

Kết luận: Như vậy bài này đã mô tả cách đơn giản để tạo tập tin Word, PDF dùng Spire.DOC, Spire.PDF. Ngoài ra bạn nên tìm hiểu thêm các thư viện hoặc các cách chèn đối tượng khác vào tập tin tùy theo yêu cầu.

Bình luận Facebook

Để lại bình luận

1 Comment on "Cách tạo tập tin Word, PDF với thư viện Spire.Doc, Spire.PDF bằng C#"

Thông báo khi có
avatar
1000
Sắp xếp theo:   mới nhất | cũ nhất | nhiều bình chọn nhất
Khoa KT51
Khách

Cách này dùng dễ hơn cách dùng thư viện Microsoft.Office.Interop.Word nhưng chắc cũng dựa trên thư viện đó.

wpDiscuz