0

我有一个word文件。我可以使用 jodconverter 转换为 pdf。我已经使用了从 doc 到 pdf 的 jodconverter,它给出了非常好的结果。但我不知道它支持从 HTML 到 pdf 的天气。

谢谢!

4

1 回答 1

0

根据我对 Jodconverter 的了解,我了解到它使用 LibreOffice 或 OpenOffice 将 doc 文件导出为 PDF。现在该软件无法完全支持 Microsoft Office。只有 Microsoft Office 可以完全支持它们的格式,因此使用上述软件之一来转换您的 docx 文件可能是可能的,但在某些情况下(或在所有情况下)会产生不愉快的结果。据我所知,您有两种选择:

  1. 您可以将所有 docx 文档转换为 LibreOffice,然后使用 LibreOffice 软件(或您的外部 java 库)将它们导出为 PDF 而不会出现兼容性问题

  2. 您可以使用 Microsoft Office Word 进行从 docx 到 pdf 的转换。为了实现这一点,您将需要一个脚本告诉 MS Word 进行转换并使用Runtime.getRuntime().exec(command);. 至少这是我所知道的方式,并且正在这样做。

这是我多年前发现的脚本,在某些情况下仍在使用。剧本不是我的,所以我不能接受任何学分。您需要做的就是创建一个扩展名为 .vbs 的新文件并添加以下代码。

Option Explicit
Doc2PDF Wscript.Arguments.Item(0)
Sub Doc2PDF( myFile )
    Dim objDoc, objFile, objFSO, objWord, strFile, strPDF
   Const wdFormatDocument                    =  0
   Const wdFormatDocument97                  =  0
   Const wdFormatDocumentDefault             = 16
   Const wdFormatDOSText                     =  4
   Const wdFormatDOSTextLineBreaks           =  5
   Const wdFormatEncodedText                 =  7
   Const wdFormatFilteredHTML                = 10
   Const wdFormatFlatXML                     = 19
   Const wdFormatFlatXMLMacroEnabled         = 20
   Const wdFormatFlatXMLTemplate             = 21
   Const wdFormatFlatXMLTemplateMacroEnabled = 22
   Const wdFormatHTML                        =  8
   Const wdFormatPDF                         = 17
   Const wdFormatRTF                         =  6
   Const wdFormatTemplate                    =  1
   Const wdFormatTemplate97                  =  1
   Const wdFormatText                        =  2
   Const wdFormatTextLineBreaks              =  3
   Const wdFormatUnicodeText                 =  7
   Const wdFormatWebArchive                  =  9
   Const wdFormatXML                         = 11
   Const wdFormatXMLDocument                 = 12
   Const wdFormatXMLDocumentMacroEnabled     = 13
   Const wdFormatXMLTemplate                 = 14
   Const wdFormatXMLTemplateMacroEnabled     = 15
   Const wdFormatXPS                         = 18
   Const wdFormatOfficeDocumentTemplate      = 23
   Const wdFormatMediaWiki                   = 24 
   Set objFSO = CreateObject( "Scripting.FileSystemObject" )
   Set objWord = CreateObject( "Word.Application" )
   With objWord
       .Visible = false
       If objFSO.FileExists( myFile ) Then
           Set objFile = objFSO.GetFile( myFile )
           strFile = objFile.Path
       Else
           WScript.Echo "FILE OPEN ERROR: The file does not exist" & vbCrLf
           .Quit
           Exit Sub
       End If
       strPDF = objFSO.BuildPath( objFile.ParentFolder, _
                objFSO.GetBaseName( objFile ) & ".pdf" )
       .Documents.Open strFile
       Set objDoc = .ActiveDocument
     objDoc.SaveAs strPDF, wdFormatPDF
      objDoc.Close
       .Quit
   End With
End Sub

这是一个小示例,您可以使用该方法将 docx 文件导出为 PDF:

private void convertFile(String text) {
    File f = new File(text);

    if (f.exists() && f.getName().endsWith(".docx")) {
        // The full path of your script, in my case is the Desktop.
        String converterLocation = System.getProperty("user.home") + "\\Desktop\\wordToPdf.vbs";

        // wscript <converterLocation> <"fullFilePath">
        String command = "wscript " + converterLocation + " \"" + f.getAbsolutePath();

        try {
            Process p = Runtime.getRuntime().exec(command);
            p.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我知道这个答案不是您所期望的,但我只想指出我知道的您的问题的解决方案。

于 2017-10-26T16:51:26.880 回答