PrintProject.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using Newtonsoft.Json.Linq;
  2. using PdfSharp;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Drawing;
  6. using System.Drawing.Printing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Printing;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Forms;
  14. using TheArtOfDev.HtmlRenderer.PdfSharp;
  15. namespace PrintProject
  16. {
  17. public class PrintProject
  18. {
  19. private PrintDocument printDocument = new PrintDocument();
  20. [STAThread]
  21. public string PrintDocument11111(string inParams)
  22. {
  23. System.Diagnostics.Debugger.Launch();
  24. string errorCode = "0";
  25. string errorMessage = "";
  26. JObject jObject = new JObject();
  27. try
  28. {
  29. var browser = new WebBrowser();
  30. // 将DocumentCompleted事件处理程序添加到WebBrowser对象。
  31. browser.DocumentCompleted += (sender, e) => {
  32. // 创建 PrintDocument 并设定相关参数
  33. PrintDocument pd = new PrintDocument();
  34. pd.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169); // A4 size in hundredths of an inch
  35. //pd.DefaultPageSettings.Landscape = true; // 横向打印
  36. pd.PrintPage += (s, args) =>
  37. {
  38. Bitmap bitmap = new Bitmap(browser.Width, browser.Height);
  39. browser.DrawToBitmap(bitmap, new Rectangle(0, 0, browser.Width, browser.Height));
  40. args.Graphics.DrawImage(bitmap, args.MarginBounds);
  41. if (!pd.PrintController.IsPreview)
  42. bitmap.Dispose();
  43. };
  44. PageSetupDialog pageSetupDialog1 = new PageSetupDialog();
  45. pageSetupDialog1.Document = pd;
  46. pageSetupDialog1.ShowDialog();
  47. var printPreviewDialog1 = new PrintPreviewDialog();
  48. printPreviewDialog1.Document = pd;
  49. printPreviewDialog1.ShowDialog();
  50. if (MessageBox.Show("Do you want to print this page?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
  51. {
  52. pd.Print(); // 开始打印
  53. }
  54. };
  55. string filePath = @"D:\index.html";
  56. string htmlToPrint= @"<html>
  57. <body>
  58. <h1>Hello World!</h1>
  59. <p>This is a test of HTML printing.</p>
  60. </body>
  61. </html>";
  62. // 使用 FileStream 打开文件
  63. using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
  64. {
  65. // 使用 StreamReader 读取文件内容
  66. using (StreamReader reader = new StreamReader(fileStream))
  67. {
  68. // 读取整个文件到一个字符串
  69. htmlToPrint = reader.ReadToEnd();
  70. }
  71. }
  72. browser.DocumentText = htmlToPrint; // 设置要打印的HTML内容
  73. Application.Run();
  74. }
  75. catch (Exception ex2)
  76. {
  77. errorCode = "-1";
  78. errorMessage = ex2.Message;
  79. }
  80. jObject.Add("errorCode", errorCode);
  81. jObject.Add("errorMessage", errorMessage);
  82. return jObject.ToString();
  83. }
  84. public static void PrintDocument33333333(string url)
  85. {
  86. System.Diagnostics.Debugger.Launch();
  87. url = @"D:\index.html";
  88. using (WebBrowser webBrowser = new WebBrowser())
  89. {
  90. webBrowser.DocumentCompleted += (sender, args) =>
  91. {
  92. if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
  93. {
  94. webBrowser.Print();
  95. }
  96. };
  97. webBrowser.Navigate(url);
  98. // 等待文档加载完成
  99. while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
  100. {
  101. Application.DoEvents();
  102. }
  103. }
  104. }
  105. public static void PrintDocument343(string url)
  106. {
  107. System.Diagnostics.Debugger.Launch();
  108. url = @"D:\index.html";
  109. using (WebBrowser webBrowser = new WebBrowser())
  110. {
  111. webBrowser.DocumentCompleted += (sender, args) =>
  112. {
  113. if (webBrowser.ReadyState == WebBrowserReadyState.Complete)
  114. {
  115. webBrowser.Print();
  116. }
  117. };
  118. webBrowser.Navigate(url);
  119. // 等待文档加载完成
  120. while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
  121. {
  122. Application.DoEvents();
  123. }
  124. }
  125. }
  126. public string PrintDocument(string url)
  127. {
  128. System.Diagnostics.Debugger.Launch();
  129. url = @"D:\index.html";
  130. using (WebBrowser webBrowser = new WebBrowser())
  131. {
  132. webBrowser.ScrollBarsEnabled = false;
  133. webBrowser.Navigate(url);
  134. // 等待页面加载完成
  135. while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
  136. {
  137. Application.DoEvents();
  138. }
  139. // 调用打印对话框
  140. webBrowser.Print();
  141. }
  142. return "";
  143. }
  144. }
  145. }