2010-10-26 10 views

risposta

17

Ecco un esempio (poche righe aggiunte al campione 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; 

non ho usato il metodo AddToList di avere tutto in un unico luogo. In un'applicazione reale userei quel metodo (è un metodo definito dall'utente, codice dato in this thread).

+1

Bello, grazie. Vorrei aggiungere questo dettaglio allo stile per renderlo allineato a destra: style.ParagraphFormat.LeftIndent = "1 cm"; style.ParagraphFormat.FirstLineIndent = "-0.5cm"; –

+0

Sono poco confuso. Ogni elenco di proiettili è considerato un paragrafo? –

+2

@Sabareesh Kkanan: ogni elemento puntato è un paragrafo, la lista puntata è una sequenza di paragrafi. Ciò consente la formattazione avanzata (ad esempio il rientro della prima riga) se una voce comprende più di una singola riga. –

1

Con PDFsharp è necessario disegnare i proiettili da soli.

Con MigraDoc aggiungere un paragrafo e impostare il paragrafo .Format.ListInfo per questo paragrafo per creare un elenco puntato.

Il thread collegato mostra due routine di supporto: DefineList() imposta solo una variabile membro in modo che la prossima volta venga creato un nuovo elenco. AddToList() viene chiamato per ogni voce.

È sufficiente chiamare DefineList() per avviare un nuovo elenco di elenchi puntati, quindi chiamare AddToList() per ogni voce. DefineList() fa una grande differenza per gli elenchi numerati.

Adatta le routine di supporto per le tue esigenze.

+0

avete qualche codice di esempio su questo. . ancora non riesco a farlo funzionare. . – leora

4

Un po 'più concisa rispetto alla risposta di cui sopra:

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

stile viene creato solo una volta, tra cui listinfo, e può essere riutilizzato in tutto il mondo.

+0

Il riutilizzo di 'ListInfo' non funziona per gli elenchi numerati. Non vorrei riutilizzarlo per elenchi puntati, almeno non quando si generano file RTF con più elenchi puntati. –

+0

@ User241.007 Non mi sono reso conto che questo non funzionerà con elenchi numerati o file RTF. Per i file PDF, tuttavia, questo approccio funziona bene, anche con più elenchi puntati. Lascerò questa risposta, perché per il pdf, almeno, questo approccio consente di risparmiare un sacco di codice (devi definire listinfo solo una volta). –

+0

se il paragrafo non si adatta a 1 riga, la riga successiva non viene rientrata correttamente. C'è un ambiente per questo? – MIKE