18

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

但首先我们必须使用 iTextSharp.text.Document 从头开始​​创建一个文档,然后向该文档添加元素。

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

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

  1. 操作 doc/docx/text 文件(例如用 DB 值替换一些占位符)以及
  2. 将它们转换为 .pdf

任何对此有想法的人,请分享。

谢谢!

4

6 回答 6

13

Aspose.Words组件可以可靠地做到这一点(我不隶属于任何人)。

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

于 2009-10-08T11:17:14.063 回答
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);
        }
    } 
于 2013-06-03T04:13:02.290 回答
2

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

您可能想看看这个PDF 转换 Web 服务,它可以在任何支持 Web 服务的环境中使用,包括 Java 和 .NET。

请注意,我从事这个项目,所以通常的免责声明适用。

于 2010-07-22T14:09:38.207 回答
1

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

我在tex.stackexchange的回答中详细介绍了该实用程序。  

于 2010-02-27T10:05:13.190 回答
1

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

于 2016-06-07T08:21:57.187 回答
0

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

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

于 2009-10-08T10:59:51.833 回答