Генерация pdf из html с возможностью добавления страниц - PullRequest
0 голосов
/ 21 июня 2020

У меня есть проект ASP. NET Core 3.1 MVC. Я хочу передать строку html, а затем добавить новые страницы.

Пример:

foreach (string html in html_list) 
{
    //Add new page
    //Pass my html to page without converting it to bitmap or image
}

То, что я пробовал:

/*  RETURNS NOTHING  ON THE PAGE (PDFSharp && HtmlRendered.PdfSharp v.1.5.0.5 )  */
char Apostrov = '"';
string html2 = "<textarea style=" + Apostrov + "font-family: 'Microsoft Sans Serif'; font-size: 14px; position: absolute; left: 19px; top: 967px; width: 894px; height: 176px;" + Apostrov + "> <label> POKUSSS </label>";
PdfPage page = new PdfPage();
int width = (int)page.Width;
int height = (int)page.Height;
Bitmap bitmap = new Bitmap(width, height);
var doc = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(html2, PageSize.A4);
XImage img = XImage.FromGdiPlusImage(bitmap);
doc.Pages.Add(page);
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
xgr.DrawImage(img, 0, 0);
doc.Save(@"wwwroot/PDFReturns/POKUS.pdf");
doc.Close();
/*  RETURNS NOTHING  ON THE PAGE  */

/*  RETURNS CRAPPY PDF (PDFSharp && HtmlRendered.PdfSharp v.1.5.0.5 ) */
Bitmap bitmap = new Bitmap(1200, 1800);
Graphics g = Graphics.FromImage(bitmap);
XGraphics gg = XGraphics.FromGraphics(g, new XSize(1200, 1800));
TheArtOfDev.HtmlRenderer.PdfSharp.HtmlContainer c = new TheArtOfDev.HtmlRenderer.PdfSharp.HtmlContainer();
c.SetHtml("<html><body><textarea style=" + Apostrov + "font-family: 'Microsoft Sans Serif'; font-size: 14px; position: absolute; left: 19px; top: 500px; width: 500px; height: 500px;" + Apostrov + "><label style=" + Apostrov + "font-family: 'Microsoft Sans Serif'; font-size: 14px; position: absolute; left: 19px; top: 500px; width: 500px; height: 500px;" + Apostrov + "> POKUSSS </label></body></html>");
c.PerformPaint(gg);
PdfDocument doc = new PdfDocument();
PdfPage page = new PdfPage();
XImage img = XImage.FromGdiPlusImage(bitmap);
doc.Pages.Add(page);
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
xgr.DrawImage(img, 0, 0);
doc.Save(@"wwwroot/PDFReturns/POKUS.pdf");
doc.Close();
/*  RETURNS CRAPPY PDF  */

Второй код возвращает: этот Я пробовал то же самое с ItextSharp 7, но получил тот же результат. Мне нужно передать html, уметь определять, где на экране он должен быть, и уметь добавлять новые страницы ... Мне все равно, в какой это библиотеке ...

Спасибо за любую помощь.

...