首先先介绍一下概念:

WPF 具有PrintTicket和PrintQueue类(并且PrintDialog具有相应的属性,可以使用您保存的设置进行初始化)
为简单起见,您可以将第一个视为纸张设置,将第二个视为打印机设置(选定的打印机)
var supportedFormats = LocalPrintServer.GetDefaultPrintQueue().GetPrintCapabilities().PageMediaSizeCapability

PrintQueue 类

在我们的系统中,每台打印机都对应一个 PrintQueue。打印机名称与 PrintQueue.Name 相同,如果我们不为 PrintDialog 指定 PrintQueue,则将默认打印机设置为 PrintQueue。

Q:如何获取本地系统中的打印机?

另一个类: LocalPrintServer可以帮助我们查找安装在本地系统中的所有打印机。 LocalPrintServer.DefaultPrintQueue属性和 LocalPrintServer.GetDefaultPrintQueue方法可以返回默认打印机的 PrintQueue。我们可以通过LocalPrintServer.GetPrintQueues列出所有打印机 ,通过 LocalPrintServer.GetPrintQueue 通过打印机名称获取一台

因此,在显示 PrintDialog 之前添加的以下代码可以分配给打印机:

LocalPrintServer local= new LocalPrintServer();
   PrintQueue pq = local.GetPrintQueue( "[打印机名称]" ); //例如 local.GetPrintQueue("Microsoft XPS Document Writer");
   pd.PrintQueue = pq;

PrintTicket 类 (必须添加对 ReachFramework.dll 程序集的引用)

PrintTicket 定义了打印作业的设置,我们可以通过更改设置来更改 PageSize、PagePerSheet 等值。可能还有许多打印机共有的功能,但并非普遍支持。比如双面打印。

下面的代码是在显示 PrintDialog 之前设置页面大小:

PrintTicket pt = pq.DefaultPrintTicket;
   pt.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA2); // 或者我们可以在这里指定自定义大小(宽度,高度)
   pd.PrintTicket = pt;

备注:之前用PrintDialog设置非标准纸张的打印机时 一直设置不成功,后来使用winspool 来设置

