gpt4 book ai didi

c++ - CHtmlEditCtrl::PrintDocument() - 靠近页面底部的行间距错误?

转载 作者:行者123 更新时间:2023-12-01 14:58:19 24 4
gpt4 key购买 nike

我正在尝试使用 CHtmlEditCtrl::PrintDocument() 的方法打印文档如此处所述(Printing In MFC Application)。下面是我的测试代码,我打算在其中打印一个非常大的表格。

void CMyView::OnFilePrint()
{
CHtmlEditCtrl PrintCtrl;
if (!PrintCtrl.Create(NULL, WS_CHILD, CRect(0, 0, 0, 0), this, 1))
{
ASSERT(FALSE);
return;
}

CComPtr<IHTMLDocument2> document;
PrintCtrl.GetDocument(&document);
WaitForComplete(document);
CString html =
_T("<!doctype html>")
_T("<html lang=\"en\">")
_T(" <head>")
_T(" <meta charset=\"utf-8\">")
_T(" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">")
_T(" <title>HTML5 Test Page</title>")
_T(" <style>")
_T(" @media print")
_T(" {")
_T(" td { overflow-x:auto }")
_T(" }")
_T(" </style>")
_T(" <style type=\"text/css\">")
_T(" thead { display:table-header-group }")
_T(" tfoot { display:table-footer-group; page-break-inside:avoid }")
_T(" tbody { display:table-row-group }")
_T(" td > div { display:block; page-break-inside:avoid }")
_T(" </style>")
_T(" </head>")
_T(" <body>")
_T(" <div id=\"top\" class=\"page\" role=\"document\">")
_T(" <header role=\"banner\">")
_T(" <p>This is header.</p>")
_T(" </header>")
_T(" <main role=\"main\">")
_T(" <section id=\"text\">")
_T(" <article id=\"text_tables\">")
_T(" <table>")
_T(" <thead>")
_T(" <tr>")
_T(" <th>")
_T(" header comes here for each page")
_T(" </th>")
_T(" </tr>")
_T(" </thead>")
_T(" <tfoot>")
_T(" <tr>")
_T(" <td>")
_T(" footer comes here for each page")
_T(" </td>")
_T(" </tr>")
_T(" </tfoot>");
_T(" <tbody>");
for (int i = 0; i < 200; ++i)
{
CString str;
str.Format(_T("%d"), i);
html = html + "<tr><td><div>" + str + "</div></td></tr>";
}
html = html + "</tbody></table></article></section></main>";
html = html + "<footer role=\"contentinfo\"><p>This is footer</p></footer></div></body></html>";
PrintCtrl.SetDocumentHTML(html);
WaitForComplete(document);
//PrintCtrl.PrintPreview();
PrintCtrl.PrintDocument();
}

问题在于页面底部附近的每一行,间距似乎很乱。请参见下面的附图,注意 41 与 40 之间的间距更大,并且被部分切断。它是如何发生的以及如何解决它?

enter image description here

我尝试添加重复的页眉和页脚,下面是显示错误的结果的一部分。

enter image description here

我尝试使用“td {overflow-x:auto;}”。第一页的表尾显示不正确。

enter image description here

最佳答案

这似乎是 IWebBrowser2 的错误。界面。可以用 td{overflow-x: auto;} 修复

<style>
@media print
{
td{overflow-x: auto;}
}
</style>

关于c++ - CHtmlEditCtrl::PrintDocument() - 靠近页面底部的行间距错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59459495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com