mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-29 22:45:44 +00:00
Test pdf liste
This commit is contained in:
parent
e172fd458e
commit
08bbf8cd07
2 changed files with 54 additions and 33 deletions
|
|
@ -31,10 +31,9 @@ namespace AideDeJeu.Pdf
|
|||
|
||||
Document _Document = null;
|
||||
PdfWriter _Writer = null;
|
||||
public void MarkdownToPdf(string md, Stream stream)
|
||||
public void MarkdownToPdf(List<string> mds, Stream stream)
|
||||
{
|
||||
var pipeline = new Markdig.MarkdownPipelineBuilder().UseYamlFrontMatter().UsePipeTables().Build();
|
||||
var parsed = Markdig.Markdown.Parse(md, pipeline);
|
||||
|
||||
_Document = new Document(new Rectangle(822, 1122));
|
||||
_Writer = PdfWriter.GetInstance(_Document, stream);
|
||||
|
|
@ -44,35 +43,56 @@ namespace AideDeJeu.Pdf
|
|||
//PdfStamper stamper = null;
|
||||
//stamper = new PdfStamper(reader, stream);
|
||||
|
||||
Render(parsed.AsEnumerable());
|
||||
foreach (var md in mds)
|
||||
{
|
||||
var parsed = Markdig.Markdown.Parse(md, pipeline);
|
||||
Render(parsed.AsEnumerable(), _Document);
|
||||
}
|
||||
|
||||
_Document.Close();
|
||||
_Writer.Close();
|
||||
//stamper.Close();
|
||||
//reader.Close();
|
||||
}
|
||||
private void Render(IEnumerable<Block> blocks)
|
||||
private void Render(IEnumerable<Block> blocks, Document document)
|
||||
{
|
||||
foreach (var block in blocks)
|
||||
var phrases = Render(blocks);
|
||||
foreach(var phrase in phrases)
|
||||
{
|
||||
this.Render(block);
|
||||
if(block.IsBreakable)
|
||||
{
|
||||
_Document.Add(Chunk.NEWLINE);
|
||||
}
|
||||
document.Add(phrase);
|
||||
//ColumnText ct = new ColumnText(_Writer.DirectContent);
|
||||
//ct.AddText(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 12));
|
||||
//ct.Alignment = Element.ALIGN_JUSTIFIED;
|
||||
//ct.SetSimpleColumn(10, 10, 200, 200);
|
||||
//ct.Go();
|
||||
}
|
||||
}
|
||||
private void Render(Block block)
|
||||
private IEnumerable<Phrase> Render(IEnumerable<Block> blocks)
|
||||
{
|
||||
var phrases = new List<Phrase>();
|
||||
foreach (var block in blocks)
|
||||
{
|
||||
var phrase = this.Render(block);
|
||||
if(phrase != null)
|
||||
{
|
||||
phrases.Add(phrase);
|
||||
}
|
||||
if (block.IsBreakable)
|
||||
{
|
||||
phrases.Add(new Phrase(Chunk.NEWLINE));
|
||||
}
|
||||
}
|
||||
return phrases;
|
||||
}
|
||||
private Phrase Render(Block block)
|
||||
{
|
||||
switch (block)
|
||||
{
|
||||
case HeadingBlock heading:
|
||||
Render(heading);
|
||||
break;
|
||||
return Render(heading);
|
||||
|
||||
case ParagraphBlock paragraph:
|
||||
Render(paragraph);
|
||||
break;
|
||||
return Render(paragraph);
|
||||
|
||||
//case QuoteBlock quote:
|
||||
// Render(quote);
|
||||
|
|
@ -100,7 +120,7 @@ namespace AideDeJeu.Pdf
|
|||
|
||||
default:
|
||||
Debug.WriteLine($"Can't render {block.GetType()} blocks.");
|
||||
break;
|
||||
return null;
|
||||
}
|
||||
|
||||
//if (queuedViews.Any())
|
||||
|
|
@ -113,18 +133,14 @@ namespace AideDeJeu.Pdf
|
|||
//}
|
||||
}
|
||||
|
||||
private void Render(HeadingBlock block)
|
||||
private Phrase Render(HeadingBlock block)
|
||||
{
|
||||
_Document.Add(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0x9B1C47), 20 + (7 - block.Level) * 2));
|
||||
return CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0x9B1C47), 14 + (7 - block.Level) * 2);
|
||||
}
|
||||
|
||||
private void Render(ParagraphBlock block)
|
||||
private Phrase Render(ParagraphBlock block)
|
||||
{
|
||||
ColumnText ct = new ColumnText(_Writer.DirectContent);
|
||||
ct.AddText(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 20));
|
||||
ct.Alignment = Element.ALIGN_JUSTIFIED;
|
||||
ct.SetSimpleColumn(10, 10, 200, 200);
|
||||
ct.Go();
|
||||
return CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 12);
|
||||
//_Document.Add(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 20));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -387,16 +387,21 @@ namespace AideDeJeuCmd
|
|||
|
||||
var item = await store.GetItemFromDataAsync("spells_hd", "aide");
|
||||
|
||||
|
||||
var pdfService = new PdfService();
|
||||
//var pc = new AideDeJeu.ViewModels.PlayerCharacter.PlayerCharacterViewModel();
|
||||
//var pce = new AideDeJeu.ViewModels.PlayerCharacter.PlayerCharacterEditorViewModel();
|
||||
using (var stream = new FileStream("test.pdf", FileMode.Create))
|
||||
using (var context = await StoreViewModel.GetLibraryContextAsync())
|
||||
{
|
||||
//pdfService.MarkdownToPdf("# mon titre\n\nhop", stream);
|
||||
pdfService.MarkdownToPdf(item.Markdown, stream);
|
||||
//var stream = new MemoryStream();
|
||||
//pce.GeneratePdfToStream(pc, stream);
|
||||
var spells = await context.Spells.ToListAsync();
|
||||
|
||||
var pdfService = new PdfService();
|
||||
//var pc = new AideDeJeu.ViewModels.PlayerCharacter.PlayerCharacterViewModel();
|
||||
//var pce = new AideDeJeu.ViewModels.PlayerCharacter.PlayerCharacterEditorViewModel();
|
||||
using (var stream = new FileStream("test.pdf", FileMode.Create))
|
||||
{
|
||||
//pdfService.MarkdownToPdf("# mon titre\n\nhop", stream);
|
||||
pdfService.MarkdownToPdf(spells.Select(s => s.Markdown).ToList(), stream);
|
||||
//pdfService.MarkdownToPdf(new List<string>() { item.Markdown }, stream);
|
||||
//var stream = new MemoryStream();
|
||||
//pce.GeneratePdfToStream(pc, stream);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue