如何在不使用SaveAs()或Save方法的情况下将word文件(.docx& doc)转换为c#中的.pdf?或者没有在服务器上上传?
答案 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");
}
}
}
答案 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;
}
}
}
}