将word文件转换成PDF的两种方法

由于工作需要,使用了两种方式实现了word文件转PDF的功能。以下的程序是我使用VB6编写,供大家参考。

第一种方法,使用PDFMAKERAPILib,使用这种方法,可以设置文件的安全性。这种方式是ADOBE不推荐的方式,因为Adobe从来没有公布过PDFMAKERAPILib的API,不建议大家使用,但是经过测试,Acrobat pro 8和acrobat pro 7上都能正常执行。

'------------------------------------------------------------------------------------------
'【功能】将Word文件转换成PDF文件
'------------------------------------------------------------------------------------------
Public Function convertDocToPdf(ByVal docFileName As String, ByVal pdfFileName As String)
    Dim pdfMarker As PDFMAKERAPILib.PDFMakerApp
   
    Set pdfMarker = New PDFMAKERAPILib.PDFMakerApp
   
    pdfMarker.CreatePDF srcFilePath:=docFileName, pdfFilePath:=pdfFileName, bShowProgress:=False, _
                        psettings:=createConversionSettings(), bConvertsilent:=True
   
    Set pdfMarker = Nothing
   
End Function


Private Function createConversionSettings() As Object
   
    Dim settings As ConversionSettings
   
    Set settings = New ConversionSettings
   
    Dim security As SecuritySettings
    Set security = New SecuritySettings
   
    security.AllowedChanges = kAllowChangesNone
   
    security.AttachmentPasswd = "123456"
    security.AttachmentPasswdNeeded = True
   
    security.EnableCopyingContent = False
   
    security.PermsPasswdNeeded = True
    security.PermsPasswd = "123456"
   
    security.EncryptAttachmentsOnly = True
    security.EnablePlaintextMetadata = False
    security.EnableTextAccessibility = False
   
    security.AllowedPermissionsBits = kAllowedPermNone
   
    security.PrintingModeAllowed = kPrintingAllowedHighRes
   
    Call settings.SetSecuritySettings(security)
   
    Set createConversionSettings = settings
End Function

 

第二种方法,使用Word的打印功能,把文件转换成ps文件。再使用PdfDistiller Api把ps文件,转换成PDF。这是最常用的方法,程序的兼容性会比较强一些,但是不能设置pdf文件的安全性。

Private Function convertDocToPdf_bak(ByVal docFileName As String, ByVal pdfFileName As String)


    Dim printer As String
    printer = Util.getAdobePrinter
   
    If Len(printer) = 0 Then
        Err.Raise 1000, , "不能取得Adobe的打印机,请确认是否安装Adobe Acrobat Professional"
    End If
   
    Dim wordApp As Object
   
    On Error GoTo convertPdfToDocError
   
    Set wordApp = CreateObject("Word.application")
   
    Dim prnFile As String
   
    prnFile =  "c:/1234.prn"
   
    wordApp.Documents.Open docFileName
   
    '选择Adobe的打印机
    wordApp.WordBasic.FilePrintSetup printer:=printer, DoNotSetAsSysDefault:=1
   
    '将Word文件通过打印功能,输出成prn文件。
    wordApp.PrintOut Range:=0, Copies:=1, PageType:=0, _
                     ManualDuplexPrint:=False, Background:= _
                     True, PrintZoomColumn:=0, PrintZoomRow:=0, _
                     PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0, OutputFileName:="", _
                     Append:=False, _
                     PrintToFile:=True, OutputFileName:=prnFile
   
    '使用PDF的API,将prn文件转成PDF文件
    Dim pdfDist As Object
    Set pdfDist = New ACRODISTXLib.PdfDistiller
    pdfDist.FileToPDF prnFile, pdfFileName, ""

convertPdfToDocError:
    If IsObject(wordApp) Then
        wordApp.Quit
    End If
   
    If (Err.Number > 0) Then
        Dim errDesc, errSrc As String
        errDesc = Err.Description
        errSrc = Err.source
       
        Err.Raise Err.Number, errSrc, errDesc
    End If
End Function

'--------------------------------------------------------------------------------------
'【功能】取得Adobe打印机的名称
'--------------------------------------------------------------------------------------
Public Function getAdobePrinter()
    getAdobePrinter = ""
    Dim i As Integer
   
    For i = 0 To Printers.Count - 1
        Dim deviceName As String
        deviceName = LCase(Printers(i).deviceName)
        Dim pos As Integer
       
        pos = InStr(1, deviceName, "adobe")
       
        If (pos > 0) Then
            getAdobePrinter = Printers(i).deviceName
            Exit For
        End If
    Next
   
End Function

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
有多种方法可以将Word文件转换PDF,以下是其中两种方法方法1:使用Microsoft Office自带的功能 1. 打开Word文件并保存为PDF格式:在Word中打开文件,选择“文件”菜单,然后选择“另存为”选项。在“另存为”对话框中,选择“PDF”格式,并选择保存的位置。 2. 将PDF文件流写入输出流:使用Java的FileOutputStream类或其他输出流类将PDF文件流写入输出流。 示例代码: ``` FileOutputStream fos = new FileOutputStream("output.pdf"); doc.write(fos); fos.close(); ``` 方法2:使用第三方库 1. 添加依赖:使用Maven或Gradle将相关的依赖库添加到项目中。这里以iText库为例: Maven依赖: ``` <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> ``` Gradle依赖: ``` implementation 'com.itextpdf:itextpdf:5.5.13' ``` 2. 将Word文件转换PDF:使用iText库的PdfWriter类将Word文件转换PDF格式,示例代码如下: ``` Document doc = new Document(); PdfWriter.getInstance(doc, new FileOutputStream("output.pdf")); doc.open(); InputStream in = new FileInputStream("input.docx"); XWPFDocument document = new XWPFDocument(in); PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("output.pdf")); writer.setPageEmpty(true); doc.newPage(); PdfContentByte cb = writer.getDirectContent(); PdfTemplate tp = cb.createTemplate(PageSize.A4.getWidth(), PageSize.A4.getHeight()); Graphics2D g2 = tp.createGraphicsShapes(PageSize.A4.getWidth(), PageSize.A4.getHeight()); document.write(g2); g2.dispose(); cb.addTemplate(tp, 0, 0); doc.close(); ``` 3. 将PDF文件流写入输出流:使用Java的FileOutputStream类或其他输出流类将PDF文件流写入输出流。 示例代码: ``` FileOutputStream fos = new FileOutputStream("output.pdf"); doc.write(fos); fos.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值