Конвертировать Doc файл в PDF в VB.Net - PullRequest
1 голос
/ 19 марта 2012

У меня есть ситуация, когда мне нужно конвертировать файл Doc в файл PDF.Я занимаюсь разработкой приложений для Windows в vb.net.а также я не хочу использовать сторонние DLL, если это возможно.так может кто-нибудь дать мне еще идею?

Ответы [ 4 ]

3 голосов
/ 19 марта 2012

Вы можете использовать Office Interop для этого. Но лучше использовать некоторую управляемую библиотеку, такую ​​как 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;
2 голосов
/ 03 февраля 2014
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)
1 голос
/ 19 марта 2012

Надстройка 2007 Microsoft Office : Microsoft Save as PDF и Надстройка Microsoft Office : Microsoft Save as XPS позволяет Microsoft Office Word 2007 экспортировать и сохранять документыв форматах PDF и XPS.

Проверьте это:
Сохранение документов Word 2007 в форматах PDF и XPS
Как преобразовать Word в PDF в asp.net

Если вы хотите использовать Thirt party dll, проверьте эту ветку SO: Преобразование документов MS Word в PDF в ASP.NET

0 голосов
/ 15 июня 2019

Вы можете получить представление в моем коде, я генерирую файл из файла шаблона Word, сохраняю файл в формате PDF, используя Office.Interop. Не забудьте добавить ссылку на офис. 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()
...