首页 > 编程语言 >c# 打印电子发票

c# 打印电子发票

时间:2023-05-25 11:55:32浏览次数:34  
标签:c# doc void 打印 PaperSize openFileDialog using 发票

 

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using Spire.Pdf;

namespace InvoicePrint
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnUpload_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            //设置对话框标题
            openFileDialog.Title = "选择要打印的发票";
            //设置文件类型
            openFileDialog.Filter = "PDF文件|*.pdf|PDF文件|*.PDF";
            //默认加载目录
            openFileDialog.InitialDirectory = @"C:\";
            //记忆之前打开的对话框
            openFileDialog.RestoreDirectory = true;
            //多选
            openFileDialog.Multiselect = true;

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {

                for (int i = 0; i < openFileDialog.SafeFileNames.Length; i++)
                {
                    //openFileDialog.SafeFileNames[i] 文件名扩展名
                    //openFileDialog.FileNames[i] 全路径及文件名
                    //lbFileList.Items.Add(openFileDialog.SafeFileNames[i]);
                    lbFileList.Items.Add(openFileDialog.FileNames[i]);

                }


            }



        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            pdfPrint(lbFileList.Items[0].ToString());

        }

        void pdfPrint(string pdfFileName)
        {
            //加载需要打印的PDF文档
            PdfDocument doc=new Spire.Pdf.PdfDocument();
            doc.LoadFromFile(pdfFileName);

            //获取原文档第一页的纸张大小,这里的单位是Point

            SizeF size = doc.Pages[0].Size;

            //实例化PaperSize对象,设置其宽、高

            //需要特别注意的是这里涉及到单位的转换,PaperSize的宽高参数默认单位是百英寸 

            PaperSize paper = new PaperSize("Custom", (int)size.Width / 210 * 100, (int)size.Height / 72 * 100);

            paper.RawKind = (int)PaperKind.Custom;

            //设置打印的纸张大小为原来文档的大小

            doc.PrintSettings.PaperSize = paper;

            //需要选择FitSize打印模式

            doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);

            //打印

            doc.Print();
        }
    }

}

 

标签:c#,doc,void,打印,PaperSize,openFileDialog,using,发票
From: https://www.cnblogs.com/lrzy/p/17430740.html

相关文章

  • 接收请求参数与 Restful【SpringMVC】
    一、接收请求参数@RequestParm1、起别名2、问号传值3、完成映射(集合)@PathVariable斜杠 路径传值@RequestBodyjson参数传值 二、时间日期参数@DateTimeFormat(pattern="yyyy-MM-ddHH:mm:ss")设置日期格式 三、Restful@PostMapping......
  • [cnn]cnn训练MINST数据集demo
    [cnn]cnn训练MINST数据集demotips:在文件路径进入conda输入jupyternbconvert--tomarkdowntest.ipynb将ipynb文件转化成markdown文件jupyternbconvert--tohtmltest.ipynbjupyternbconvert--topdftest.ipynb(html,pdf文件同理)importtorchimporttorch.nnasn......
  • cnn全连接层
    作用根据特征的组合进行分类大大减少特征位置对分类带来的影响减少特征位置对分类带来的影响就是它把特征representation整合到一起,输出为一个值这样做,有一个什么好处?就是大大减少特征位置对分类带来的影响为啥都是两层?但是大部分是两层以上呢这是为啥子呢泰勒公式都......
  • IEC 60958 && IEC 61937
    IEC60958&&IEC61937IEC60958IEC60958是一种传递数字音频的接口规范,相比I2S,IEC60958通过一根线同时传递时钟信号和数据信号。IEC60958用来传递两channel,16/20/24bits采样深度的PCM数据。IEC60958在传输数据时使用双相符号编码(BiphaseMarkCode),简称BMC,属于一种相位......
  • TDengine 成功“晋级” Percona Live 2023 银牌赞助商,开发者驻足关注
    带着创新的数据技术走遍全球这一次陶建辉带着TDengine飞到了丹佛...... 2023年5月22-24日,一年一度的开源数据库领域全球最具影响力峰会PerconaLive2023在丹佛技术中心万豪酒店举办。PerconaLive是全球持续举办最久的独立开源数据大会,这场为期三天的大会聚集了......
  • java arrays arraycopy 复制数组
    publicstaticvoidmain(Stringargs[]){int[]source={1,2,3,4,5,6,7};int[]target=newint[5];System.arraycopy(source,0,target,0,5);//6,7超出5的长度,被省略了System.out.println(Arrays.toString(target));for(......
  • 查看gcc/g++版本以及对应默认的的C++标准
    通过如下命令查看_cplusplus的值:g++-dM-E-xc++/dev/null|grep-F__cplusplus对应查表C++标准_cplusplusC++11201103LC++14201402LC++17201703L ......
  • vue3+vite build打包删除控制台打印
    很简单,直接在vite.config.ts里面添加配置即可:exportdefault({mode})=>defineConfig({build:{minify:"terser",terserOptions:{compress:{//生产环境时移除consoledrop_console:true,drop_debugger:true,......
  • SimpleChannelInboundHandler
    在Netty中,SimpleChannelInboundHandler是一个抽象类,用于处理入站消息(InboundMessages)。它是ChannelInboundHandlerAdapter的子类,为简化消息处理提供了方便的实现。SimpleChannelInboundHandler的主要作用是处理接收到的消息,并提供一种方便的方式来释放资源。它使用了泛型,可以指......
  • 关于《Building a GraphQL service》的尝试
      以下是实现代码packagecom.example.graphqlserver;importjava.util.Arrays;importjava.util.List;publicrecordAuthor(Stringid,StringfirstName,StringlastName){privatestaticList<Author>authors=Arrays.asList(newAuthor(......