我需要使用诸如FixedDocument,FlowDocument,PageContent,BlockUIContainer等所有wpf UI元素生成打印预览(长篇).为了保持我的UI响应,我在一个单独的Thread类线程上做这个部分(BackgroundWorker将无法工作,因为我需要一个STA线程).到目前为止一切都很好.
但是在显示打印预览之后我现在需要打印,并且在生成的预览上单击"打印"图标会引发臭名昭着的"调用线程无法访问此对象,因为其他线程拥有它".例外.那么,有什么办法吗?
编辑(代码):
Dispatcher.CurrentDispatcher.Invoke(new Action(() =>
{
Thread thread = new Thread(() =>
{
FixedDocument document = renderFlowDocumentTemplate(report);
PrintPreview preview = new PrintPreview();
preview.WindowState = WindowState.Normal;
preview.documentViewer.Document = document;
preview.ShowDialog();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}));`
Run Code Online (Sandbox Code Playgroud)
好的,RenderFlowDocumentTemplate()生成打印预览(包含UI元素)并用报表数据填充它们.PrintPreview是一个自定义窗口,其中包含一个实际保存并显示预览的DocumentViewer元素,并包含打印图标,点击后我想要获取PrintDialog窗口.
编辑(XAML):
<cw:CustomWindow x:Class="MyApp.Reports.PrintPreview"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cw="clr-namespace:MyApp.UI.CustomWindows;assembly=MyApp.UI.CustomWindows">
<DocumentViewer Margin="0,30,0,0" Name="documentViewer"></DocumentViewer>
</cw:CustomWindow>`
Run Code Online (Sandbox Code Playgroud) 当我使用jQuery打印预览插件单击"打印"时,会弹出以下错误并显示Firebug:
Error: Permission denied to access property 'name'
if (window.frames[i].name == "print-frame") {
Run Code Online (Sandbox Code Playgroud)
我不确定它究竟意味着什么或如何纠正它.
我想以A4尺寸打印网页。目前我用过@page{size:auto},@media print{}。我需要每个页面都有边框,并且应该使用分页符来完成。在某些浏览器中,打印预览功能已被打破。请帮我。
我的代码:
@media print{
@page{size: auto;
margin:0px 0px 20px 0px;}
.pagebreak {
page-break-before: always;
}
body, h1, h2, h3, ol, ul, div { width: auto; border: 0; margin: 0; padding: 0; float: none; position: static; overflow: visible; }
.header, .event_sidebar, .detail_header, .detail_img, .action_button, #ev_map, .related_eve, .footer{display: none;}
.event_container{
max-width:730px;
width:100%;
height:auto;
margin:0px auto;
outline: none;
border:double;
position:relative;
}
.event_print_header {
height: auto;
max-width:730px;
width: 98%;
margin:0px auto;
position:relative;
}
.event_print_header img{width:99.99%;}
.event_contentarea{
width: 100%;
margin: 0px;
padding:0px; …Run Code Online (Sandbox Code Playgroud) 我有一个相当大的表格数据需要打印,但是当我转到Print Preview或 时Print,我只能看到页面上当前可见的内容,而不是网页的全部内容。
这发生在所有浏览器中。什么可能导致这种情况?
我有一个C#/ WPF应用程序,我需要在其中显示HTML文档的打印预览 - 基本上就像在Firefox或甚至IE中查看打印预览时所看到的那样.我知道DocumentViewer,但是,我试图远离使用DocumentViewer控件,因为它看起来很慢,我需要显示的一些文档可以超过450页,我想快速加载预览尽可能.有谁知道做这样的事情的优雅方式?我开始假设我需要创建自己的控件,但我真的不知道从哪里开始.
感谢您提供有关此类内容的任何建议或提示!
我想使用PyQt通过打印机预览,然后打印报告.我尝试了以下代码:
printer = QtGui.QPrinter()
doc = QtGui.QTextDocument("testing")
dialog = QtGui.QPrintDialog(printer)
dialog.setModal(True)
dialog.setWindowTitle("printerrr")
pdialog = QtGui.QPrintPreviewDialog(printer)
pdialog.setWindowFlags(QtCore.Qt.Window)
pdialog.exec_()
Run Code Online (Sandbox Code Playgroud)
我如何预览我的报告然后打印它?
我试图Ctrl-P在 Excel 2013 中模拟,其中打印对话框显示在左侧,打印预览显示在右侧。
(尽管预览显示的位置,我总是必须先单击“显示打印预览”。我找不到强制每次都显示预览的方法)。
我尝试了以下方法:
Application.Dialogs(xlDialogPrint).Show
Run Code Online (Sandbox Code Playgroud)
这将显示您需要单击“预览”按钮的旧样式对话框
ActiveSheet.PrintPreview
Run Code Online (Sandbox Code Playgroud)
这会显示预览,但不允许从同一屏幕更改打印机。
我正在开发一个System.Windows.Forms.PrintPreviewDialog用于显示打印预览对话框的 WinForms 应用程序。当用户在该对话框中按 ESC 时,我想关闭该对话框。不幸的是,我无法弄清楚如何做到这一点。我尝试安装 KeyDown/PreviewKeyDown 事件处理程序,但它从未被调用。我还尝试将焦点设置到对话框(及其 PrintPreviewControl),认为这是问题所在,但这也无济于事。有谁知道如何使这项工作?
有什么办法可以在Chrome的新标签页中打开打印预览页。我试图
`<a href="#" target="_blank" onclick="window.print();">Print_This_Page</a>`
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
请帮忙。
我正在尝试创建 QWebEngineView 的打印预览,但我无法让它工作。
这是我的代码:
...
self.view = QWebEngineView()
...
def handle_preview(self):
dialog = QPrintPreviewDialog()
dialog.paintRequested.connect(self.view.print_)
dialog.exec_()
Run Code Online (Sandbox Code Playgroud)
代码给了我这个错误:
AttributeError: 'QWebEngineView' 对象没有属性 'print_'
当我使用 QTextEdit 时,代码运行良好。但这不是我想要的。我想使用 QWebEngineView。
我有一个使用 MySql 数据库的 C# 应用程序。我使用 HTML 构建了一个报告。
我用标签填充字符串属性并将内容发送到新表单中的 WebBrowser 控件。
报告显示正确,但是当我调用打印预览对话框时,
webBrowser1.ShowPrintPreviewDialog();
Run Code Online (Sandbox Code Playgroud)
页眉和页脚显示在报告中,并带有以下值:
这是该问题的屏幕截图:
如何删除页眉和页脚?
我正在将访问报告转换为客户端应用程序的 SSRS 报告。客户的要求是,当他们打开 SSRS 报告时,默认情况下应该使用打印预览打开。我无法在 SSRS 中找到设置它的属性。有什么建议?或任何帮助?请!
print-preview ×12
printing ×4
c# ×2
css ×2
html ×2
pyqt ×2
python ×2
winforms ×2
wpf ×2
dispatcher ×1
excel ×1
javascript ×1
jquery ×1
ms-word ×1
mysql ×1
outlook ×1
page-setup ×1
pyqt5 ×1
ssrs-2008 ×1
vba ×1