Ich versuche die Webseite, die in 'DotNetBrowser.Browser' geladen ist, als PDF Dokument zu drucken und lokal mit DotNetBrowser PrintHandler zu speichern. Dies funktioniert in einer Windows-Formularanwendung mit WinFormsBrowserView, aber im Falle einer Konsolenanwendung druckt der PrintHandler nicht die gesamte Seite, d. H. Nur einige Teile der Seite werden gedruckt und als PDF gespeichert. HierDotNetBrowser PrintHandler in der Konsolenanwendung
Antwort
Endlich konnte ich PDF in der Konsolenanwendung drucken, indem ich die anfängliche Größe auf den Browser einstellte.
browserView.Browser.SetSize (1280, 1024)
Das ist, was ich in meinem Code fehlte. Da der Browser nicht angezeigt wird, wurde durch das Einstellen der Anfangsgröße das Problem des unvollständigen PDF-Drucks gelöst.
ist der Beispielcode, der zeigt, wie die Website zu laden und zu PDF drucken:
using DotNetBrowser;
using DotNetBrowser.Events;
using System;
using System.Threading;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
using (var browser = BrowserFactory.Create())
{
ManualResetEvent waitEvent = new ManualResetEvent(false);
browser.FinishLoadingFrameEvent += delegate(object sender, FinishLoadingEventArgs e)
{
// Wait until main document of the web page is loaded completely.
if (e.IsMainFrame)
{
waitEvent.Set();
}
};
browser.LoadURL("https://www.teamdev.com/dotnetbrowser");
waitEvent.WaitOne();
PrintPDF(browser, System.IO.Path.GetFullPath(@"test.pdf"));
}
}
public static void PrintPDF(Browser browser, string sFileName) {
ManualResetEvent waitEvent = new ManualResetEvent(false);
var handler = new MyPDFPrintHandler((printJob) => {
var printSettings = printJob.PrintSettings;
printSettings.PrintToPDF = true;
printSettings.PDFFilePath = sFileName;
printJob.PrintJobEvent += (s, e) =>
{
System.Diagnostics.Debug.WriteLine("Printing done: " + e.Success);
waitEvent.Set();
};
return printSettings;
});
browser.PrintHandler = handler;
browser.Print();
waitEvent.WaitOne();
}
class MyPDFPrintHandler : PrintHandler
{
Func<PrintJob, PrintSettings> func;
public MyPDFPrintHandler(Func<PrintJob, PrintSettings> func)
{
this.func = func;
}
public PrintStatus OnPrint(PrintJob printJob)
{
PrintSettings printSettings = func(printJob);
printSettings.PrintToPDF = true;
printSettings.Landscape = true;
printSettings.PrintBackgrounds = true;
return PrintStatus.CONTINUE;
}
}
}
}
Wie Sie sehen können, gibt es einen synchronen Druck - das Verfahren nicht zurück, bis die Web-Seite komplett gedruckt.
Könnten Sie bitte diesen Code mit Ihrer Website testen und mir die Ergebnisse mitteilen?
Ich habe deinen obigen Code ausprobiert, aber es gibt mir immer noch unvollständigen Druck. Ich merke nur, dass, wenn ich Benutzer BrowserType.LIGHTWEIGHT in WinFormApplication, Druckhandler speichert unvollständige PDF, wie im Falle der Konsolenanwendung. Möchte hinzufügen, dass ich BrowserType.HEAVYWEIGHT in der Konsolenanwendung verwendet habe. –
Ist es möglich, die URL der Seite anzugeben, für die dieses Problem reproduzierbar ist? –
- 1. System.Drawing.Color in der Konsolenanwendung
- 2. Unterstützt DotNetBrowser Web Worker?
- 3. Ändern Antwort mit dotnetbrowser
- 4. Ausführen der Konsolenanwendung von einer anderen Konsolenanwendung
- 5. Globaler Hotkey in der Konsolenanwendung
- 6. Simulieren Maus Einzug und Mausklick in DotNetBrowser
- 7. Browser.GetRemoteDebuggingURL() von DotNetBrowser kehrt string.Empty
- 8. Testen der Datenbankkonnektivität in der C# -Konsolenanwendung
- 9. Umleiten der Standardeingabe der Konsolenanwendung
- 10. dotnetbrowser mit Erde Plugin zu langsam
- 11. Umleiten der Standardausgabe von Konsolenanwendung
- 12. Wie Ausführungsverzeichnis der Konsolenanwendung bekommen
- 13. Rückgabe von Büchern json durch dotnetbrowser
- 14. Schutzabschnitt in der App.config-Datei Konsolenanwendung
- 15. App.Config Datei in der Konsolenanwendung C#
- 16. So behandeln Sie Ausnahmen in der Konsolenanwendung
- 17. Wie wird Firedac in der Konsolenanwendung verwendet?
- 18. Echo aus Problem in der Konsolenanwendung (Linux)
- 19. SQl-Server-Benutzerinstanz in der Konsolenanwendung
- 20. XmlTextReader funktioniert nur in der Konsolenanwendung?
- 21. Wie Werte von config.json in der Konsolenanwendung
- 22. Sense/net mit Inhaltsabfrage in der Konsolenanwendung
- 23. Implementieren von IMessageFilter in der VB.Net-Konsolenanwendung
- 24. Thread nicht in der C# -Konsolenanwendung gestartet
- 25. Festlegen der Cursorposition in einer Win32-Konsolenanwendung
- 26. Konfigurieren der Konsolenanwendung zum Ausführen in Eclipse
- 27. Konsolenfenster in der C# -Konsolenanwendung ausblenden
- 28. Suchen Sie nach Ordner in der Konsolenanwendung
- 29. Wie verwende ich QGraphicsScene in der Konsolenanwendung?
- 30. Audiodatei in der C# -Konsolenanwendung verwenden
Könnten Sie bitte den Code hinzufügen, der zeigt, wie der Print-Handler in Ihrer Anwendung implementiert ist? –
public void PrintPDF (string sFileName) { browser.PrintHandler = new MyPDFPrintHandler ((Druckeinstellungen) => { printSettings.PrintToPDF = true; printSettings.PDFFilePath = sFileName; return Druckeinstellungen; }); browser.Print(); } –
Teilklasse MyPDFPrintHandler: PrintHandler { Func func; public MyPDFPrintHandler (Funktion func) { this.func = func; } public DruckStatus OnPrint (PrintJob printJob) { Druckeinstellungen printSettings = func (printJob.PrintSettings); printSettings.PrintToPDF = true; printSettings.Landscape = true; printSettings.PrintBackgrounds = true; Rückgabe PrintStatus.CONTINUE; } } –