iTextSharp - 将word doc / docx转换为pdf

时间:2009-10-08 10:55:34

标签: pdf ms-word itextsharp docx doc

我理解iTextSharp可用于将文档转换为pdf。

但首先我们必须使用iTextSharp.text.Document从头创建一个文档,然后在此文档中添加元素。

如果我有现有的doc文件,可以使用iTextSharp将此文档转换为pdf。

另外,我想使用iTextSharp或任何可以在doc文件上执行以下操作的类似工具:

  1. 操纵doc / docx /文本文件(比如用DB值替换一些占位符)以及
  2. 将它们转换为.pdf
  3. 任何有此想法的人,请分享。

    谢谢!

6 个答案:

答案 0 :(得分:14)

Aspose.Words组件可以可靠地执行此操作(我不附属或任何其他内容)。

iTextSharp没有加载和处理MS Word文件格式所需的功能集。

答案 1 :(得分:3)

Aspose.Words确实是一个很好的解决方案,但它并不能提供完美的保真度。在撰写本文时,它存在非罗马语言的问题,复杂的格式,如浮动元素和许多其他问题。

您可能希望查看可以在任何支持Web Services的环境(包括Java和.NET)中使用的PDF Conversion Web Service

请注意,我参与了此项目,因此通常的免责声明适用。

答案 2 :(得分:3)

您可以使用Microsoft.Office的现有方法

 private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;

    //Use for the parameter whose type are not known or say Missing
    object Unknown = Type.Missing;

  private void word2PDF(object Source, object Target)
    {   //Creating the instance of Word Application
      if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();

        try
        {
            MSdoc.Visible = false;
            MSdoc.Documents.Open(ref Source, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
             MSdoc.Application.Visible = false;
              MSdoc.WindowState =   Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;

            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;

            MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                   ref Unknown, ref Unknown);
          }
           catch (Exception e)
          {
            MessageBox.Show(e.Message);
           }
         finally
          {
            if (MSdoc != null)
            {
                MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
                //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
            }
            // for closing the application
            WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown);
        }
    } 

答案 3 :(得分:1)

如果您不关心格式是否忠实于Word将显示的内容,那么令人印象深刻的docx2tex会将Word 2007 docx文件转换为Latex文档。一旦进入Latex,您就有很大的能力来对程序进行重新格式化,并从中生成PDF。

我在tex.stackexchange的答案中详细说明了效用。

答案 4 :(得分:1)

我确实遇到了同样的问题。
在尝试寻找解决方案几天之后,似乎Docx4J,一个基于Java的工具,或像PDFCreator这样的PDF打印机,可能是在免费解决方案中 当然,只需一个商业工具就可以有效地完成所要求的任务 在Microsoft方面,您可以使用服务器端启用Sharepoint Word Automation Services,(2016年6月7日检查),或在本地计算机上互操作。
建议的零件到零件的转换(DOC或DOC到一些中间语言,然后到PDF)似乎,用户在stackoverflow或其他论坛上所说的,不可能,因为结果不是预期的。

答案 5 :(得分:0)

对于docx操作,您应该使用本机Open XML方法。从Microsoft下载Open XML SDK 2.

然后您可以使用此付费库将docx文件转换为pdf:http://www.subsystems.com/dpw.htm。真的很棒。