Jodconverter:我可以用来将HTML转换成PDF吗?

时间:2017-10-26 15:14:06

标签: java html pdf jodconverter

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

谢谢!

1 个答案:

答案 0 :(得分: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);从Java调用该脚本。至少这是我所知道的,并且这样做。

  3. 这是我多年前发现的脚本,在某些情况下仍然使用。剧本不是我的,所以我不能拿任何学分。您所需要做的就是创建一个扩展名为.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();
            }
        }
    }
    

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