Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 将docx从ASP.NET MVC应用程序转换为pdf_C#_Asp.net Mvc_Office Interop_Asp.net 4.5_Word Interop - Fatal编程技术网

C# 将docx从ASP.NET MVC应用程序转换为pdf

C# 将docx从ASP.NET MVC应用程序转换为pdf,c#,asp.net-mvc,office-interop,asp.net-4.5,word-interop,C#,Asp.net Mvc,Office Interop,Asp.net 4.5,Word Interop,我正在尝试将docx从ASP.NET MVC应用程序转换为pdf文件。直到现在,我一直在使用Microsoft interop saveas命令,但它有时(并非总是)会失败,并出现错误“command failed”。我已经看到它已经被弃用,不再受微软的支持,微软表示不建议再从ASP.NET应用程序中使用它,所以我正在尝试寻找替代方案 我看到有一个很好的,就是aspose.words,但它不是免费的。我对免费的感兴趣。那么,现在有没有任何免费的替代品,可以与Microsoft docx文档兼容,

我正在尝试将docx从ASP.NET MVC应用程序转换为pdf文件。直到现在,我一直在使用Microsoft interop saveas命令,但它有时(并非总是)会失败,并出现错误“command failed”。我已经看到它已经被弃用,不再受微软的支持,微软表示不建议再从ASP.NET应用程序中使用它,所以我正在尝试寻找替代方案

我看到有一个很好的,就是aspose.words,但它不是免费的。我对免费的感兴趣。那么,现在有没有任何免费的替代品,可以与Microsoft docx文档兼容,并且可以毫无问题地转换为pdf格式

我对免费的感兴趣

没有。Office/Word的
.docx
文件格式极其冗长和复杂(见下文),因此编写一个能够单独完全解析Word文档的程序是一项艰巨的任务,这项任务与生成可视化格式模型表示同样重要,然后通过生成PostScript/PDF命令将该可视模型转换为PDF文件

这就是OOXML规范打印出来时的样子:

(来源:)

然后考虑Word格式化模型中所有的特征和边缘情况:表、标题、下划线、标题(不要忘记使用OLE!嵌入和外部内容)、浮动文本框、WordART等等。 Word文档的XML表示形式的非可视化处理实际上很简单,可以使用任何XML库来完成——不过您应该使用OOXML模式感知库,以便正确处理Word文档(这样您就不会在页眉中插入段落或填充页面的标题)


其他一切都是问题的难点(而且代价高昂)。这就是为什么即使在Word首次发布近40年和OOXML格式规范发布15年后的今天,像OpenOffice(nee StarOffice)和Apple iWork这样的第三方软件仍然无法完全正确地导入或呈现Word文档。

这不是Visual Studio应用程序的问题,因此,我删除了
[visual-studio-2013]
标记。如果您仅限于.NET Framework的特定版本,请标记该版本(因为这与代码相关,而VS版本则不相关)。您真正的问题是
PDF
而不是
docx
docx
是一个ZIP包,包含定义良好格式的XML文件。真正的问题是PDF,因为它本质上是打印命令(PostScript)的容器,而不是文档格式。即使您想将HTML转换为PDF,您也会遇到trouble@PanagiotisKanavos如今,HTML到PDF需要使用Puppeter在无头模式下启动整个Chrome实例,幸运的是,一旦你到达该部分,@Dai或使用Java中的服务进行类似iText的转换,“打印”到PDF就很简单了。。。这就是AGPL-oops
pandoc
过程。启动企业应用程序无法很好扩展的
。盈利性应用程序首先应该支付500美元的许可费。。。。。。我想付费替代方案不能保证完全兼容转换成pdf,对吗?@Ralph你说的“完全兼容”是什么意思?昂贵的部分是pdf,而不是docx
。没有好的免费PDF库
docx
比PDF简单得多,PDF本质上是一种打印语言
docx
是一个包含定义良好的XML文件的ZIP文件。另一方面,PDF甚至没有表格。如果需要,可以使用OpenXMLSDK读取
docx
文件。人们对生成
docx
文件不太感兴趣,但这就是为什么没有或很少有库可以简化这一过程,就像EPPlus、ClosedXML或NPOI为
xlsx
所做的那样。它遵循相同的格式,我的意思是可能docx文档包含某些第三方无法面对的对象类型,然后文档无法成功转换为pdf文件。@拉尔夫,这是另一种方式。您可以使用OpenXMLSDK阅读
docx
。文字处理不是Excel表格,而是包含很多不同的对象类型,如段落、段落、字符、样式等。问题是PDF。您可以在一定程度上使用
iTextSharp
,但PDF本质上是一种打印语言(PostScript),而不是文档格式。它没有桌子。您是否尝试过在PDF查看器中选择表行?注意到选择是如何沿着列而不是行进行的吗?或者如何选择文本可以选择不相关的段落?也没有段落