Mình muốn cách in file pdf bằng vba và tự động scale cho vừa trang giấy như khi mở các chương trình đọc file pdf vì mình có file A3 mà cần in A4. với việc gọi bằng 1 trong 2 chương trình Forxit và SumatraPDF (hoặc chương trình đọc file pdf nhẹ nhàng khác) . Vì mình đã làm được bằng Adobe acrobat nhưng thằng này thì siêu nặng ( 3-4s cho 1 lệnh)
. Tiện đây cũng chia sẻ với mọi người code in bằng Acrobat và cũng là cái mình muốn sửa cho chương trình khác mà ko biết làm
:
Đầu tiên cần cấp thư viện acrobat cho vba bằng cách vào Tool-> References : "C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat" file "acrobat.tlb"
Sử dụng : AcrobatPrint "đường đẫn đến file PDF" "số bản in cần"
Chương trình chạy tốt nhưng rất nặng .Mong mọi người giúp với các chương trình nhẹ hơn với , thanks !
. Tiện đây cũng chia sẻ với mọi người code in bằng Acrobat và cũng là cái mình muốn sửa cho chương trình khác mà ko biết làm

Đầu tiên cần cấp thư viện acrobat cho vba bằng cách vào Tool-> References : "C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat" file "acrobat.tlb"
PHP:
Public Sub AcrobatPrint(FileName As String, PrintMode As Byte) Dim AcroExchApp As Acrobat.CAcroApp Dim AcroExchAVDoc As Acrobat.CAcroAVDoc Dim AcroExchPDDoc As Acrobat.CAcroPDDoc Dim number As Integer Dim a As Byte If Dir(FileName) = Empty Then MsgBox (" Error: link not found !") End If PrintMode = IIf(PrintMode < 2, 1, PrintMode) Set AcroExchApp = CreateObject("AcroExch.App") Set AcroExchAVDoc = CreateObject("AcroExch.AVDoc") AcroExchAVDoc.Open FileName, "" Set AcroExchPDDoc = AcroExchAVDoc.GetPDDoc number = AcroExchPDDoc.GetNumPages - 1 Range("h1") = PrintMode For a = 1 To PrintMode Call AcroExchAVDoc.PrintPages(0, number, 2, 1, 1) Next a AcroExchApp.Exit AcroExchAVDoc.Close (True) AcroExchPDDoc.Close End Sub
Sử dụng : AcrobatPrint "đường đẫn đến file PDF" "số bản in cần"
Chương trình chạy tốt nhưng rất nặng .Mong mọi người giúp với các chương trình nhẹ hơn với , thanks !
Lần chỉnh sửa cuối: