方法一:使用LCPrinter插件
// RenderTexture.active = texRender;
// Texture2D jpg = new Texture2D(1600, 1200, TextureFormat.ARGB32, false);
// jpg.ReadPixels(new Rect(0, 0, 1600, 1200), 0, 0);
// byte[] dataBytes = jpg.EncodeToJPG();
// UnityEngine.Debug.Log("开始打印...");
int copies = 1;
Print.PrintTexture(dataBytes, copies, "");// 最主要的就这一句
// RenderTexture.active = null;
缺点:打包发布后无法调用打印功能,只在Unity中能实现。有知道原因的大佬希望能留言告知;
插件地址LRPrinter
方法二:
// string path = Application.streamingAssetsPath + "\\Textures\\SignaturePhotos\\signaturephoto2019_9_9_5_27_580.jpg";
//从纸张的0. 0点,将图像调整为750×350点(计算:150mm/28.346 px/cm=529点,100mm/28.346 pm/cm=352点) 图片路径
//string exepath = Application.streamingAssetsPath + @"\PrintImage.exe";//这个是需要下载的应用直接放到电脑上就行(调用打印机打印图片应用的路径)
//ProcessStartInfo info = new ProcessStartInfo(exepath);//指定启动进程时使用的一组值
//info.Arguments = path;//获取或设置启动应用程序时要使用的一组命令行自变量
//using (Process p = new Process())
//{
// p.StartInfo = info;
// p.Start();
//}
执行打印之后需要启动OneNote,没能实现打印
PrintImage.exe 下载地址PrintImage
方法三:
System.Diagnostics.Process.Start("mspaint.exe",Application.streamingAssetsPath+ "\\Textures\\SignaturePhotos\\signaturephoto2019_9_9_0_23_352.jpg");
调用电脑的画板进行打印,步骤多,麻烦
方法四:
string path = DataManager.lastPhotoName;
System.Diagnostics.Process process = new System.Diagnostics.Process(); //系统进程
process.StartInfo.CreateNoWindow = false; //不显示调用程序窗口
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;//
process.StartInfo.UseShellExecute = true; //采用操作系统自动识别模式
process.StartInfo.FileName = path; //要打印的文件路径
process.StartInfo.Verb = "print"; //指定对图片执行的动作,打印:print 打开:open …………
process.Start(); //开始打印
调用打印机驱动,最终实现打印
github 地址:unity调用打印机
记录踩坑,
欢迎在评论区留言