web-dev-qa-db-ja.com

HTML to PDF-PdfSharpおよびHtmlRendererによる改ページ

PdfSharpとHtmlRendererを使用してHTMLをPDFに変換しようとしています。これはコードの一部です。

private byte[] CreateHtmlContent()
{
    string htmlContent = File.ReadAllText(@"htmlExample.txt");

    using (MemoryStream ms = new MemoryStream())
    {
        PdfDocument pdfDocument = new PdfDocument();
        PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4, 60);
        pdf.Save(ms);
        res = ms.ToArray();
    }
    return res;
}

改ページを除くすべてが正常に機能します。一部のページでは、この画像のような結果があります

HTML page break

これを修正することは可能ですか? HTMLコンテンツは、見出しと段落のみを含み、他のタグを含まない単純なhtmlです。 iTextSharpでこの問題はありませんでしたが、このプロジェクトではPdfSharpとMigraDocを使用する必要があります。

17
kiriz

これは少し遅れていますが、私は同じ問題に遭遇しました。問題は、GeneratePdf呼び出しで設定されたマージンです。それを削除して、それは大丈夫です。

    PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
5
user94554

Nuget(1.5.1-beta1)のプレリリースバージョンを使用してから、次の操作を実行できます。

td { page-break-inside: avoid; }

1

これは、テーブルを使用していない場合に適切なDIVタグを追加することでも解決されます。

foreach (DataRow row in group)
            {
                HTMLoutput += "<div style=\"page-break-inside: avoid\"> ";
                HTMLoutput += "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
                HTMLoutput += "</div>";
            }
0
Tuffknitz