2011-03-30 14 views

答えて

3

私は以下の.vbsスクリプトを使用しています。あなたはDelphiのコードでそれを必要とする場合、変換するのは簡単だろう:

Const wdDoNotSaveChanges = 0 
Const wdRevisionsViewFinal = 0 
Const wdFormatPDF = 17 

Dim arguments 
Set arguments = WScript.Arguments 

Function DOC2PDF(sDocFile) 

    Dim fso ' As FileSystemObject 
    Dim wdo ' As Word.Application 
    Dim wdoc ' As Word.Document 
    Dim wdocs ' As Word.Documents 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    sDocFile = fso.GetAbsolutePathName(sDocFile) 
    sPdfFile = fso.GetParentFolderName(sDocFile) + "\" + fso.GetBaseName(sDocFile) + ".pdf" 

    Set wdo = CreateObject("Word.Application") 
    Set wdocs = wdo.Documents 
    WScript.Echo "Opening: " + sDocFile 
    Set wdoc = wdocs.Open(sDocFile) 
    if fso.FileExists(sPdfFile) Then 
    fso.DeleteFile sPdfFile, True 
    End If 
    WScript.Echo "Converting to PDF: " + sPdfFile 
    Set wview = wdoc.ActiveWindow.View 
    wview.ShowRevisionsAndComments = False 
    wview.RevisionsView = wdRevisionsViewFinal 
    wdoc.SaveAs sPdfFile, wdFormatPDF 
    WScript.Echo "Conversion completed" 
    wdo.Quit wdDoNotSaveChanges 

    Set fso = Nothing 
    Set wdo = Nothing 

End Function 

If arguments.Count=1 Then 
    Call DOC2PDF(arguments.Unnamed.Item(0)) 
Else 
    WScript.Echo "Generates a PDF file from a Word document using Word PDF export." 
    WScript.Echo "" 
    WScript.Echo "Usage: doc2pdf.vbs <doc-file>" 
    WScript.Echo "" 
End If 
+0

私は多くの助けになった 'wdDoNotSaveChanges'を含んでいるので、これを答えとして選択します!私は1日失ったし、再びこの質問を読んだ!その言葉を使わずに節約を求めると非常に迷惑です。 – LaBracca

8

私がこれまで持っていないが、それは難しいことではありません。

を使用して Documents.Open
  • エクスポートPDFへのドキュメントを使用して文書を使用して

    はここで基本骨格です:

    uses 
        ComObj; 
    const 
        wdExportFormatPDF = 17; 
    var 
        Word, Doc: OleVariant; 
    begin 
        Word := CreateOLEObject('Word.Application'); 
        Doc := Word.Documents.Open('C:\Document.docx'); 
        Doc.ExportAsFixedFormat('C:\Document.pdf', wdExportFormatPDF); 
    end; 
    

    注バージョンindepentとなるように、私は、OLEVariantといったようWordDoc変数の両方を宣言しました(すなわち、このコードは、Word 2007または2010を使用している場合でも機能します)。必要に応じて、VCL Officeコンポーネントライブラリを使用することもできます。ドキュメント自体で多くの処理を行うなら、間違いなく速くなるでしょう。

  • +1

    これは機能します(OleAutoは廃止されているので、私はComObjに置き換えました)。 VCLのOfficeコンポーネントライブラリの場所を教えてください:Delphi 7パレットで見たことがあるのを覚えていますが、2009年には表示されません。 – LaBracca

    +0

    @ user193655:私はそれが別のオプションであることを覚えているようです。インストーラが、私は確信することはできません。私はD2010のセットアップでそれらを手に入れていませんでした(しかし、私はほとんどの場合、いつもバリアントを使用していますので、柔軟性が増します - 私はVBAのオブジェクトブラウザを使ってオブジェクトや使用方法を見つけ出します) – Martijn

    関連する問題