【问题标题】:Separating Page Breaks with DinkToPdf使用 DinkToPdf 分隔分页符
【发布时间】:2019-08-20 12:10:16
【问题描述】:

我的 Program.cs 中有这个 C#:

    var page = "plain";

    var slnpath = $@"{Directory.GetCurrentDirectory()}\..\..\..\..";
    var htmlpath = $@"{slnpath}\HtmlTemplates\{page}.html";
    var pdfpath = $@"{slnpath}\PdfFiles\{page}.pdf";
    var dllpath = $@"{slnpath}\DinkNative64bit\libwkhtmltox.dll";

    var html = new StringBuilder(File.ReadAllText(htmlpath));

    var _converter = new SynchronizedConverter(new PdfTools());

    var context = new CustomAssemblyLoadContext().LoadUnmanagedLibrary(dllpath);

    var globalSettings = new GlobalSettings
    {
        ColorMode = ColorMode.Color,
        Orientation = Orientation.Portrait,
        PaperSize = PaperKind.A4,
        Margins = new MarginSettings { Top = 10 },
        DocumentTitle = "PDF Report",
        //Out = @"D:\PDFCreator\Employee_Report.pdf"  USE THIS PROPERTY TO SAVE PDF TO A PROVIDED LOCATION
    };

    var objectSettings = new ObjectSettings
    {
        PagesCount = true,
        HtmlContent = html.ToString(),
        //Page = "https://code-maze.com/", USE THIS PROPERTY TO GENERATE PDF CONTENT FROM AN HTML PAGE
        WebSettings = { DefaultEncoding = "utf-8" }, //, UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
        HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
        FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" },

    };

    var pdf = new HtmlToPdfDocument()
    {
        GlobalSettings = globalSettings,
        Objects = { objectSettings }
    };

    //_converter.Convert(pdf); IF WE USE Out PROPERTY IN THE GlobalSettings CLASS, THIS IS ENOUGH FOR CONVERSION

    var file = _converter.Convert(pdf);

    File.WriteAllBytes(pdfpath, file);

我有this HTML file I have(太大,无法粘贴在这里)。

The generated PDF is mostly fine,但在第 3 页上的分页符不正确。较大的内容与之前的内容相抵触——我认为是因为它不适合下一页。

如何使每个具有page 类的 DIV 都在新页面上开始?

【问题讨论】:

    标签: pdf-generation dinktopdf


    【解决方案1】:

    如果您想在每页后添加分页符,请在您的 页面类:

    page-break-after: always;
    

    【讨论】:

    • 谢谢 - 但它并不完美,如另一篇文章所述。因此这篇文章。
    • 您是否试图在每个“页面”类之后实现明确的分页符?如果是这样,也许尝试 page-break-after: always;
    • 难以置信!这完美!谢谢 :) 将其作为答案发布。
    【解决方案2】:

    我使用过“page-break-after: always;”在 div 中,使用 DinkToPdf 对我来说非常适合

     var sb = new StringBuilder();
     sb.AppendFormat("<div style='page-break-after: always;'></div>");
    

    【讨论】:

      【解决方案3】:

      对于那些想要防止在表格中间出现分页符的人,如下例所示:

      只需使用带有 avoid 值的 css page-break-inside

      table {
          page-break-inside: avoid;
      }
      

      【讨论】:

        【解决方案4】:

        找到:https://github.com/rdvojmoc/DinkToPdf/issues/7

        CSS:

        table { 
            page-break-inside: auto;
        } 
        
        tr { 
            page-break-inside: avoid; 
            page-break-after: auto;
        } 
        
        thead { 
            display: table-header-group;
        } 
        
        tfoot { 
            display: table-footer-group;
        }
        

        【讨论】:

          猜你喜欢
          • 2019-08-11
          • 2021-12-27
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          • 1970-01-01
          • 1970-01-01
          • 2018-04-01
          • 1970-01-01
          相关资源
          最近更新 更多