iTextSharp-将word文档/docx转换为pdf

iTextSharp-将word文档/docx转换为pdf,pdf,ms-word,itextsharp,docx,doc,Pdf,Ms Word,Itextsharp,Docx,Doc,我知道iTextSharp可用于将文档转换为pdf 但首先我们必须使用iTextSharp.text.document从头开始创建一个文档,然后向该文档添加元素 如果我有一个现有的文档文件,是否可以使用iTextSharp将此文档转换为pdf 此外,我想使用iTextSharp或任何类似的工具,可以对文档文件执行以下操作: 操作doc/docx/text文件(如用DB值替换某些占位符)以及 将其转换为.pdf 任何人对此有想法,请分享 谢谢大家! 对于docx操作,应该使用本机openxml方法

我知道iTextSharp可用于将文档转换为pdf

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

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

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

  • 操作doc/docx/text文件(如用DB值替换某些占位符)以及
  • 将其转换为.pdf
  • 任何人对此有想法,请分享


    谢谢大家!

    对于docx操作,应该使用本机openxml方法。从Microsoft下载OpenXMLSDK2

    然后,您可以使用此付费库将docx文件转换为pdf:。真的很棒

    组件可以可靠地完成这项工作(我没有任何附属关系)


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

    如果您不关心格式是否与Word将显示的内容相符,则有一种令人印象深刻的功能,它可以将Word 2007 docx文件转换为Latex文档。一旦使用Latex,您就可以通过编程重新格式化文档,并从中生成PDF


    我在一次会议上的回答中更多地谈到了实用性。Aspose.Words确实是一个很好的解决方案,但它不能提供完美的保真度。在编写时,它遇到了非罗马语言、复杂格式(如浮动元素)和许多其他问题

    您可能想了解一下这一点,它可以在任何支持Web服务的环境(包括Java和.NET)中使用


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

    您可以使用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);
            }
        } 
    

    我也有同样的问题。
    经过几天的努力寻找解决方案后,似乎基于Java的工具或类似PDF打印机的工具可以成为免费解决方案。
    当然,仅仅一个商业工具就可以有效地完成所要求的任务。
    在Microsoft方面,您可以在本地计算机上使用服务器端启用(2016年6月7日检查)或互操作。

    建议的部分到部分转换(文档或文档到某种中间语言,然后再到PDF)似乎不可能,用户在stackoverflow或其他论坛上所说的,因为结果不是预期的。

    谢谢大家的帮助。对于我当前的场景,我将使用Aspose库进行doc/docx操作,然后在邮件合并后最终将结果文档转换为pdf。我已经下载了免费的30天试用版,它似乎解决了我所有的问题。我建议任何人先使用Aspose进行试用版,然后再做出决定。Aspose在大多数情况下都能很好地进行OpenXml到PDF的转换,但请注意,它目前对某些OpenXml功能的支持很差或根本不存在,例如内容控件和AltChunk节点。最近的替代方案是my/Plutext的商业docx到PDF转换器;在Aspose上试用对启动项目来说成本太高了。PDF转换Web服务只是调用Microsoft Word将文档转换为PDF。这就是Word自动化,任何人都可以做到。它实际上做得更多,但知道你是谁你和我一样有偏见:-)在Aspose上做得很好。Word,很棒的产品,我一直推荐它。你的转换服务的价格是每台服务器1500美元@iniki最好以相同或更低的价格使用DynamicPDF Converter或Aspose,并且它都在托管代码中运行,不需要安装Word或管理web服务。不过,就你的观点而言,没有任何东西能提供interop word automation所能提供的转换保真度。非拉丁语或非罗马语,请看(你让我怀疑自己时不得不查找:-)这并不伟大。“试过之后,它会改变所有地方的字体并删除页面格式。这不太好,”富兰克林说。我同意。但是,一旦您完成了学习曲线,您就可以控制格式、字体等。虽然学习曲线很糟糕,但请注意,在服务器环境中工作时,不建议这样做。看,它看起来不错,因为它是ms office jar,但我不知道如何在我的程序中使用它。我无法获得microsoft office jar。你可以帮我一个忙吗?你必须使用像Jacob这样的COM互操作性库,才能直接从Java代码中处理那些MS Office对象(至少JDK 1.5是这样),即使这样,代码看起来还是有点难看。从“REF”和互操作库判断,上面的代码是用C语言编写的,以最大限度的灵活性,您可能会考虑单独的“最佳品种”的解决方案,用于每个操作和转换步骤。这就是标准文件格式(doc、docx)的美妙之处。