当前位置: 首页 > news >正文

减肥瘦身网站模板源码网站准备建设的内容

减肥瘦身网站模板源码,网站准备建设的内容,网站建设和维护采购协议书,深圳网页制作与网站建设公司Word转成pdf、打印的方案几乎没有免费开源的方案#xff0c;现在提供一个通过LibreOffice实现的方案 操作依赖LibreOffice需要安装#xff0c;点此下载老版本 5.4.7.2是最后一个支持xp的 版本如需xp要请安装此版本 LibreOffice官方介绍 LibreOffice 是一款开放源代码的自…Word转成pdf、打印的方案几乎没有免费开源的方案现在提供一个通过LibreOffice实现的方案 操作依赖LibreOffice需要安装点此下载老版本 5.4.7.2是最后一个支持xp的 版本如需xp要请安装此版本 LibreOffice官方介绍 LibreOffice 是一款开放源代码的自由免费全能办公软件可运行于 Microsoft Windows, GNU/Linux 以及 macOS 等操作系统上。它包含了 Writer, Calc, Impress, Draw, Math 以及 Base 等组件可分别用于文本文档、电子表格、幻灯片演示文稿、绘图文档、数学公式编辑、数据库管理等工作。 LibreOffice 采用对企业和个人用户均免费的 MPL 2.0 授权协议。您可以自由分发该软件无需支付授权费用但您仍然可以付费获得经认证的专业支持。它的源代码完全公开任何人都可以参与软件的开发和维护。 一、通过进程的方式 1.Word打印 public void PrintWordFile(string file, string printerName){if (string.IsNullOrEmpty(file)) throw new Exception(Invalid parameters passed to convert word function.);if (!File.Exists(file)) throw new FileNotFoundException($The file passed to the convert word process ({file}) could not be found.);var fileInfo new FileInfo(file);if (fileInfo.Extension.ToLower() ! .doc fileInfo.Extension.ToLower() ! .docx)throw new ArgumentOutOfRangeException($The file type passed to the convert word process is an invalid type ({fileInfo.Extension}).);var libreOfficePath Path.Combine(LibreOfficePath, swriter.exe);if (!File.Exists(libreOfficePath)) throw new FileNotFoundException(It seems that LibreOffice is not where it should be, please ensure the path exists.);var procStartInfo new ProcessStartInfo(libreOfficePath, $--headless --pt {printerName} {file}){RedirectStandardOutput true,RedirectStandardError true,UseShellExecute false,CreateNoWindow true,WorkingDirectory Environment.CurrentDirectory};Process process new Process() { StartInfo procStartInfo };// Attach event handlers to capture output and error streamsprocess.OutputDataReceived (sender, args) Console.WriteLine(OUT: args.Data);process.ErrorDataReceived (sender, args) Console.WriteLine(ERR: args.Data);process.Start();// Start reading the output asynchronouslyprocess.BeginOutputReadLine();process.BeginErrorReadLine();process.WaitForExit();if (process.ExitCode ! 0){throw new LibreOfficeFailedException(process.ExitCode);}} 2.Word转成PDF public string ConvertWordFile(string file, string outputDirectory){if (string.IsNullOrEmpty(file) || string.IsNullOrEmpty(outputDirectory)) throw new Exception(Invalid parameters passed to convert word function.);if (!File.Exists(file)) throw new FileNotFoundException($The file passed to the convert word process ({file}) could not be found.);if (!Directory.Exists(outputDirectory)) throw new DirectoryNotFoundException($The output folder passed to the convert word process ({outputDirectory}) does not exist.);if (outputDirectory.EndsWith(\)) outputDirectory outputDirectory.TrimEnd(\\);var fileInfo new FileInfo(file);if (fileInfo.Extension.ToLower() .doc fileInfo.Extension.ToLower() .docx) throw new ArgumentOutOfRangeException($The file type passed to the convert word process is an invalid type ({fileInfo.Extension}).);var outputFile outputDirectory \ Path.GetFileNameWithoutExtension(fileInfo.Name) .pdf;if (File.Exists(outputFile)) File.Delete(outputFile);var libreOfficePath Path.Combine(LibreOfficePath, swriter.exe);if (!File.Exists(libreOfficePath)) throw new FileNotFoundException(It seems that LibreOffice is not where it should be, please ensure the path exists.);var procStartInfo new ProcessStartInfo(libreOfficePath, $--headless --convert-to pdf:writer_pdf_Export {file} --outdir {outputDirectory}){RedirectStandardOutput true,UseShellExecute false,CreateNoWindow true,WorkingDirectory Environment.CurrentDirectory};Process process new Process() { StartInfo procStartInfo };process.Start();process.WaitForExit();if (process.ExitCode ! 0)throw new LibreOfficeFailedException(process.ExitCode);if (!File.Exists(outputFile)) throw new FileNotFoundException(The convert to word process has failed to convert the file!);return outputFile;}public class LibreOfficeFailedException : Exception{public LibreOfficeFailedException(int exitCode) : base($LibreOffice has failed with {exitCode}) { }} 二、通过cli库调用下附代码 CLI下载 public class WordPrint{private XComponentContext context;private XMultiServiceFactory service;private XComponentLoader component;private XComponent doc;private static WordPrint wordPrint;private Liststring filters new Liststring();#region ConstructorsWordPrint(){NativeMethods.InitializationLibrary();/// This will start a new instance of OpenOffice.org if it is not running, /// or it will obtain an existing instance if it is already open.context uno.util.Bootstrap.bootstrap();/// The next step is to create a new OpenOffice.org service managerservice (XMultiServiceFactory)context.getServiceManager();/// Create a new Desktop instance using our service managercomponent (XComponentLoader)service.createInstance(com.sun.star.frame.Desktop);// Getting filtersXNameContainer filters (XNameContainer)service.createInstance(com.sun.star.document.FilterFactory);foreach (string filter in filters.getElementNames())this.filters.Add(filter);}~MiniWordPrint(){if (doc ! null)doc.dispose();doc null;}#endregion#region Private methodsprivate string FilterToString(ExportFilter filter){switch (filter){case ExportFilter.Word97: return MS Word 97;case ExportFilter.WriterPDF: return writer_pdf_Export;case ExportFilter.CalcPDF: return calc_pdf_Export;case ExportFilter.DrawPDF: return draw_pdf_Export;case ExportFilter.ImpressPDF: return impress_pdf_Export;case ExportFilter.MathPDF: return math_pdf_Export;}return ;}#endregion#region Public methods/// summary/// load docx/// /summary/// param namefilenamefile path/param/// param namehiddenload document invisible Defines if the loaded component is made visible. If this property is not specified, the component is made visible by default./param/// returns/returnspublic bool Load(string filename, bool hidden){return Load(filename, hidden, , );}/// summary/// load docx/// /summary/// param namefilenamefile path/param/// param namehiddenload document invisible Defines if the loaded component is made visible. If this property is not specified, the component is made visible by default. /param/// param namefilter_indexinternal filter name see crefFilters/ Filters index/// Name of a filter that should be used for loading or storing the component.Names must match the names of the TypeDetection configuration, invalid names are ignored.If a name is specified on loading, it still will be verified by a filter detection, but in case of doubt it will be preferred./param/// param namefilter_optionsadditional properties for filter/// Some filters need additional parameters; use only together with property MediaDescriptor::FilterName.Details must be documented by the filter. This is an old format for some filters. If a string is not enough, filters can use the property MediaDescriptor::FilterData./param/// returns/returnspublic bool Load(string filename, bool hidden, int filter_index, string filter_options){return Load(filename, hidden, filters[filter_index], filter_options);}/// summary/// load docx/// /summary/// param namefilenamefile path/param/// param namehiddenload document invisible Defines if the loaded component is made visible. If this property is not specified, the component is made visible by default./param/// param namefilter_nameinternal filter name see crefFilters//// Name of a filter that should be used for loading or storing the component.Names must match the names of the TypeDetection configuration, invalid names are ignored.If a name is specified on loading, it still will be verified by a filter detection, but in case of doubt it will be preferred./param/// param namefilter_options additional properties for filter/// Some filters need additional parameters; use only together with property MediaDescriptor::FilterName.Details must be documented by the filter. This is an old format for some filters. If a string is not enough, filters can use the property MediaDescriptor::FilterData./param/// returns/returnspublic bool Load(string filename, bool hidden, string filter_name, string filter_options){ListPropertyValue pv new ListPropertyValue();pv.Add(new PropertyValue(Hidden, 0, new uno.Any(hidden), PropertyState.DIRECT_VALUE));if (filter_name ! ){pv.Add(new PropertyValue(FilterName, 0, new uno.Any(filter_name), PropertyState.DIRECT_VALUE));pv.Add(new PropertyValue(FilterOptions, 0, new uno.Any(filter_options), PropertyState.DIRECT_VALUE));}try{doc component.loadComponentFromURL(file:/// filename.Replace(\\, /), _blank,0, pv.ToArray());return true;}catch{doc null;return false;}}/// summary/// a given document xDoc to print to the standard printer without any settings/// /summary/// returns/returnspublic bool Print(){return Print(, 1, );}/// summary/// a given document xDoc to print /// /summary/// param nameprintNamestring - Specifies the name of the printer queue to be used./param/// param namecopiesshort - Specifies the number of copies to print./param/// param namepagesstring - Specifies the pages to print in the same format as in the print dialog of the GUI (e.g. 1, 3, 4-7, 9-)/param/// param nameorientationcom.sun.star.view.PaperOrientation. Specifies the orientation of the paper./param/// param namepaperFormatcom.sun.star.view.PaperFormat. Specifies a predefined paper size or if the paper size is a user-defined size./param/// returns/returnspublic bool Print(string printName, int copies, string pages, MiniOrientation orientation MiniOrientation.PORTRAIT, MiniFormat paperFormat MiniFormat.A4){var printerDesc new ListPropertyValue();if (!string.IsNullOrEmpty(printName))printerDesc.Add(new PropertyValue(Name, 0, new uno.Any(typeof(string), printName), PropertyState.DIRECT_VALUE));printerDesc.Add(new PropertyValue(PaperOrientation, 0, new uno.Any(typeof(PaperOrientation), orientation), PropertyState.DIRECT_VALUE));printerDesc.Add(new PropertyValue(PaperFormat, 0, new uno.Any(typeof(PaperFormat), paperFormat), PropertyState.DIRECT_VALUE));var printOpts new ListPropertyValue();printOpts.Add(new PropertyValue(CopyCount, 0, new uno.Any(copies), PropertyState.DIRECT_VALUE));if (!string.IsNullOrEmpty(pages))printOpts.Add(new PropertyValue(Pages, 0, new uno.Any(pages), PropertyState.DIRECT_VALUE));printOpts.Add(new PropertyValue(Wait, 0, new uno.Any(true), PropertyState.DIRECT_VALUE));//if (doc is XPrintable)try{((XPrintable)doc).setPrinter(printerDesc.ToArray());((XPrintable)doc).print(printOpts.ToArray());return true;}catch { return false; }}/// summary/// a given document xDoc to print with custom/// /summary/// param nameprinterDesc///----------- Properties of com.sun.star.view.PrinterDescriptor--------///*** Name string - Specifies the name of the printer queue to be used.///*** PaperOrientation com.sun.star.view.PaperOrientation.Specifies the orientation of the paper.///*** PaperFormat com.sun.star.view.PaperFormat.Specifies a predefined paper size or if the paper size is a user-defined size.///*** PaperSize com.sun.star.awt.Size.Specifies the size of the paper in 1/100 mm.///*** IsBusy boolean - Indicates if the printer is busy.///*** CanSetPaperOrientation boolean - Indicates if the printer allows changes to.PaperOrientation///*** CanSetPaperFormat boolean - Indicates if the printer allows changes to.PaperFormat///*** CanSetPaperSize boolean - Indicates if the printer allows changes to.PaperSize/// /param/// param nameprinterDesc///------------- Properties of com.sun.star.view.PrintOptions--------///CopyCount short - Specifies the number of copies to print.///FileName string - Specifies the name of a file to print to, if set.///Collate boolean - Advises the printer to collate the pages of the copies.If true, a whole document is printed prior to the next copy, otherwise the page copies are completed together.///Pages string - Specifies the pages to print in the same format as in the print dialog of the GUI (e.g. 1, 3, 4-7, 9-)///Wait boolean - Advises that the print job should be performed synchronously, i.e.wait until printing is complete before returning from printing.Otherwise return is immediate and following actions(e.g.closing the corresponding model) may fail until printing is complete.Default is false./// /param/// param namepagePrintSettings/// ------------- Properties of com.sun.star.text.PagePrintSettings--------/// PageRows short - Number of rows in which document pages should appear on the output page./// PageColumns short - Number of columns in which document pages should appear on the output page./// LeftMargin long - Left margin on the output page./// RightMargin long - Right margin on the output page./// TopMargin long - Top margin on the output page./// BottomMargin long - Bottom margin on the output page./// HoriMargin long - Margin between the columns on the output page./// VertMargin long - Margin between the rows on the output page./// IsLandscape boolean - Determines if the output page is in landscape format./// /param/// returns/returnspublic bool Print(ListMiniPropertyValue printerDesc, ListMiniPropertyValue printOpts, ListMiniPropertyValue pagePrintSettings){try{var printSettings pagePrintSettings.ConvertAll(v ToPropertyValue(v));var desc printerDesc.ConvertAll(v ToPropertyValue(v));var opts printOpts.ConvertAll(v ToPropertyValue(v));((XPagePrintable)doc).setPagePrintSettings(printSettings.ToArray());((XPrintable)doc).setPrinter(desc.ToArray());((XPrintable)doc).print(opts.ToArray());return true;}catch { return false; }}/// summary/// save pdf/// /summary/// param namefilenamefile path/param/// param namefiltersee crefExportFilter//param/// returns/returnspublic bool Save(string filename, ExportFilter filter){return Save(filename, FilterToString(filter));}/// summary/// save pdf/// /summary/// param namefilenamefile path/param/// param namefilter/// internal filter name see crefFilters//// Name of a filter that should be used for loading or storing the component.Names must match the names of the TypeDetection configuration, invalid names are ignored.If a name is specified on loading, it still will be verified by a filter detection, but in case of doubt it will be preferred./// /param/// returns/returnspublic bool Save(string filename, string filter){ListPropertyValue pv new ListPropertyValue();pv.Add(new PropertyValue(FilterName, 0, new uno.Any(filter), PropertyState.DIRECT_VALUE));pv.Add(new PropertyValue(Overwrite, 0, new uno.Any(true), PropertyState.DIRECT_VALUE));try{filename filename.Replace(\\, /);((XStorable)doc).storeToURL(file:/// filename, pv.ToArray());return true;}catch { return false; }}/// summary/// export pdf/// /summary/// param namefilenamefile path/param/// returns/returnspublic bool ExportToPdf(string filename){filename Path.ChangeExtension(filename, .pdf);bool ret Save(filename, writer_pdf_Export);if (!ret) ret Save(filename, impress_pdf_Export);if (!ret) ret Save(filename, calc_pdf_Export);if (!ret) ret Save(filename, draw_pdf_Export);if (!ret) ret Save(filename, impress_pdf_Export);if (!ret) ret Save(filename, math_pdf_Export);return ret;}/// summary/// close XComponent /// doc stream must be not use,otherwise dispose() has no return/// /summarypublic void Close(){doc.dispose();doc null;}/// summary/// new docx/// /summary/// param nameappsee crefAppType//param/// param namehiddenload document invisible Defines if the loaded component is made visible. If this property is not specified, the component is made visible by default./param/// returns/returnspublic bool New(AppType app, bool hidden){try{string sapp private:factory/;switch (app){case AppType.Writer:sapp swriter;break;case AppType.Calc:sapp scalc;break;case AppType.Impress:sapp simpress;break;case AppType.Draw:sapp sdraw;break;case AppType.Math:sapp smath;break;}PropertyValue pv new PropertyValue(Hidden, 0, new uno.Any(hidden), PropertyState.DIRECT_VALUE);doc component.loadComponentFromURL(sapp, _blank, 0, new PropertyValue[1] { pv });return true;}catch{doc null;return false;}}#endregion#region Properties/// summary/// internal filter name/// Name of a filter that should be used for loading or storing the component.Names must match the names of the TypeDetection configuration, invalid names are ignored.If a name is specified on loading, it still will be verified by a filter detection, but in case of doubt it will be preferred./// /summarypublic Liststring Filters{get { return filters; }}#endregionprivate PropertyValue ToPropertyValue(MiniPropertyValue miniProperty){return new PropertyValue(Name: miniProperty.Name,Handle: miniProperty.Handle,Value: new uno.Any(type: miniProperty.Value.Type,value: miniProperty.Value.Value),State: (PropertyState)miniProperty.State);}}
http://www.hkea.cn/news/14513771/

