怎么调用API 打印文档

lampson123 2006-12-06 04:33:52
打印机已经配置好了,怎么调用API 打印,不想用 控件
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lampson123 2006-12-11
  • 打赏
  • 举报
回复
我是想直接用API ,不是VS 下的组件
mfjustlove 2006-12-11
  • 打赏
  • 举报
回复
学习
lampson123 2006-12-10
  • 打赏
  • 举报
回复
楼上用的那个方法就是我现在用的,不过,不是我想的那样
ycqing 2006-12-06
  • 打赏
  • 举报
回复
周公 2006-12-06
  • 打赏
  • 举报
回复
控件其实就是对API的封装。
周公 2006-12-06
  • 打赏
  • 举报
回复
using System;
using System.IO;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace Shipping
{
/// <summary>
/// 提供一个无界面的图像打印方法,可以使用无参构造方法获得实例然后打印或者使用构造参数方法打印。
/// </summary>
public class ImagePrint
{
//private System.Drawing.Printing.PageSettings pageSet;
private System.Drawing.Printing.PrintDocument printDocument;
//private System.Windows.Forms.PageSetupDialog pageSetupDialog;
//private System.Drawing.Printing.PrinterSettings printerSetting;
private System.Windows.Forms.PrintPreviewDialog printPreviewDialog;

private System.Drawing.Image printedImage;

/// <summary>
/// 不带参数的构造函数,需要生成实例之后指定要打印的图片
/// </summary>
public ImagePrint()
{
InitPrinter();
}

/// <summary>
/// 带参数的构造函数
/// </summary>
/// <param name="imageFile">图像名称(不带路径)</param>
public ImagePrint(string imageFile)
{
InitPrinter();
printedImage=new Bitmap(imageFile);
}

private void InitPrinter()
{
printDocument=new PrintDocument();
printDocument.DefaultPageSettings.PaperSize=new PaperSize("DHL",850,1100);
printDocument.PrintPage+=new PrintPageEventHandler(PaintDocument);
}

/// <summary>
/// 将英寸转换成象素
/// </summary>
/// <param name="inch"></param>
/// <returns></returns>
private int InchToPixel(double inch)
{
return (int)(inch*72);
}

private void PaintDocument(object sender, PrintPageEventArgs ev)
{
//注意:一个象素等于1/72英寸,所以一英寸等于72象素,而打印机的边距都是以1/100英寸为单位的
int bottom=InchToPixel(printDocument.DefaultPageSettings.Margins.Bottom/100d);
int top=InchToPixel(printDocument.DefaultPageSettings.Margins.Top/100d);
int left=InchToPixel(printDocument.DefaultPageSettings.Margins.Left/100d);
int right=InchToPixel(printDocument.DefaultPageSettings.Margins.Right/100d);
//ev.Graphics.DrawImage(printedImage,left,top,new Rectangle(0,0,this.printedImage.Width,this.printedImage.Height),GraphicsUnit.Pixel);
ev.Graphics.DrawImage(printedImage,left,top);
}

/// <summary>
/// 打印图片,如果没有初始化图片,则会抛出异常
/// </summary>
public void PrintImage()
{
if(printedImage==null)
{
FileNotFoundException fileNotFoundException=new FileNotFoundException("在开始打印之前没有指定图片异常");
frmMain.log.Error("在开始打印之前没有指定图片异常",fileNotFoundException);
MessageBox.Show(null,"未指定照片错误!请指定照片","无法打印照片!",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
#region 以下是打印预览界面,实际使用时可注销下面的代码
//以下是打印预览界面
printPreviewDialog=new PrintPreviewDialog();
printPreviewDialog.Document=printDocument;
printPreviewDialog.Show();
#endregion
printDocument.Print();
}

/// <summary>
/// 获取或设置要打印的图片
/// </summary>
public Image PrintedImage
{
get
{
return printedImage;
}
set
{
printedImage=value;
}
}
}
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