public class WinspoolHelper
    {
        public enum PageOrientation
        {
            DMORIENT_PORTRAIT = 1,
            DMORIENT_LANDSCAPE = 2
        }
        public enum PaperSize
        {

// 纸张类型定义
            DMPAPER_LETTER = 1, // Letter 8 1/2 x 11 in
            DMPAPER_LETTERSMALL = 2, // Letter Small 8 1/2 x 11 in
            DMPAPER_TABLOID = 3, // Tabloid 11 x 17 in
            DMPAPER_LEDGER = 4, // Ledger 17 x 11 in
            DMPAPER_LEGAL = 5, // Legal 8 1/2 x 14 in
            DMPAPER_STATEMENT = 6, // Statement 5 1/2 x 8 1/2 in
            DMPAPER_EXECUTIVE = 7, // Executive 7 1/4 x 10 1/2 in
            DMPAPER_A3 = 8, // A3 297 x 420 mm
            DMPAPER_A4 = 9, // A4 210 x 297 mm
            DMPAPER_A4SMALL = 10, // A4 Small 210 x 297 mm
            DMPAPER_A5 = 11, // A5 148 x 210 mm
            DMPAPER_B4 = 12, // B4 250 x 354
            DMPAPER_B5 = 13, // B5 182 x 257 mm
            DMPAPER_FOLIO = 14, // Folio 8 1/2 x 13 in
            DMPAPER_QUARTO = 15, // Quarto 215 x 275 mm
            DMPAPER_10X14 = 16, // 10x14 in
            DMPAPER_11X17 = 17, // 11x17 in
            DMPAPER_NOTE = 18, // Note 8 1/2 x 11 in
            DMPAPER_ENV_9 = 19, // Envelope #9 3 7/8 x 8 7/8
            DMPAPER_ENV_10 = 20, // Envelope #10 4 1/8 x 9 1/2
            DMPAPER_ENV_11 = 21, // Envelope #11 4 1/2 x 10 3/8
            DMPAPER_ENV_12 = 22, // Envelope #12 4 "276 x 11
            DMPAPER_ENV_14 = 23, // Envelope #14 5 x 11 1/2
            DMPAPER_CSHEET = 24, // C size sheet
            DMPAPER_DSHEET = 25, // D size sheet
            DMPAPER_ESHEET = 26, // E size sheet
            DMPAPER_ENV_DL = 27, // Envelope DL 110 x 220mm
            DMPAPER_ENV_C5 = 28, // Envelope C5 162 x 229 mm
            DMPAPER_ENV_C3 = 29, // Envelope C3 324 x 458 mm
            DMPAPER_ENV_C4 = 30, // Envelope C4 229 x 324 mm
            DMPAPER_ENV_C6 = 31, // Envelope C6 114 x 162 mm
            DMPAPER_ENV_C65 = 32, // Envelope C65 114 x 229 mm
            DMPAPER_ENV_B4 = 33, // Envelope B4 250 x 353 mm
            DMPAPER_ENV_B5 = 34, // Envelope B5 176 x 250 mm
            DMPAPER_ENV_B6 = 35, // Envelope B6 176 x 125 mm
            DMPAPER_ENV_ITALY = 36, // Envelope 110 x 230 mm
            DMPAPER_ENV_MONARCH = 37, // Envelope Monarch 3.875 x 7.5 in
            DMPAPER_ENV_PERSONAL = 38, // 6 3/4 Envelope 3 5/8 x 6 1/2 in
            DMPAPER_FANFOLD_US = 39, // US Std Fanfold 14 7/8 x 11 in
            DMPAPER_FANFOLD_STD_GERMAN = 40, // German Std Fanfold 8 1/2 x 12 in
            DMPAPER_FANFOLD_LGL_GERMAN = 41, // German Legal Fanfold 8 1/2 x 13 in
            DMPAPER_USER = 256,
            DMPAPER_FIRST = DMPAPER_LETTER,
            DMPAPER_LAST = DMPAPER_USER,

DMPAPER_3840X1280 = 519,
            DMPAPER_4096X1280 = 520,

}

public enum PageDuplex
        {
            DMDUP_HORIZONTAL = 3,
            DMDUP_SIMPLEX = 1,
            DMDUP_VERTICAL = 2
        }

public enum PaperSource
        {
            // 纸张来源定义
            DMBIN_UPPER = 1,
            DMBIN_LOWER = 2,
            DMBIN_MIDDLE = 3,
            DMBIN_MANUAL = 4,
            DMBIN_ENVELOPE = 5,
            DMBIN_ENVMANUAL = 6,
            DMBIN_AUTO = 7,
            DMBIN_TRACTOR = 8,
            DMBIN_SMALLFMT = 9,
            DMBIN_LARGEFMT = 10,
            DMBIN_LARGECAPACITY = 11,
            DMBIN_CASSETTE = 14,
            DMBIN_FORMSOURCE = 15,
            DMRES_DRAFT = -1,
            DMRES_LOW = -2,
            DMRES_MEDIUM = -3,
            DMRES_HIGH = -4
        }

public enum DmFields
        {
            DM_ORIENTATION = 0x1,
            DM_PAPERSIZE = 0x2,
            DM_PAPERLENGTH = 0x4,
            DM_PAPERWIDTH = 0x8,
            DM_SCALE = 0x10,
            DM_COPIES = 0x100,
            DM_DEFAULTSOURCE = 0x200,
            DM_PRINTQUALITY = 0x400,
            DM_COLOR = 0x800,
            DM_DUPLEX = 0x1000,
            DM_YRESOLUTION = 0x2000,
            DM_TTOPTION = 0x4000,
            DM_COLLATE = 0x8000,
            DM_FORMNAME = 0x10000,
            DM_LOGPIXELS = 0x20000,
            DM_BITSPERPEL = 0x40000,
            DM_PELSWIDTH = 0x80000,
            DM_PELSHEIGHT = 0x100000,
            DM_DISPLAYFLAGS = 0x200000,
            DM_DISPLAYFREQUENCY = 0x400000,
            DM_ICMMETHOD = 0x800000,
            DM_ICMINTENT = 0x1000000,
            DM_MEDIATYPE = 0x2000000,
            DM_DITHERTYPE = 0x4000000,
            DM_PANNINGWIDTH = 0x20000000,
            DM_PANNINGHEIGHT = 0x40000000,
        }

public struct PrinterData
        {
            public PageOrientation Orientation;
            public short PaperSize;
            public PaperSource source;
            public PageDuplex Duplex;
            public int pLength;
            public int pWidth;
            public int pmFields;
        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        internal struct PRINTER_DEFAULTS
        {
            [MarshalAs(UnmanagedType.LPTStr)]
            public String pDatatype;
            public IntPtr pDevMode;
            [MarshalAs(UnmanagedType.I4)]
            public int DesiredAccess;

}

[StructLayout(LayoutKind.Sequential)]
        struct PRINTER_INFO_2
        {
            [MarshalAs(UnmanagedType.LPStr)]
            public string pServerName;

[MarshalAs(UnmanagedType.LPStr)]
            public string pPrinterName;

[MarshalAs(UnmanagedType.LPStr)]
            public string pShareName;

[MarshalAs(UnmanagedType.LPStr)]
            public string pPortName;

[MarshalAs(UnmanagedType.LPStr)]
            public string pDriverName;

[MarshalAs(UnmanagedType.LPStr)]
            public string pComment;

[MarshalAs(UnmanagedType.LPStr)]
            public string pLocation;

public IntPtr pDevMode;

[MarshalAs(UnmanagedType.LPStr)]
            public string pSepFile;

[MarshalAs(UnmanagedType.LPStr)]
            public string pPrintProcessor;

[MarshalAs(UnmanagedType.LPStr)]
            public string pDatatype;

[MarshalAs(UnmanagedType.LPStr)]
            public string pParameters;

public IntPtr pSecurityDescriptor;

public Int32 Attributes;

public Int32 Priority;

public Int32 DefaultPriority;

public Int32 StartTime;

public Int32 UntilTime;

public Int32 Status;

public Int32 cJobs;

public Int32 AveragePPM;

}

[StructLayout(LayoutKind.Sequential)]
        internal struct DEVMODE
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public String
             dmDeviceName;
            [MarshalAs(UnmanagedType.U2)]
            public short dmSpecVersion;
            [MarshalAs(UnmanagedType.U2)]
            public short dmDriverVersion;
            [MarshalAs(UnmanagedType.U2)]
            public short dmSize;
            [MarshalAs(UnmanagedType.U2)]
            public short dmDriverExtra;
            [MarshalAs(UnmanagedType.U4)]
            public int dmFields;
            [MarshalAs(UnmanagedType.I2)]
            public short dmOrientation;
            [MarshalAs(UnmanagedType.I2)]
            public short dmPaperSize;
            [MarshalAs(UnmanagedType.I2)]
            public short dmPaperLength;
            [MarshalAs(UnmanagedType.I2)]
            public short dmPaperWidth;
            [MarshalAs(UnmanagedType.I2)]
            public short dmScale;
            [MarshalAs(UnmanagedType.I2)]
            public short dmCopies;
            [MarshalAs(UnmanagedType.I2)]
            public short dmDefaultSource;
            [MarshalAs(UnmanagedType.I2)]
            public short dmPrintQuality;
            [MarshalAs(UnmanagedType.I2)]
            public short dmColor;
            [MarshalAs(UnmanagedType.I2)]
            public short dmDuplex;
            [MarshalAs(UnmanagedType.I2)]
            public short dmYResolution;
            [MarshalAs(UnmanagedType.I2)]
            public short dmTTOption;
            [MarshalAs(UnmanagedType.I2)]
            public short dmCollate;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public String dmFormName;
            [MarshalAs(UnmanagedType.U2)]
            public short dmLogPixels;
            [MarshalAs(UnmanagedType.U4)]
            public int dmBitsPerPel;
            [MarshalAs(UnmanagedType.U4)]
            public int dmPelsWidth;
            [MarshalAs(UnmanagedType.U4)]
            public int dmPelsHeight;
            [MarshalAs(UnmanagedType.U4)]
            public int dmNup;
            [MarshalAs(UnmanagedType.U4)]
            public int dmDisplayFrequency;
            [MarshalAs(UnmanagedType.U4)]
            public int dmICMMethod;
            [MarshalAs(UnmanagedType.U4)]
            public int dmICMIntent;
            [MarshalAs(UnmanagedType.U4)]
            public int dmMediaType;
            [MarshalAs(UnmanagedType.U4)]
            public int dmDitherType;
            [MarshalAs(UnmanagedType.U4)]
            public int dmReserved1;
            [MarshalAs(UnmanagedType.U4)]
            public int dmReserved2;
        }

private IntPtr hPrinter = new System.IntPtr();
        private PRINTER_DEFAULTS PrinterValues;
        private PRINTER_INFO_2 pinfo = new PRINTER_INFO_2();
        private DEVMODE dm;
        private IntPtr ptrDM;
        private IntPtr ptrPrinterInfo;
        private int sizeOfDevMode = 0;
        private int lastError;
        private int nBytesNeeded;
        private long nRet;
        private int intError;
        private System.Int32 nJunk;
        private IntPtr yDevModeData;

[DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        private static extern bool ClosePrinter(IntPtr hPrinter);

[DllImport("winspool.Drv", EntryPoint = "DocumentPropertiesA", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]

private static extern int DocumentProperties(IntPtr hwnd, IntPtr hPrinter, [MarshalAs(UnmanagedType.LPStr)] string pDeviceNameg, IntPtr pDevModeOutput, ref IntPtr pDevModeInput, int fMode);

[DllImport("winspool.Drv", EntryPoint = "GetPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        private static extern bool GetPrinter(IntPtr hPrinter, Int32 dwLevel, IntPtr pPrinter, Int32 dwBuf, out Int32 dwNeeded);

//设置默认打印机
        [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern bool SetDefaultPrinter(string Name);

[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        private static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, ref PRINTER_DEFAULTS pd);

[DllImport("winspool.drv", CharSet = CharSet.Ansi, SetLastError = true)]
        private static extern bool SetPrinter(IntPtr hPrinter, int Level, IntPtr pPrinter, int Command);

private const int DM_OUT_BUFFER = 2;
        private const int STANDARD_RIGHTS_REQUIRED = 0xF0000;
        private const int PRINTER_ACCESS_ADMINISTER = 0x4;
        private const int PRINTER_ACCESS_USE = 0x8;
        private int GetPrinterPaperKind(string strPrinterName, string strPaperSizeName)
        {
            PrintDocument print = new PrintDocument();
            print.PrinterSettings.PrinterName = strPrinterName;
            int nKind = 0;
            foreach (System.Drawing.Printing.PaperSize ps in print.PrinterSettings.PaperSizes)
            {
                if (ps.PaperName.Equals(strPaperSizeName))
                {
                    nKind = ps.RawKind;
                    break;
                }
            }

return nKind;
        }

/// <summary>
        /// 设置本地打印机
        /// </summary>
        /// <param name="printerName">打印机名称</param>
        /// <param name="pageOrientation">打印方向 </param>
        /// <param name="strPaperName">设置界面中打印机的尺寸</param>
        /// <returns></returns>
        public bool SetLocalPrinterSettings(string printerName, PageOrientation pageOrientation, string strPaperName)
        {
            //设置为默认打印机
            bool bRet = SetDefaultPrinter(printerName);
            if (!bRet)
            {
                return false;
            }

//获取打印纸张内部kind(种类)
            int nKind = GetPrinterPaperKind(printerName, strPaperName);

//开始组织数据
            PrinterData pdata = new PrinterData();
            pdata.PaperSize = (short)nKind;  //设置纸张
            pdata.Orientation = pageOrientation; //打印纸张方向
            pdata.Duplex = PageDuplex.DMDUP_SIMPLEX; //双工模式
            pdata.source = PaperSource.DMBIN_AUTO; //纸张来源
            try
            {
                //修改纸张和打印方向,修改成功后 在打印机属性里面可以看到已经修改为新的值
                bRet = ChangePrinterSetting(printerName, ref pdata, true);
            }
            catch (Exception ex)
            {
                return false;
            }
            return bRet;
        }

private void Close()
        {
            if (hPrinter != IntPtr.Zero)
                ClosePrinter(hPrinter);
        }

public bool ChangePrinterSetting(string printerName, ref PrinterData PS, bool bNew)
        {
            if ((((int)PS.Duplex < 1) || ((int)PS.Duplex > 3)) && bNew)
            {
                throw new ArgumentOutOfRangeException("nDuplexSetting", "nDuplexSetting is incorrect.");
            }
            else
            {
                dm = this.GetPrinterSettings(printerName);
                if (bNew)  //新的尺寸和方向
                {
                    dm.dmOrientation = (short)PS.Orientation;
                    dm.dmPaperSize = (short)PS.PaperSize;
                }
                else
                {
                    PS.pmFields = dm.dmFields;
                    PS.Duplex = (PageDuplex)dm.dmDuplex;
                    PS.Orientation = (PageOrientation)dm.dmOrientation;
                    PS.source = (PaperSource)dm.dmDefaultSource;
                    PS.PaperSize = dm.dmPaperSize;
                    PS.pLength = dm.dmPaperLength;
                    PS.pWidth = dm.dmPaperWidth;
                }

Marshal.StructureToPtr(dm, yDevModeData, true);
                pinfo.pDevMode = yDevModeData;
                pinfo.pSecurityDescriptor = IntPtr.Zero;
                Marshal.StructureToPtr(pinfo, ptrPrinterInfo, false);
                lastError = Marshal.GetLastWin32Error();
                nRet = Convert.ToInt16(SetPrinter(hPrinter, 2, ptrPrinterInfo, 0));
                if (nRet == 0)
                {
                    lastError = Marshal.GetLastWin32Error();
                    throw new Win32Exception(Marshal.GetLastWin32Error());
                }
                if (hPrinter != IntPtr.Zero)
                    ClosePrinter(hPrinter);
                return Convert.ToBoolean(nRet);
            }
        }

private DEVMODE GetPrinterSettings(string PrinterName)
        {
            DEVMODE dm;
            const int PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE);
            PrinterValues = new PRINTER_DEFAULTS();
            PrinterValues.pDatatype = null;
            PrinterValues.pDevMode = IntPtr.Zero;
            PrinterValues.DesiredAccess = PRINTER_ALL_ACCESS;
            nRet = Convert.ToInt32(OpenPrinter(PrinterName, out hPrinter, ref PrinterValues));
            if (nRet == 0)
            {
                lastError = Marshal.GetLastWin32Error();
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            GetPrinter(hPrinter, 2, IntPtr.Zero, 0, out nBytesNeeded);
            if (nBytesNeeded <= 0)
            {
                throw new System.Exception("Unable to allocate memory");
            }
            else
            {
                ptrPrinterInfo = Marshal.AllocHGlobal(nBytesNeeded);
                nRet = Convert.ToInt32(GetPrinter(hPrinter, 2, ptrPrinterInfo, nBytesNeeded, out nJunk));
                if (nRet == 0)
                {
                    lastError = Marshal.GetLastWin32Error();
                    throw new Win32Exception(Marshal.GetLastWin32Error());
                }
                pinfo = (PRINTER_INFO_2)Marshal.PtrToStructure(ptrPrinterInfo, typeof(PRINTER_INFO_2));
                IntPtr Temp = new IntPtr();
                if (pinfo.pDevMode == IntPtr.Zero)
                {
                    IntPtr ptrZero = IntPtr.Zero;
                    sizeOfDevMode = DocumentProperties(IntPtr.Zero, hPrinter, PrinterName, ptrZero, ref ptrZero, 0);
                    ptrDM = Marshal.AllocCoTaskMem(sizeOfDevMode);
                    int i;
                    i = DocumentProperties(IntPtr.Zero, hPrinter, PrinterName, ptrDM, ref ptrZero, DM_OUT_BUFFER);
                    if ((i < 0) || (ptrDM == IntPtr.Zero))
                    {
                        throw new System.Exception("Cannot get DEVMODE data");
                    }
                    pinfo.pDevMode = ptrDM;
                }
                intError = DocumentProperties(IntPtr.Zero, hPrinter, PrinterName, IntPtr.Zero, ref Temp, 0);
                yDevModeData = Marshal.AllocHGlobal(intError);
                intError = DocumentProperties(IntPtr.Zero, hPrinter, PrinterName, yDevModeData, ref Temp, 2);
                dm = (DEVMODE)Marshal.PtrToStructure(yDevModeData, typeof(DEVMODE));
                if ((nRet == 0) || (hPrinter == IntPtr.Zero))
                {
                    lastError = Marshal.GetLastWin32Error();
                    throw new Win32Exception(Marshal.GetLastWin32Error());
                }
                return dm;
            }
        }

}

调用:

//获取纸张内部类型

int paperNumDefine =  GetPrinterPaperDefine("打印机名称", "纸张名称");

WinspoolHelper winsp = new WinspoolHelper();
            PrinterData PData = new PrinterData();
            PData.Duplex = PageDuplex.DMDUP_SIMPLEX;
            PData.PaperSize = (short)paperNumDefine;
            PData.source = WinspoolHelper.PaperSource.DMBIN_AUTO;
            PData.Orientation = WinspoolHelper.PageOrientation.DMORIENT_LANDSCAPE;//设置纸张方向

//设置为默认打印机

bool bRet = SetDefaultPrinter("打印机名称");

设置完毕后,查看控制面板 对应的打印机首选项纸张类型 应该是设置成功的,已经自测通过

后续如果要使用PrintDialog 直接声明即可使用

WPF 设置本地打印的纸张和方向相关推荐

  1. Autocad经验 CAD2018怎么设置打印的纸张尺寸和方向?

    我们在进行图纸设计的时候,不仅要专业知识够硬,还要学会运用很多的小技巧,比如怎么修改图纸特性.选择打印纸张,调整打印边距离,还有,居中打印 勾选.修改图形方向.使CAD打印界面的设置纸张.图形方向一致 ...

  2. 网页打印时候设置纸张、方向、页眉页脚是否显示?

    怎么控制打印?代码如下:参考media @media print {//media标签@page {size: A5 portrait; //设置纸张及其方向 portrait:纵向: landsca ...

  3. 计算机打印东西怎么横向打印机,打印怎么设置横向打印(打印机怎么调整打印方向)...

    具体操作步骤如下: 1.通过电脑打开EXCEL表单,点击上面工具中的"页面布局",选择"纸张方向". 2.单击并从纸张方向弹出的选项中选择" 3.回到 ...

  4. Java设置Excel打印一页宽_Java Excel页面设置:页边距、页面大小/方向/背景、缩放比例、打印范围...

    关于内容概述 本文介绍如何通过Java 程序进行Excel页面设置,如设置页边距.页面大小.页面方向.页面背景.页面缩放比例.打印范围等等.可参考如下方法进行相关代码操作: 关于工具使用 工具使用免费 ...

  5. 计算机和打印机的打印机尺寸设置不匹配,理光MP5000B复印机无法打印提示纸张尺寸不匹配怎么办?...

    在我们平时的工作中复印机是经常要用到的,在办公的时候我们偶尔会碰到复印机显示纸张尺寸不匹配而无法打印的情况,找人来修耽误时间浪费钱,这里小编给大家详细介绍一下理光MP5000B复印机显示纸张尺寸不匹配 ...

  6. 关于在web项目中实现本地打印

    1    问题描述 在web项目,打印功能一直是一个老大难问题,而想进行套打,则更加上难上加难.而我在最近的项目中就遇到的条形码打印的需求,需要调用客户端的打印机发送指令进行打印.在由于该项目的用户在 ...

  7. WPF实战案例-打印

    在前段时间做了一下打印,因为需要支持的格式比较多,所以wpf能打印的有限分享一下几种格式的打印(.xls .xlsx .doc .docx .png .jpg .bmp .pdf) 首先为了保证exc ...

  8. css打印适应纸张_CSS print 样式 css控制打印样式 分页 页面大小

    显示器(screen)和打印机(printer)是两种差别很大的设备,所以从浏览器里看到的页面,打印出来也许和你看到的样子有很大的差距.screen一般使用逻辑单位比如px,而打印机则应该使用物理单位 ...

  9. 打印表格留标题怎么设置_打印如何添加标题?内容一页打不下?—关于Excel文档打印的那些事-excel打印区域怎么设置...

    很多情况下,我们制作的Excel电子表格最终是要以纸面形式打印出来的.所以,关于表格打印,你还是要知道以下几个方面,不能让工作卡在最后一关. 一.为Excel文档打印添加标题 当Excel表格有多页内 ...

  10. html打印纸张尺寸设置100*150,打印机纸张大小怎么设置 打印机纸张大小设置方法【详细介绍】...

    打印机纸张大小怎么设置吗?下面就来为大家详细介绍设置打印机纸大小的几种方法. 一.通用 左键单击电脑的开始菜单 左键单击左上角的文件,再单击服务器属性 创建新格式,设置纸张的宽度和高度 左键单击打印机 ...

最新文章

  1. Paper4:Voxel-Based Extraction and Classification of 3-D Pole-Like Object From Mobile LIDAR Point Clo
  2. R语言Welch方差分析(Welch’s ANOVA)实战:Welch方差分析是典型的单因素方差分析的一种替代方法,当方差相等的假设被违反时我们无法使用单因素方差分析,这时候Welch’s出来救场了
  3. MySQL事务与存储过程
  4. Java实现文件的RSA和DES加密算法
  5. 【Tools】Navicat Premium12安装教程
  6. 03.shard_allocation_和_cluster的routing设置
  7. 为什么我不喜欢数据库三范式
  8. day10 Pyhton学习
  9. 修改Eclipse的WorkSpace保持数[转载]
  10. macbook 终端命令怎么使用_Mac终端怎么打开?带你全面了解在macOS中使用终端命令行...
  11. React Native重启APP
  12. python-patterns
  13. VMware Workstation左侧不见了,左侧菜单栏不见了
  14. php 正则获取邮箱后缀名,php中邮箱地址正则表达式实现与详解
  15. Matlab 矩阵元素选取方法
  16. sql server 索引阐述系列二 索引存储结构
  17. 【访问本地项目,localhosthost可以,本地ip不可以】
  18. 文件上传(感谢秦疆老师)
  19. Postman返回乱码问题解决
  20. MATLAB实现串口通讯的详细步骤

热门文章

  1. Docker之LNMP分布式容器部署
  2. bh1750采集流程图_多路BH1750光强检测系统的设计
  3. 信息安全初窥(一):聊一聊这个专业的前途
  4. 计算机管理格式化硬盘,细说电脑怎么格式化硬盘
  5. 问题:_ZN6caffe28TypeMeta21_typeMetaDataInstanceIN3c107complexINS2_4HalfEEEEEPKNS_
  6. latex 符号以及命令
  7. 软件工程领域权威期刊
  8. Android之ListView
  9. 400类商家服务电话点击电话号码直接拨号
  10. 服务器安装linux系统教程