我有一种情况需要将 Doc 文件转换为 PDF 文件。我正在 vb.net 中开发 Windows 应用程序。如果可能的话,我也不想使用第三方 dll。那么谁能给我更多的想法?
问问题
22748 次
4 回答
2
为此,您可以使用 Office 互操作。但最好使用一些托管库,如 Aspose
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
...
// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;
// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\\server\folder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");
word.Visible = false;
word.ScreenUpdating = false;
foreach (FileInfo wordFile in wordFiles)
{
// Cast as Object for word Open method
Object filename = (Object)wordFile.FullName;
// Use the dummy value as a placeholder for optional arguments
Document doc = word.Documents.Open(ref filename, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
doc.Activate();
object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
object fileFormat = WdSaveFormat.wdFormatPDF;
// Save document into PDF Format
doc.SaveAs(ref outputFileName,
ref fileFormat, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
// Close the Word document, but leave the Word application open.
// doc has to be cast to type _Document so that it will find the
// correct Close method.
object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
doc = null;
}
// word has to be cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;
于 2012-03-19T13:27:32.700 回答
1
2007 Microsoft Office 插件:Microsoft 另存为 PDF 和2007 Microsoft Office 插件:Microsoft 另存为 XPS 允许 Microsoft Office Word 2007 以 PDF 和 XPS 格式导出和保存文档。
检查这些:
将 Word 2007 文档保存为 PDF 和 XPS 格式
如何在 asp.net 中将 Word 转换为 PDF
如果你想使用第三方 dll,那么检查这个 SO 线程: Converting MS Word Documents to PDF in ASP.NET
于 2012-03-19T13:24:44.173 回答
1
Imports Microsoft.Office.Interop
'This code happens to be loading a template, but it isn't necessary...
'Opens Word Application
Dim MyApp As New Word.Application
'Opens new WordDoc
Dim MyWordDoc As Word.Document = MyApp.Documents.Add(template)
MyApp.Visible = True
MyWordDoc = MyApp.ActiveDocument
'code to fill doc
'code to fill doc
'code to fill doc
MyWordDoc.SaveAs(FileLocation, Word.WdSaveFormat.wdFormatPDF)
于 2014-02-03T19:46:58.117 回答
0
您可以在我的代码中得到想法,我使用 Office.Interop 从 word 模板文件另存为 pdf 生成文件。不要忘记添加参考 office.Interop.Word
sFileName = "billing"
wdApp = New Word.Application
wdDocs = wdApp.Documents
Dim wdDoc As Word.Document = wdDocs.Add(sPath & "template.dotx")
Dim wdBooks As Word.Bookmarks = wdDoc.Bookmarks
Dim wdTable As Word.Table
Dim r As Integer, c As Integer
wdTable = wdDoc.Tables.Add(wdDoc.Bookmarks.Item("bkTable").Range, 3, 6)
Dim rowCOunt As Integer = dgvSample.Rows.Count, colCount As Integer = dgvSample.Columns.Count
'DATAGRIDVIEW TO WORDTABLE
For r = 1 To rowCOunt
For c = 1 To colCount
wdTable.Cell(r, c).Range.Text = dgvSample.Rows(r - 1).Cells(c - 1).Value
Next
Next
wdTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
wdTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle
wdBooks("bkClient_name").Range.Text = txtClient.Text.ToString
wdBooks("bkDate").Range.Text = dtpDate.Text.ToString
wdDoc.SaveAs2(sPath & sFileName & ".pdf", Word.WdSaveFormat.wdFormatPDF)
ReleaseObject(wdBooks)
wdDoc.Close(False)
ReleaseObject(wdDoc)
ReleaseObject(wdDocs)
wdApp.Quit()
于 2019-06-15T02:19:29.520 回答