• c#使用Aspose打印文件


    最近在研究winform打印文件,需要支持word,excel,ppt,pdf,图片这几种格式,不能依赖相关软件环境,研究后决定使用Aspose套件将相关文件全部转换成pdf后打印

    WrodToPDF

    使用Aspose.Word 11.9,需要配合licence文件破解

                //去水印
                string licenseFile = "Aspose.Words.lic";
                if (File.Exists(licenseFile))
                {
                    Aspose.Words.License license = new Aspose.Words.License();
                    license.SetLicense(licenseFile);
                }
    
                //转换
                Aspose.Words.Document doc = new Aspose.Words.Document(FileFullName);
                doc.Save(SaveFileName, Aspose.Words.SaveFormat.Pdf);

    ExcelToPDF

    使用Aspose.Cell 8.3(破解版本)

                    //转换
                    Workbook excel = new Workbook(FileFullName);
                    excel.Save(SaveFileName, Aspose.Cells.SaveFormat.Pdf);

    PPTToPDF

    使用Aspose.Slides 16.9(需要配合代码破解)

                //去水印
                string[] stModule = new string[8]
                {
                    "u0002u2006u2006u2003",
                    "u0003u2006u2006u2003",
                    "u0005u2005u2000u2003",
                    "u0003u2000",
                    "u000F",
                    "u0002u2000",
                    "u0003",
                    "u0002"
                };
                Assembly assembly = Assembly.GetAssembly(typeof(Aspose.Slides.License));
                Type typeLic = null, typeIsTrial = null, typeHelper = null;
                foreach (Type type in assembly.GetTypes())
                {
                    if ((typeLic == null) && (type.Name == stModule[0]))
                    {
                        typeLic = type;
                    }
                    else if ((typeIsTrial == null) && (type.Name == stModule[1]))
                    {
                        typeIsTrial = type;
                    }
                    else if ((typeHelper == null) && (type.Name == stModule[2]))
                    {
                        typeHelper = type;
                    }
                }
                if (typeLic == null || typeIsTrial == null || typeHelper == null)
                {
                    throw new Exception();
                }
                object lic = Activator.CreateInstance(typeLic);
                int findCount = 0;
    
                foreach (FieldInfo field in typeLic.GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                {
                    if (field.FieldType == typeLic && field.Name == stModule[3])
                    {
                        field.SetValue(null, lic);
                        ++findCount;
                    }
                    else if (field.FieldType == typeof(DateTime) && field.Name == stModule[4])
                    {
                        field.SetValue(lic, DateTime.MaxValue);
                        ++findCount;
                    }
                    else if (field.FieldType == typeIsTrial && field.Name == stModule[5])
                    {
                        field.SetValue(lic, 1);
                        ++findCount;
                    }
    
                }
                foreach (FieldInfo field in typeHelper.GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                {
                    if (field.FieldType == typeof(bool) && field.Name == stModule[6])
                    {
                        field.SetValue(null, false);
                        ++findCount;
                    }
                    if (field.FieldType == typeof(int) && field.Name == stModule[7])
                    {
                        field.SetValue(null, 128);
                        ++findCount;
                    }
                }
                if (findCount < 5)
                {
                    throw new NotSupportedException("无效的版本");
                }
                //转换
                Presentation ppt = new Presentation(FileFullName);
                ppt.Save(SaveFileName, Aspose.Slides.Export.SaveFormat.Pdf);

    图片ToPDF

    使用Aspose.Pdf 9.4(需要配合代码破解)

                        //去水印
                        private const string Key = "PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPlNoYW5naGFpIEh1ZHVuIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQ8L0xpY2Vuc2VkVG8+DQogICAgPEVtYWlsVG8+MzE3NzAxODA5QHFxLmNvbTwvRW1haWxUbz4NCiAgICA8TGljZW5zZVR5cGU+RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU+DQogICAgPExpY2Vuc2VOb3RlPkxpbWl0ZWQgdG8gMSBkZXZlbG9wZXIsIHVubGltaXRlZCBwaHlzaWNhbCBsb2NhdGlvbnM8L0xpY2Vuc2VOb3RlPg0KICAgIDxPcmRlcklEPjE2MDkwMjAwNDQwMDwvT3JkZXJJRD4NCiAgICA8VXNlcklEPjI2NjE2NjwvVXNlcklEPg0KICAgIDxPRU0+VGhpcyBpcyBhIHJlZGlzdHJpYnV0YWJsZSBsaWNlbnNlPC9PRU0+DQogICAgPFByb2R1Y3RzPg0KICAgICAgPFByb2R1Y3Q+QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0Pg0KICAgIDwvUHJvZHVjdHM+DQogICAgPEVkaXRpb25UeXBlPkVudGVycHJpc2U8L0VkaXRpb25UeXBlPg0KICAgIDxTZXJpYWxOdW1iZXI+NzM4MDNhYmUtYzZkMi00MTY3LTg2MTgtN2I0NDViNDRmOGY0PC9TZXJpYWxOdW1iZXI+DQogICAgPFN1YnNjcmlwdGlvbkV4cGlyeT4yMDE3MDkwNzwvU3Vic2NyaXB0aW9uRXhwaXJ5Pg0KICAgIDxMaWNlbnNlVmVyc2lvbj4zLjA8L0xpY2Vuc2VWZXJzaW9uPg0KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHA6Ly93d3cuYXNwb3NlLmNvbS9jb3Jwb3JhdGUvcHVyY2hhc2UvbGljZW5zZS1pbnN0cnVjdGlvbnMuYXNweDwvTGljZW5zZUluc3RydWN0aW9ucz4NCiAgPC9EYXRhPg0KICA8U2lnbmF0dXJlPm5LNVVUR3dZMWVJSEtIV0d2NW5sQUxXUy81bDEzWkFuamlvdnlBcGNqQis0ZjNGbm5yOWhjeUlzazlvVzQySWp0ZFYra2JHZlNSMUV4OUozSGlkaThCeE43aHFiR1BERXNaWGo2RlYxaGl1N2MxWmUyNEp3VGc2UnpsNUNJRHY1YVhxbDQyczBkSGw4eXpreDRBM2RTTU5KTzRiQ094a2V2OFBiOWxSaUc3ST08L1NpZ25hdHVyZT4NCjwvTGljZW5zZT4=";
                        private static Stream LStream = (Stream)new MemoryStream(Convert.FromBase64String(Key));
                        var l = new Aspose.Pdf.License();
                        l.SetLicense(LStream);
                        //转换
                        Document doc = new Document();
                        Page page = doc.Pages.Add();
                        Aspose.Pdf.Image image = new Aspose.Pdf.Image();
                        image.File = FileFullName;
                        page.Paragraphs.Add(image);
                        PrintFileName = OfficeUtil.CombinePDFPath(ConvertPDFName);
                        doc.Save(PrintFileName);

    PDF文件打印

    使用Aspose.Pdf打印文件可以直接设置打印机名称,分数,方向d等

                 System.Drawing.Printing.PrinterSettings ps = new     
                        System.Drawing.Printing.PrinterSettings();
                        ps.PrinterName = PrinterName;
                        ps.Copies = Copies;
                        ps.Duplex = Direction;
    
                        PdfViewer viewer = new PdfViewer();
                        viewer.BindPdf(PrintFileName);
                        viewer.PrintDocumentWithSettings(ps);
                        viewer.Close();

    注:对于excel转换pdf后是没有表格线的,ppt转换pdf后打印会被截断,需要自己调整方向与纸张大小设置

  • 相关阅读:
    Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"]
    Appium的前世今生
    appium自动化测试
    ubuntu下nvm,node以及npm的安装与使用
    Android反编译
    Android 常用 adb 命令总结
    Android SDK开发常用工具的使用及其异常处理
    如何获取android app的Activity
    Android 上多方式定位元素(python)
    获得android应用的版本号
  • 原文地址:https://www.cnblogs.com/yanpeng19940119/p/14729977.html
Copyright © 2020-2023  润新知