使用c#将word文件(.docx& doc)转换为.pdf

时间:2016-07-18 07:29:23

标签: c#

如何在不使用SaveAs()或Save方法的情况下将word文件(.docx& doc)转换为c#中的.pdf?或者没有在服务器上上传?

4 个答案:

答案 0 :(得分:2)

试试这个,它对我有用:

using Microsoft.Office.Interop.Word;

var appWord = new Application();
if (appWord.Documents != null)
{
    //yourDoc is your word document
    var wordDocument = appWord.Documents.Open(yourDoc);
    string pdfDocName = "pdfDocument.pdf";
    if (wordDocument != null)
    {                                         
       wordDocument.ExportAsFixedFormat(pdfDocName,   
       WdExportFormat.wdExportFormatPDF);
       wordDocument.Close();
    }
       appWord.Quit();
}

答案 1 :(得分:0)

尝试此操作,如果您的计算机上安装了MS Office Word,则无需额外的编译器配置:

using System;
using System.IO;
using System.Reflection;

namespace KUtil
{
    public class Word2PDF
    {
        static void Main(string[] args)
        {
            var word = Type.GetTypeFromProgID("word.application");
            dynamic app = Activator.CreateInstance(word);
            if (args.Length < 1)
            {
                return;
            }
            var path = args[0];
            var outPath = Path.ChangeExtension(path, "pdf");
            dynamic doc = app.Documents.Open(path);
            doc.ExportAsFixedFormat(outPath,
                    ExportFormat:17/*pdf*/);
            doc.Close(0/*DoNotSaveChanges*/);
            app.Quit();
        }
    }
}

答案 2 :(得分:0)

如果您可以购买许可证,Aspose.Words确实是一个很好的解决方案。免费版将警告消息添加到输出的PDF中。

如果您正在寻找免费的东西,我已经使用了FreeSpire.Doc,该免费版本具有以下限制:

免费版本限于500个段落和25个表格。在读取或写入文件期间会强制执行此限制。将Word文档转换为PDF和XPS文件时,只能获得PDF文件的前3页。升级到Spire.Doc商业版

不需要MS Office,Office.Interop或Office自动化。

通过NuGet安装:

Install-Package FreeSpire.Doc -Version 7.11.0

代码示例:

using System;
using Spire.Doc;
using Spire.Doc.Documents;

namespace DoctoPDF
{
    class toPDF
    {
        static void Main(string[] args)
        {
            //Load Document
            Document document = new Document();
            document.LoadFromFile(@"E:\work\documents\TestSample.docx");

            //Convert Word to PDF
            document.SaveToFile("toPDF.PDF", FileFormat.PDF);

            //Launch Document
            System.Diagnostics.Process.Start("toPDF.PDF");
        }
    }
}

NuGet Package page here

答案 3 :(得分:0)

您可以使用此代码使用 aspose 将 ms-word 文档转换为 pdf

    
public class Program
    {
        public static void Main(string[] args)
        {
            var content = File.ReadAllBytes("response.doc");
            var document = new Document(new MemoryStream(content));

            ClearFormat(document);

            var options = SaveOptions.CreateSaveOptions(SaveFormat.Pdf);

            options.PrettyFormat = true;
            options.UseAntiAliasing = true;
            options.UseHighQualityRendering = true;

            document.Save("response.pdf", options);
        }

        private static void ClearFormat(Document doc)
        {
            for (var i = 0; i < doc.Sections.Count; i++)
            {
                var nodes = doc.Sections[i].GetChildNodes(NodeType.Run, true);
                if (nodes == null || nodes.Count <= 0) continue;
                foreach (var item in (from Run item in nodes
                                      where item.Font.Name.ToLower().Contains("nastaliq")
                                      select item).ToList())
                {
                    item.Font.Name = "Times New Roman";
                    item.Font.Size = item.Font.Size > 12 ? 12 : item.Font.Size;
                }
            }
        }
    }