2010-10-26 25 views

Trả lời

17

Đây là một mẫu (một vài dòng thêm vào mẫu HelloWorld):

// Add some text to the paragraph 
paragraph.AddFormattedText("Hello, World!", TextFormat.Italic); 

// Add Bulletlist begin 
Style style = document.AddStyle("MyBulletList", "Normal"); 
style.ParagraphFormat.LeftIndent = "0.5cm"; 
string[] items = "Dodge|Nissan|Ford|Chevy".Split('|'); 
for (int idx = 0; idx < items.Length; ++idx) 
{ 
    ListInfo listinfo = new ListInfo(); 
    listinfo.ContinuePreviousList = idx > 0; 
    listinfo.ListType = ListType.BulletList1; 
    paragraph = section.AddParagraph(items[idx]); 
    paragraph.Style = "MyBulletList"; 
    paragraph.Format.ListInfo = listinfo; 
} 
// Add Bulletlist end 

return document; 

Tôi không sử dụng phương pháp AddToList để có nó tất cả ở một nơi. Trong một ứng dụng thực sự tôi muốn sử dụng phương thức đó (đó là một phương thức do người dùng định nghĩa, mã được đưa ra in this thread).

+1

Rất tốt, cảm ơn bạn. Tôi sẽ thêm chi tiết này vào phong cách để làm cho nó phù hợp đúng: style.ParagraphFormat.LeftIndent = "1cm"; style.ParagraphFormat.FirstLineIndent = "-0.5cm"; –

+0

Tôi hơi bối rối. Mỗi danh sách viên đạn có được coi là một đoạn không? –

+2

@Sabareesh Kkanan: Mỗi mục có dấu đầu dòng là một đoạn, danh sách dấu đầu dòng là một chuỗi các đoạn văn. Điều này cho phép định dạng nâng cao (ví dụ: thụt lề dòng đầu tiên) nếu một mục nhập kéo dài nhiều hơn một dòng. –

1

Với PDFSharp bạn phải vẽ đạn cho mình.

Với MigraDoc bạn thêm một đoạn và đặt paragraph.Format.ListInfo cho đoạn này để tạo danh sách dấu đầu dòng.

Chuỗi được nối kết hiển thị hai thường trình trợ giúp: DefineList() chỉ đặt biến thành viên để lần sau danh sách mới sẽ được tạo. AddToList() được gọi cho mỗi mục nhập.

Chỉ cần gọi DefineList() để bắt đầu một danh sách dấu đầu dòng mới, sau đó gọi AddToList() cho mỗi mục nhập. DefineList() tạo sự khác biệt lớn cho các danh sách được đánh số.

Điều chỉnh thói quen trợ giúp cho nhu cầu của bạn.

+0

bạn có bất kỳ mã ví dụ nào về điều này không. . vẫn không thể làm cho nó hoạt động. . – leora

4

ngắn gọn hơn một chút so với câu trả lời ở trên:

var document = new Document(); 

var style = document.AddStyle("BulletList", "Normal"); 
style.ParagraphFormat.LeftIndent = "0.5cm"; 
style.ParagraphFormat.ListInfo = new ListInfo 
{ 
    ContinuePreviousList = true, 
    ListType = ListType.BulletList1 
}; 

var section = document.AddSection(); 
section.AddParagraph("Bullet 1", "BulletList"); 
section.AddParagraph("Bullet 2", "BulletList"); 

Phong cách chỉ tạo ra một lần, bao gồm listinfo, và có thể được tái sử dụng ở khắp mọi nơi.

+0

Việc sử dụng lại 'ListInfo' không hoạt động đối với danh sách được đánh số. Tôi sẽ không sử dụng lại nó cho danh sách dấu đầu dòng, ít nhất là không khi tạo các tệp RTF có nhiều danh sách dấu đầu dòng. –

+0

@ User241.007 Tôi đã không nhận ra điều này sẽ không hoạt động đối với danh sách được đánh số hoặc tệp RTF. Tuy nhiên, đối với các tệp PDF, phương pháp này hoạt động tốt, cũng với nhiều danh sách dấu đầu dòng. Tôi sẽ để lại câu trả lời này, bởi vì đối với pdf ít nhất, phương pháp này tiết kiệm rất nhiều mã (bạn phải xác định listinfo chỉ một lần). –

+0

nếu đoạn không vừa trên 1 dòng, dòng tiếp theo không được thụt lề đúng cách. Có một thiết lập cho điều này? – MIKE

Các vấn đề liên quan