Unity调用打印机方法一: 调用win自带的画图工具(缺点是无法更改打印的默认设置)
System.Diagnostics.Process.Start("mspaint.exe","/pt "+filename);
调用打印机方法二:使用插件直接调用打印机,不需要调用画图工具
这里使用LCPrinter打印机插件
Print.PrintTextureByPath(filename,1,printerName);
这里讲一下打包发布时会报错,因为缺少Drawing Dll,此时需要到安装目录中寻找Drawing Dll并且拖到unity工程里进行编译。
filename是要打印图片的路径,建议放在unity的StreamingAssets文件夹里面;我这里的路径名字使用的是
filename = Application.datapath+@"StreamingAssets\行书\01.png";
运行后发现打印没用,检查后返现Application.datapath 使用的是正斜杠/ 而我们需要的是\反斜杠
此时使用字符串替换 filename2 =filename.Replace(@"/" ,@"\");
下面贴上我项目的源代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEngine.SceneManagement;
using LCPrinter;
public class PrintShuqian : MonoBehaviour {
public Image[] nineS;
public Image shuqian;
private int shufa;
private int printNum;//打印数字
private string filename;
public Canvas PrintCanvas;
public Image ziti;
public Sprite[] zitis;
public Button m_button;
public string printerName = "";
int m = 0;
private string filename2;
private void Start()
{
m_button.onClick.AddListener(delegate () {
m++;
if (m == 9)
{
Application.Quit();
}
});
}
public void LoadNine()//加载九宫格书签
{
if (shufa == 0)
{
for (int i = 1; i < 10; i++)
{
nineS[i-1].sprite = Resources.Load<Sprite>("aa/0" + i.ToString());
nineS[i - 1].SetNativeSize();
}
}
if (shufa == 1)
{
for (int i = 1; i < 10; i++)
{
nineS[i - 1].sprite = Resources.Load<Sprite>("bb/0" + i.ToString());
nineS[i - 1].SetNativeSize();
}
}
if (shufa == 2)
{
for (int i = 1; i < 10; i++)
{
nineS[i - 1].sprite = Resources.Load<Sprite>("cc/0" + i.ToString());
nineS[i - 1].SetNativeSize();
}
}
if (shufa == 3)
{
for (int i = 1; i < 10; i++)
{
nineS[i - 1].sprite = Resources.Load<Sprite>("dd/0" + i.ToString());
nineS[i - 1].SetNativeSize();
}
}
if (shufa == 4)
{
for (int i = 1; i < 10; i++)
{
nineS[i - 1].sprite = Resources.Load<Sprite>("ee/0" + i.ToString());
nineS[i - 1].SetNativeSize();
}
}
Preview(1);
ziti.sprite = zitis[shufa];
}
public void Preview(int i )//点击书签预览
{
printNum = i;
if (shufa == 0)
{
shuqian.sprite = Resources.Load<Sprite>("aaa/0" + i.ToString());
}
// shuqian.sprite = Resources.Load<Sprite>(i.ToString());
if (shufa == 1)
{
shuqian.sprite = Resources.Load<Sprite>("bbb/0" + i.ToString());
}
if (shufa == 2)
{
shuqian.sprite = Resources.Load<Sprite>("ccc/0" + i.ToString());
}
if (shufa == 3)
{
shuqian.sprite = Resources.Load<Sprite>("ddd/0" + i.ToString());
}
if (shufa == 4)
{
shuqian.sprite = Resources.Load<Sprite>("eee/0" + i.ToString());
}
}
public void Prints()//打印书签
{
if (shufa == 0)
{
filename = Application.dataPath + @"\StreamingAssets\草书\0" + printNum.ToString()+".png";
}
if (shufa == 1)
{
filename = Application.dataPath + @"\StreamingAssets\行书\0" + printNum.ToString() + ".png";
}
if (shufa == 2)
{
filename = Application.dataPath + @"\StreamingAssets\楷书\0" + printNum.ToString() + ".png";
}
if (shufa == 3)
{
filename = Application.dataPath + @"\StreamingAssets\隶书\0" + printNum.ToString() + ".png";
}
if (shufa == 4)
{
filename = Application.dataPath + @"\StreamingAssets\篆书\0" + printNum.ToString() + ".png";
}
//System.Diagnostics.Process.Start("mspaint.exe", "/pt " + filename);
filename2 = filename.Replace(@"/", @"\");
Print.PrintTextureByPath(filename2, 1, printerName);
}
public void ShufaNum(int i)//选择哪种字体
{
shufa = i;
LoadNine();
PrintCanvas.gameObject.SetActive(true);
}
public void LoadScene()
{
SceneManager.LoadScene(0);
}
public void Chongzhi()//重置功能
{
shuqian.sprite = Resources.Load<Sprite>("222");
}
}