【问题标题】:Type mismatch convert a .doc/docx into a PDF? [closed]类型不匹配将 .doc/docx 转换为 PDF? [关闭]
【发布时间】:2013-12-04 09:39:17
【问题描述】:

在 Web 应用程序中,我必须实现一种将 doc/docx 转换为 PDF 的方法。我就是这样做的:

FileInfo FILE = new FileInfo(path + filename);

object missing = System.Reflection.Missing.Value;
object readOnly = false;
object objfilename = (object)FILE;
//Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

try
{
    Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
   // var wordDocument = appWord.Documents.Open(FILE);
    var wordDocument = appWord.Documents.Open(ref objfilename,
                                              ref missing, ref readOnly, 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);
    wordDocument.ExportAsFixedFormat(@"C:\Users\ABCD\Desktop\New folder\DocTo.pdf", WdExportFormat.wdExportFormatPDF);

但是 Documents.Open 行上的代码中断并且它显示的错误是:

[System.Runtime.InteropServices.COMException] = {"类型不匹配。(来自 HRESULT 的异常:0x80020005 (DISP_E_TYPEMISMATCH))"}

【问题讨论】:

  • @MitchWheat:您能否分享一些关于我应该如何使用 iText 将内存流(word doc/docx)转换为 pdf 的代码。这将非常有帮助。
  • 另外我有一个现有的文档,我认为 iText 不会有帮助http://stackoverflow.com/questions/1537063/itextsharp-convert-word-doc-docx-to-pdf
  • convert doc to pdf in c# 的可能重复项

标签: c# asp.net pdf ms-word


【解决方案1】:

您可以使用 Microsoft.Office.Interop.Word.Application 将 word 文件转换为 odf。但是您必须在您的机器上安装 Microsoft Word。这就是我们如何将 doc 文件转换为 pdf 的方法。我不知道您是否可以将流转换为pdf。这将是更好的方法。或者另一种解决方案是,当用户从 doc 文件请求 pdf 时,您只需从 DB 流创建一个 doc 文件并在此处使用该创建的 doc 文件。

Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
        wordDocument = appWord.Documents.Open(@"D:\desktop\filename.docx");
        wordDocument.ExportAsFixedFormat(@"D:\desktop\DocTo.pdf", WdExportFormat.wdExportFormatPDF);

【讨论】:

  • :在第 2 行我收到此错误:[System.Runtime.InteropServices.COMException] = {"类型不匹配。(来自 HRESULT 的异常:0x80020005 (DISP_E_TYPEMISMATCH))"}
  • 首先添加名为 Microsoft Word Objects LIbrary 的 COM 引用。然后添加 Microsoft.Office.Interop.Word;命名空间。然后只需在 wordDocument 之前添加类型“文档”。像 Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();文档 wordDocument = appWord.Documents.Open(@"D:\desktop\filename.docx"); wordDocument.ExportAsFixedFormat(@"D:\desktop\DocTo.pdf", WdExportFormat.wdExportFormatPDF);
【解决方案2】:

其实很简单。

 Byte[] buffer =  mystream.ToArray();

        if (buffer != null)
        {
            Response.ContentType = "application/pdf"; 
            Response.AddHeader("content-length",buffer.Length.ToString()); 
            Response.BinaryWrite(buffer); 
        }

希望这会对你有所帮助。

【讨论】:

  • 我投了反对票,因为这根本行不通。更改内容类型标题不会从 doc 或 docx 格式转换为 PDF 格式。
  • 这不是将 doc 或 docx 转换为 PDF。我在这里告诉过,如何在 Web 浏览器中以 PDF 格式打开内存流数据。正如他所说,他已将他的文档保存在内存流中。
  • 引用原始问题:“我用谷歌搜索,但找不到可以帮助我将 doc 或 docx(保存为内存流)转换为 PDF 的资源。” 您的answer 根本没有回答这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2017-07-24
相关资源
最近更新 更多