2010-10-26 13 views

Respuesta

17

He aquí una muestra (unas pocas líneas añadidas a la muestra 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; 

yo no usar el método AddToList tenerlo todo en un solo lugar. En una aplicación real usaría ese método (es un método definido por el usuario, código dado in this thread).

+1

Bien, gracias. Agregaría este detalle al estilo para alinearlo a la derecha: style.ParagraphFormat.LeftIndent = "1cm"; style.ParagraphFormat.FirstLineIndent = "-0.5cm"; –

+0

Estoy un poco confundido. ¿Cada lista de viñetas se considera un párrafo? –

+2

@Sabareesh Kkanan: Cada elemento con viñetas es un párrafo, la lista de viñetas es una secuencia de párrafos. Esto permite el formateo avanzado (por ejemplo, la sangría de la primera línea) si una entrada abarca más de una línea. –

1

Con PDFsharp que debe sacar las balas de uno mismo.

Con MigraDoc agrega un párrafo y establece paragraph.Format.ListInfo para este párrafo para crear una lista de viñetas.

El subproceso enlazado muestra dos rutinas auxiliares: DefineList() solo establece una variable miembro así que la próxima vez se creará una nueva lista. AddToList() se llama para cada entrada.

Simplemente llame a DefineList() para iniciar una nueva lista de viñetas, luego llame a AddToList() para cada entrada. DefineList() hace una gran diferencia para las listas numeradas.

Adapte las rutinas de ayuda para sus necesidades.

+0

tiene algún código de ejemplo en esto. . todavía no puede hacer que funcione. . – leora

4

Un poco más concisa que la respuesta anterior:

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"); 

Estilo sólo se crea una vez, incluyendo listinfo, y se puede volver a utilizar en todas partes.

+0

La reutilización de 'ListInfo' no funciona para las listas numeradas. Tampoco lo volvería a usar para las listas de viñetas, al menos no cuando genero archivos RTF con múltiples listas de viñetas. –

+0

@ User241.007 No me di cuenta de que esto no funcionará para listas numeradas o archivos RTF. Para los archivos PDF, sin embargo, este enfoque funciona bien, también con múltiples listas de viñetas. Dejaré esta respuesta, porque al menos para los PDF, este enfoque ahorra una gran cantidad de código (hay que definir listinfo solo una vez). –

+0

si el párrafo no cabe en 1 línea, la siguiente línea no está sangrada correctamente. ¿Hay ahí un ajuste para esto? – MIKE

Cuestiones relacionadas