Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 您是否有任何免费的.Net托管代码用于将DocX转换为PDF?_Asp.net_Pdf_Docx - Fatal编程技术网

Asp.net 您是否有任何免费的.Net托管代码用于将DocX转换为PDF?

Asp.net 您是否有任何免费的.Net托管代码用于将DocX转换为PDF?,asp.net,pdf,docx,Asp.net,Pdf,Docx,在我的web项目中,我使用DocX文件类型来包含报表模板。我需要将DocX文件类型转换为PDF。您是否有任何.Net托管代码来执行此操作 我知道解决这个问题的几种方法。但它不是托管代码,也不像下面的项目那样是免费的 以编程方式将Word 2007文档另存为PDF文档或XPS文档。但它需要在服务器上安装Office2007 打印使用一些免费的PDF打印机,如。但是我需要一些在服务器上像Office2007这样的OpenDocX程序。这是个坏主意 通过自由转换程序进行转换。但结果并不完美 像这样使

在我的web项目中,我使用DocX文件类型来包含报表模板。我需要将DocX文件类型转换为PDF。您是否有任何.Net托管代码来执行此操作

我知道解决这个问题的几种方法。但它不是托管代码,也不像下面的项目那样是免费的

  • 以编程方式将Word 2007文档另存为PDF文档或XPS文档。但它需要在服务器上安装Office2007

  • 打印使用一些免费的PDF打印机,如。但是我需要一些在服务器上像Office2007这样的OpenDocX程序。这是个坏主意

  • 通过自由转换程序进行转换。但结果并不完美

  • 像这样使用框架。这是个好主意,但不是免费的

  • 在PDF Api中创建所有文档内容,如。但我必须努力创建好的文档

  • 或者使用其他文件格式创建模板文档,以将其导出为DocX和PDF文件格式。此外,最终用户应轻松编辑此文件。如果你知道,请告诉我


谢谢,Open Office有API吗?那至少是一个自由选择


使用诸如ActiveReports/Crystal Reports之类的报告工具创建PDF(比使用iTextSharp简单得多)

安装Office 2007和使用Word 12对象库绝对是我的选择(在我自己的一些项目中也是这样做的)

如果您不想在生产web服务器上安装Word,为什么不将其安装在辅助服务器上呢。您可以让第二个服务器与第一个服务器通信(使用web服务或类似的东西)——它可以请求下一个需要导出的Word文档,进行转换,然后返回PDF数据

如果你想要一个自动化这个词的C#示例来进行这种转换(非常简单),请告诉我

阿德里安


这是我的密码,贴给杰森。这适用于Word 2007。您需要从Office网站下载并安装PDF导出器:

using Microsoft.Office.Interop.Word;

...

object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object  _missing = System.Reflection.Missing.Value;

object _htmlFormat = 8;        
object _pdfFormat = 17;
object _xpsFormat = 18;

object fileName = "C:\\Test.docx";

ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();

Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);

object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";

d.SaveAs(ref newFileName, ref _pdfFormat, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing);

d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);

ac = null;

所以,灵魂大师,你是说你不想使用互操作(虽然你没有说为什么,我很想知道),你不想为商业出口商买单,你想要完美的结果


恐怕我帮不了你。互操作将给你完美的结果,每次,你已经有了软件。如果您不使用它,您将不得不做出牺牲——无论是成本还是质量。

我没有将DocX转换为PDF的代码,但您对DocX的要求似乎并不明确。你的最后一颗子弹说:

或使用其他工具创建模板文档 可以将其导出到DocX的文件格式 和PDF文件格式。此外 最终用户应轻松编辑此文档 文件如果你知道,请告诉我

我理解这意味着您希望能够创建一个模板文档,用数据填充它并将其转换为PDF,同时允许维护模板,对吗

解决方案:XSL-FO

XSL-FO是一种类似HTML的W3C标准,可以由许多开源和商业产品转换为PDF、WordML、XPS、PS、PCL、SVG、TIFF等。我使用它每月交付数十万个文档,包括在线PDF和离线(如批量支票打印)

为了让你开始,这里是你的答案。这里有很多很好的信息,包括左边的软件列表(开源软件和商业软件)。我个人使用过两种叫做和的商业产品。两者都是优秀的产品,而且有一个100%托管的C实现,可以在CodePlex上调用PDF。我没有试过这个,但它应该满足你的“自由”标准


有多种方法可以编辑要在XSL-FO中创建的文档的模板。通常,此模板是应用于XML数据的XSLT,但这不是必需的。我已经手工制作了这些,但这是一个学习曲线。您可以从XSL-FO中的文档开始,并用代码填充文档的各个部分,就像HTML一样。好消息是,在那里。坏消息是,据我所知,没有一个是免费的,但其中有几个是便宜的,你可以通过谷歌搜索找到符合免费标准的东西。但是,一个选项是,您可以使用样式表(&)从Word转换过来。

您可以尝试使用OpenOffice.org


我已经用名为free Spire.Doc的免费组件解决了从docX到pdf的转换问题。你可以在电视上看到更多。使用起来很简单。

我想这不是重复的。OP要求的是一个免费的托管.net代码来进行转换?如果你想要一个“完美”的结果,你必须使用Word,因为这是渲染.docx的参考。虽然在我看来XSL-FO解决方案更适合您的需求。是的。我可以通过openofficeapi生成DocX文档。但如果没有商业工具或MicrosoftOfficeInterop,我无法将其直接转换为PDF。正如我所知,ActiveReport或Crystal Report不支持动态报告,比如从DocX文档导入报告模板。另外,我需要使用DocX,因为最终用户很容易编辑它。我的意思是,你能导入DocX并在openoffice中导出吗?示例代码很好看到。我必须同意Joel Spolsky的建议,使用Office转换为Office。(一如既往地轻率)这不是我的观点。我不在乎该组件安装在哪个服务器上。我需要的第一件事是将DocX转换为PDF的有效组件。Word 2007 Interop不是我的最终答案。此外,我在问题中刚刚提到了这个答案。XSL-FO支持文档中嵌入的图像吗?绝对支持。可以使用外部图形元素嵌入位图。它们通常在HTML文档中由URL引用。大多数(如果不是全部的话)XSL-FO渲染器也支持可伸缩矢量图形usi