精华内容
下载资源
问答
  • C#打印pdf文件

    千次阅读 2013-04-02 08:18:32
    通过几天的查找经测试后发现以下三种方法可以实现用C#直接打印PDF文件,但是三种方法都不是我想要的,我想要的是一种在C#中单击打印按钮就直接打印PDF文件而不跳出任何窗口,还在寻找中,如有朋友知道如何实现请留言...

    通过几天的查找经测试后发现以下三种方法可以实现用C#直接打印PDF文件,但是三种方法都不是我想要的,我想要的是一种在C#中单击打印按钮就直接打印PDF文件而不跳出任何窗口,还在寻找中,如有朋友知道如何实现请留言,不过以下三种方法供大家参考。

    方法一:通过调用命令行:

    using System.Drawing.Printing;
    using System.Diagnostics;
    using System.Collections.Specialized;

    //打印方法

     private void pdfPrint(string filePath)
        {
            PrintDocument pd = new PrintDocument();
            Process p = new Process();
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.CreateNoWindow = true;
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.UseShellExecute = true;
            startInfo.FileName = filePath;
            startInfo.Verb = "print";
            startInfo.Arguments = @"/p /h \" + filePath + "\"\"" + pd.PrinterSettings.PrinterName + "\"";
            p.StartInfo = startInfo;
            p.Start();
            p.WaitForExit();

          
        }
        protected void btn_print_Click(object sender, EventArgs e)
        {

            string filePath="C:\\Documents and Settings\\AuYeungCK\\My Documents\\myfile\\1.pdf";
            pdfPrint(filePath);
        }

    总结:以上方法单击打印后会跳出一个adobe窗口,但是不会显示任何内容,打印机会自动打印,经测试现在一个问题,在打印我公司的通告时打印出来的内容是异常的。


    方法二:通过调用其他的类库实现

    //6DLL找到之后在工程中引用才写后面的代码

    //O2S.Components.PDFView4NET.dll
    //O2S.Components.PDFRender4NET.dll
    //FontBox-0.1.0-dev.dll
    //IKVM.GNU.Classpath.dll
    //IKVM.Runtime.dll
    //PDFBox-0.7.3.dll


    //这是引用的3个命名空间
    using O2S.Components.PDFRender4NET;
    using System.Drawing.Printing;
    using O2S.Components.PDFRender4NET.Printing;

            /// <summary>
            /// 打印的代码
            /// </summary>
            /// <param name="url">要打印的PDF路径</param>
            private int  printShow(string url)
            {
                int isOK = 0;
                PDFFile file = PDFFile.Open(url);
                PrinterSettings settings = new PrinterSettings();
                System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
                settings.PrinterName = "hp LaserJet 1160 PCL 5e";
                settings.PrintToFile = false ;

                //设置纸张大小(可以不设置,取默认设置)3.90 in,  8.65 in
                PaperSize ps = new PaperSize("test",4,9);
                ps.RawKind = 9; //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx


                O2S.Components.PDFRender4NET.Printing.PDFPrintSettings pdfPrintSettings = new O2S.Components.PDFRender4NET.Printing.PDFPrintSettings(settings);
                pdfPrintSettings.PaperSize = ps;
                pdfPrintSettings.PageScaling = O2S.Components.PDFRender4NET.Printing.PageScaling.FitToPrinterMarginsProportional;
                pdfPrintSettings.PrinterSettings.Copies = 1;

                try
                {
                    file.Print(pdfPrintSettings);
                    isOK = 1;
                }
                catch (Exception)
                {
                    isOK = -1;
                    throw;
                }
                finally
                {

                    file.Dispose();
                }
                return isOK;
            }

    //单击一个打印按钮进行打印
        protected void btnPrint_Click(object sender, EventArgs e)
        {
            string url = "这里是PDF档的路径如:C:\\Documents and Settings\\AuYeungCK\\My Documents\\myfile\\aa1.pdf";
            int isOK =-1;
            isOK=printShow(url);
            if (isOK > 0)
            {
                Response.Write("打印成功!");
            }
            else {
                Response.Write("打印失败!");
            }
        }

    总结:以上方法单击打印后会直接打印,但是打印出来的纸上会显示“PDFView4.0.2.0 eveluation version”字样,并发现打印有文字和图片的内容时,只打印图片部分。

     

    方法三:加载adobecom组件

    1、打开winform界面,然后在左边的在工具栏中右击->单击choose Items->单击COM Components在里面将Adobe PDF Reader勾上确定。

    2、将刚加载进来的Adobe PDF Reader控件拖到winform界面。

    3、然后在加载界面输入如下代码:

    string fileName = "C:\\Documents and Settings\\AuYeungCK\\My Documents\\myfile\\aa1.pdf";
     this.axAcroPDF1.LoadFile(fileName);

    axAcroPDF.1setShowToolbar(false);

     axAcroPDF1.LoadFile(fileName);
      axAcroPDF1.printAll();

     

    另:拖过来的axAcroPDF1也可以自己创建如下代码:

    AxAcroPDFLib.AxAcroPDF axAcroPDF 1= new AxAcroPDFLib.AxAcroPDF();
                axAcroPDF1.Location = new System.Drawing.Point(0, 24);
                axAcroPDF1.Size = new System.Drawing.Size(292, 242);
                axAcroPDF1.Dock = DockStyle.Fill;
                Controls.Add(axAcroPDF1);

     

    总结:以上方法完成了显示PDF档以及打印功能,但是这样运行后会先跳出一个提示窗口是否打印,不管你是否打印都会显示一个无任何内容的adobe窗口,然后也会在winform中显示PDF档。

    方法四:用第三方控件iTextSharp复制PDF档打印

    /// <summary>

        /// 实现PDF复制

        /// </summary>

        /// <param name="filePath">PDF</param>

        /// <param name="toPath">目标c1PDF</param>

        /// <param name="print">是否实现自动打印</param> 

        private void ConvertPDFToPDF(string filePath, string toPath, bool print)

        {

            PdfReader reader = new PdfReader(filePath);

            Document document = new Document(reader.GetPageSizeWithRotation(1));

            int n = reader.NumberOfPages;

            FileStream baos = new FileStream(toPath, FileMode.Create, FileAccess.Write);

            PdfCopy copy = new PdfCopy(document, baos);

            copy.ViewerPreferences = PdfWriter.HideToolbar | PdfWriter.HideMenubar;

            //pdf中写20837 ¤J23481 ®e  

            document.Open();

            for (int i = 1; i <= n; i++)

            {

                PdfImportedPage page = copy.GetImportedPage(reader, i);

                copy.AddPage(page);

            }

            if (print)

            {

                PdfAction.JavaScript("myOnMessage();", copy); 

                copy.AddJavaScript("this.print(true);function myOnMessage(aMessage) {app.alert('Test',2);} var msgHandlerObject = new Object();doc.onWillPrint = myOnMessage;this.hostContainer.messageHandler = msgHandlerObject;");

            }

            document.Close();

            reader.Close();

        }

        protected void cmdPrint_Click(object sender, EventArgs e)

        {

            string filePath = @"D:\iTextSharpPDF\金牌服务打印机序列号.pdf";

            string toPath = @"D:\iTextSharpPDF\copy\金牌服务打印机序列号.pdf";

            ConvertPDFToPDF(filePath,toPath ,true);

            Response.Write("复制成功");

    }

    总结:此方法是实现将PDF复制到另一个地方,然后用户去打开复制的PDF档后就会直接打印,此档也会跳出Adobe的界面,但是只能实现打印功能,不能另存。


     


    展开全文
  • C# 打印PDF文件

    千次阅读 2017-06-06 15:36:43
    安装控件后,创建一个新的项目(Windows窗体应用程序),找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加; 第二步:使用命名空间 using ...

    第一步:添加项目引用

    安装控件后,创建一个新的项目(Windows窗体应用程序),找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加;


    第二步:使用命名空间

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


    第三步:创建一个新的PDF文档,并加载待打印的PDF文件

    // 实例化一个word文档对象
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(@"F:\test.pdf");

    第四步:(使用默认打印机打印所有页面)选择打印机和设置打印页面范围

    //选择默认打印机打印所有页面
                //doc.PrintDocument.Print();
    
                //选择打印机并设置打印页面范围
                PrintDialog dialogPrint = new PrintDialog();
                dialogPrint.AllowPrintToFile = true;
                dialogPrint.AllowSomePages = true;
                dialogPrint.PrinterSettings.MinimumPage = 1;
                dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
                dialogPrint.PrinterSettings.FromPage = 1;
                dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
    
                if (dialogPrint.ShowDialog() == DialogResult.OK)
                {
                    doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
                    doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
                    doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
    
                    PrintDocument printDoc = doc.PrintDocument;
                    dialogPrint.Document = printDoc;
                    printDoc.Print();
                }


    运行结果,点击按钮,弹出右边窗口,便可以打印了

       

    完整代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Drawing.Printing;
    using Spire.Pdf;
    
    namespace wordExport
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, System.EventArgs e)
            {
                // 实例化一个word文档对象
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(@"F:\test.pdf");
    
                //选择默认打印机打印所有页面
                //doc.PrintDocument.Print();
    
                //选择打印机并设置打印页面范围
                PrintDialog dialogPrint = new PrintDialog();
                dialogPrint.AllowPrintToFile = true;
                dialogPrint.AllowSomePages = true;
                dialogPrint.PrinterSettings.MinimumPage = 1;
                dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
                dialogPrint.PrinterSettings.FromPage = 1;
                dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
    
                if (dialogPrint.ShowDialog() == DialogResult.OK)
                {
                    doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
                    doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
                    doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
    
                    PrintDocument printDoc = doc.PrintDocument;
                    dialogPrint.Document = printDoc;
                    printDoc.Print();
                }
            }
        }
    }
    


    展开全文
  • C#打印PDF文件.zip

    2021-06-21 16:57:34
    C# 最简单的下载并打印PDF文件
  • C# 打印PDF文件之使用不同打印机打印所有页面或部分页面 最近在逛国外各大编程社区论坛的时候,发现很多人都在问一个关于PDF文件打印的问题:打印时如何选择非默认打印机并设置打印页面的范围。而一般情况下,打印...

    C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

    最近在逛国外各大编程社区论坛的时候,发现很多人都在问一个关于PDF文件打印的问题:打印时如何选择非默认打印机并设置打印页面的范围。而一般情况下,打印时选择的打印机是默认打印机,打印页面范围是所有页面,如果要选择其他打印机或打印部分页面,需要对代码进行一定的设置。通过在百度和各大网站上查找资料,终于在MSDN上找到了一个解决方案,我把它在这里分享出来,让其他有同样需求的朋友少走点冤枉路。

    在该解决方案中我使用了一个免费的PDF控件,感兴趣的博友可以从Codeplex官网:https://freepdf.codeplex.com上下载。

    下面是该解决方案的详细代码分步解析:

    第一步:添加项目引用。

    安装控件后,创建一个新的项目,找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加;

    如下图:

                         

    第二步:使用命名空间。

    在该方案中,我使用的命名空间如下:

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

     

    第三步:创建一个新的PDF文档,并加载待打印的PDF文件。

    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("sample.pdf");
    

    如果需要使用默认打印机打印所有页面,请看第四步。如果需要使用其他打印机并设置打印页面范围,请看第五步。

     

    第四步:使用默认打印机打印所有页面。

    doc.PrintDocument.Print();
    

     

    第五步:选择打印机和设置打印页面范围。 

    PrintDialog dialogPrint = new PrintDialog();
    dialogPrint.AllowPrintToFile = true;
    dialogPrint.AllowSomePages = true;
    dialogPrint.PrinterSettings.MinimumPage = 1;
    dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
    dialogPrint.PrinterSettings.FromPage = 1;
    dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
    
    if (dialogPrint.ShowDialog() == DialogResult.OK)
        {
            //设置打印的起始页码
            doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
    
            //设置打印的终止页码
            doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
    
            //选择打印机
            doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
    
            PrintDocument printDoc = doc.PrintDocument;
            dialogPrint.Document = printDoc;
            printDoc.Print();
        }
    

     

    运行项目,输出的效果图如下(打印机和打印页面范围可以自己选择):

     

     

    全部代码如下:

    using Spire.Pdf;
    using System.Windows.Forms;
    using System.Drawing.Printing;
    
    namespace PrintPDF
    {
        class Program
        {
            static void Main(string[] args)
            {
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile("sample.pdf");
     
                //选择默认打印机打印所有页面
                //doc.PrintDocument.Print();
    
                //选择打印机并设置打印页面范围
                PrintDialog dialogPrint = new PrintDialog();
                dialogPrint.AllowPrintToFile = true;
                dialogPrint.AllowSomePages = true;
                dialogPrint.PrinterSettings.MinimumPage = 1;
                dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
                dialogPrint.PrinterSettings.FromPage = 1;
                dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
    
                if (dialogPrint.ShowDialog() == DialogResult.OK)
                {
                    doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
                    doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
                    doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
    
                    PrintDocument printDoc = doc.PrintDocument;
                    dialogPrint.Document = printDoc;
                    printDoc.Print();
                }
            }
        }
    }
    

      

    以上是我亲测以后觉得可用的方案,放在这里供大家参考,如果有什么不周到的地方,希望大家不吝赐教,谢谢!

    转载于:https://www.cnblogs.com/Yesi/p/5066835.html

    展开全文
  • DLL地址:https://freepdf.codeplex.com 下面是该解决方案的详细代码分步解析: 第一步:添加项目引用。 安装控件后,创建一个新的项目,找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,...

      本文为转载,原文:http://www.cnblogs.com/Yesi/p/5066835.html

         DLL地址:https://freepdf.codeplex.com

          

    下面是该解决方案的详细代码分步解析:

    第一步:添加项目引用。

    安装控件后,创建一个新的项目,找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加;

    如下图:

                         

    第二步:使用命名空间。

    在该方案中,我使用的命名空间如下:

    1
    2
    3
    using Spire.Pdf;
    using System.Windows.Forms;
    using System.Drawing.Printing;

     

    第三步:创建一个新的PDF文档,并加载待打印的PDF文件。

    1
    2
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("sample.pdf");

    如果需要使用默认打印机打印所有页面,请看第四步。如果需要使用其他打印机并设置打印页面范围,请看第五步。

     

    第四步:使用默认打印机打印所有页面。

    1
    doc.PrintDocument.Print();

     

    第五步:选择打印机和设置打印页面范围。 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    PrintDialog dialogPrint = new PrintDialog();
    dialogPrint.AllowPrintToFile = true;
    dialogPrint.AllowSomePages = true;
    dialogPrint.PrinterSettings.MinimumPage = 1;
    dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
    dialogPrint.PrinterSettings.FromPage = 1;
    dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
     
    if (dialogPrint.ShowDialog() == DialogResult.OK)
        {
            //设置打印的起始页码
            doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
     
            //设置打印的终止页码
            doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
     
            //选择打印机
            doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
     
            PrintDocument printDoc = doc.PrintDocument;
            dialogPrint.Document = printDoc;
            printDoc.Print();
        }

     

    运行项目,输出的效果图如下(打印机和打印页面范围可以自己选择):

     

     

    全部代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    using Spire.Pdf;
    using System.Windows.Forms;
    using System.Drawing.Printing;
     
    namespace PrintPDF
    {
        class Program
        {
            static void Main(string[] args)
            {
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile("sample.pdf");
      
                //选择默认打印机打印所有页面
                //doc.PrintDocument.Print();
     
                //选择打印机并设置打印页面范围
                PrintDialog dialogPrint = new PrintDialog();
                dialogPrint.AllowPrintToFile = true;
                dialogPrint.AllowSomePages = true;
                dialogPrint.PrinterSettings.MinimumPage = 1;
                dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
                dialogPrint.PrinterSettings.FromPage = 1;
                dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;
     
                if (dialogPrint.ShowDialog() == DialogResult.OK)
                {
                    doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
                    doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
                    doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;
     
                    PrintDocument printDoc = doc.PrintDocument;
                    dialogPrint.Document = printDoc;
                    printDoc.Print();
                }
            }
        }
    }

    转载于:https://www.cnblogs.com/hhhh2010/p/6083840.html

    展开全文
  • C#实现打印PDF文件

    热门讨论 2016-04-20 19:42:52
    C#多种方法实现打印PDF文件,可以指定打印机
  • C#打印PDF

    千次阅读 2016-03-28 21:25:40
    C#打印PDF文件的方式有如下几种:   第一种:新建打印进程,利用C#封装的打印方法直接打印。 缺点:会启动Adobe reader   修复:   第二种:引用第三方dll进行打印 O2S.Components.PDFView4NET.dll O2S....
  • C# 打印本地PDF文件

    2019-09-29 06:46:54
    通过几天的查找经测试后发现以下三种方法可以实现用C#直接打印PDF文件。 方法一:通过调用命令行: using System.Drawing.Printing; using System.Diagnostics; using System.Collections.Specialized; //...
  • Pdf之C#直接打印pdf文件

    万次阅读 2013-07-29 09:17:59
    以下1,2种方法是可以正常进行pdf直接打印,其他方法为网页的参考资料,没有具体实践过。 1)确认本机安装adobeAcrobat 软件,用 Acrobat.exel /h /p c:/test2.pdf 2)调用本地命令行打印 [c-sharp] view plain...
  • c# 直接打印pdf文件

    万次阅读 2010-05-18 09:53:00
    以下1,2种方法是可以正常进行pdf直接打印,其他方法为网页的参考资料,没有具体实践过。1)确认本机安装adobeAcrobat 软件,用 Acrobat.exel /h /p c:/test2.pdf2)调用本地命令行打印 //印刷 public void printPDF...
  • C#:MVC打印PDF文件

    2019-10-06 03:50:59
    在百度上找了许多PDF文件打印,但是符合我需求的打印方式还没看到,所以根据看了https://www.cnblogs.com/TiestoRay/p/3380717.html的范例后,研究了一下,做出来符合自己需求的打印方式分享一下。 1、先要引用一个...
  • 主要为大家详细介绍了C#实现pdf导出 .Net导出pdf文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 方法一:引用Spire.pdf的DLL文件。方法二:利用PdfViewer控件打印。方法三:引用O2S.Components.PDFRender4NET的DLL文件。做好笔记以后再也不用担心找不到代码了
  • C#PDF文件添加水印

    千次阅读 2015-10-29 16:22:25
    C#PDF文件添加水印
  • 介绍:通过pdf地址先将文件下载到本地,然后调用打印机打印,最后将下载的文件删除。  环境:windows系统。(windows64位)  windows系统中安装python3.6.2环境  资料:  O2S.Components.PDFRender4NET.dll...
  • C#打印PDF文档并实时监测打印进度

    千次阅读 2018-08-22 11:19:59
    项目需求是:客户端通过OA系统上传打印请求到服务器,服务器提交PDF文档打印打印完成后做后期处理。。。项目的后期处理部分要做什么不是本文涉及的内容,这里仅涉及打印。 首先是系统选型,选择范围是android、...
  • 使用C#、ASP.NET MVC5,通过pdf.js实现pdf文件的预览、翻页、打印等功能
  • C#静默打印 PDF

    千次阅读 2018-02-28 09:54:20
    C#静默打印 PDF 本次使用第三方dll进行打印: Spire.License 版本:1.3.2.40 Spire.Pdf 版本:3.2.52.56040 官网免费版下载地址 使用说明 静默打印 选择电脑中默认打印机打印 using Spire.Pdf; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,893
精华内容 2,357
关键字:

c#打印pdf文件

c# 订阅