相关文章:

  • 网站建设项目可行性长春网站制作最专业
  • 建设学校网站需求分析松原网站建设公司
  • 电商商城网站合肥建设管理学校网站首页
  • 网站开发所要达到的目标广州西樵网站制作
  • 厦门市海沧区建设局网站佛山市建设官方网站
  • 建立网站赚钱吗网站开发环境是什么
  • 网站关键字如何设置能赚钱的网站怎么做
  • 怎样构建网站怎么做网站底部备案号
  • 甘肃网站开发公司小视频制作软件app
  • 网站有哪些区别专业做网站较好的公司
  • 免费部署网站建外贸网站的
  • 怎么在网站后台做图片新闻网络推广公司代理
  • 查询网站备案密码建湖做网站的
  • 北京旅游网站建设微信小程序网站建设定制
  • 公众号推广合作平台太原seo计费管理
  • 江苏省工程建设标准站网站湛江外包做网站
  • 综合门户网站什么意思郑州app开发制作
  • 宁波网站建设多少钱一个在线设计网站大全
  • 怎么做一个盈利网站网页版微信app
  • 网站icp备案申请做 从哪个网站上下载图片
  • 做有网被视频网站有哪些网站左侧分类导航菜单
  • 想在网上做设计接单有没有网站泉州网站开发公司
  • 将公司网站建设成wordpress 显示备案
  • 郑州网站科技农大南路网络营销推广优化
  • 河南工程建设信息网站手机网站模板更改
  • 江门网站seo关键词排名优化网上房地产查询
  • 手机网站建网wordpress模板缩略图代码
  • 网站手机端的优势备案个人网站
  • 外贸网站设计公司价格wordpress nginx配置伪静态
  • 能接做网站的活的网站网页定制哪家不错