Crear PDF mediante VBA con BulZip PDF Virtual

Crear un Modulo Clase y . . . . (copiar - pegar este código)

Option Compare Database

Option Explicit

'Need a reference to bzpdfc.dll (Bullzip).

Private mPDFSettings As Bullzip.PDFPrinterSettings

Private mstrCurrentPrinterName As String

Private mstrPDFPrinterName As String

Private Const mintNoPDFPrinter As Integer = 1980

Private Const mintNoCurrentPrinter As Integer = 1981

Public Enum YesNoEnum

ynYes

ynNo

End Enum

Public Enum NofileAlwaysNeverEnum

nanNofile

nanAlways

nanNever

End Enum

Public Enum AlwaysNeverEnum

anAlways

anNever

End Enum

Public Enum YesNoAskEnum

ynaYes

ynaNo

ynaAsk

End Enum

Public Enum TargetEnum

tScreen

tEbook

tPrinter

tPrepress

tDefault

End Enum

Public Enum ZoomFitEnum

zfFitall

zfFitWidth

zfNone

End Enum

Public Enum TopBottomEnum

tbTop

tbBottom

End Enum

Public Enum TopBottomCenterEnum

tbcTop

tbcBottom

tbcCenter

End Enum

Public Enum LeftRightCenterEnum

lrcLeft

lrcRight

lrcCenter

End Enum

Public Enum KeyLengthEnum

klLength40 = 40

klLength128 = 128

End Enum

Public Enum SecuritySettingsEnum

ssPrintDocument = 4

ssModifyDocument = 8

ssCopyDetails = 16

ssModifyTextAndFillInFields = 32

ssFillInFields = 256

ssExtractTextAndGraphics = 512

ssAssembleDocumentIncBookmarks = 1024

ssPrintHightQuality = 2048

End Enum

Public Enum NoneAllEnum

naNone

naAll

End Enum

Public Enum OrientationEnum

oPortrait

oLandscapte

oSeascape

oUpsideDown

End Enum

Public Enum DeviceEnum

dBMPmono

dBMPGray

dBMPsep1

dBMPsep8

dBMP16

dBMP256

dBMP16m

dBMP32b

dEPSWrite

dJPEG

dJPEGGray

dPCXMono

dPCXGray

dPCX16

dPCX256

dPCX24b

dPCXcmyk

dPNGMono

dPNGGray

dPNG16

dPNG256

dPNG16m

dPNGAlpha

dTIFFGray

dTIFF12nc

dTIFF24nc

dTIFF32nc

dTIFFsep

dTIFFcrle

dTIFFg3

dTIFFg32d

dTIFFg4

dTIFFlzw

dTIFFpack

dPDFWrite

End Enum

Public Enum AlphaBitsEnum

ab1 = 1

ab2 = 2

ab4 = 4

End Enum

Public Enum PDFA1BEnum

PDFA1B

End Enum

'CLASS INITIALISATION AND TERMINATION ROUTINES.

Private Sub Class_Initialize()

Dim intI As Integer

Dim intPDFPrinterIndex As Integer

Dim intCurrentPrinterIndex As Integer

Set mPDFSettings = New Bullzip.PDFPrinterSettings

'Printer specific settings

mstrPDFPrinterName = mPDFSettings.GetPrinterName

'Find the index of the printer that we want to use

intPDFPrinterIndex = -1

intCurrentPrinterIndex = -1

mstrCurrentPrinterName = Application.Printer.DeviceName

For intI = 0 To Application.Printers.Count - 1

If Application.Printers.Item(intI).DeviceName = mstrPDFPrinterName Then

intPDFPrinterIndex = intI

End If

If Application.Printers.Item(intI).DeviceName = mstrCurrentPrinterName Then

intCurrentPrinterIndex = intI

End If

Next intI

'Exit here if the pdf printer was not found

If intPDFPrinterIndex = -1 Then

MsgBox "The printer '" & mstrPDFPrinterName & "' was not found on this computer."

Err.Raise mintNoPDFPrinter, Err.Source, "Unable to find PDF printer."

End If

'Exit here if the current printer was not found

If intCurrentPrinterIndex = -1 Then

MsgBox "The current printer '" & mstrCurrentPrinterName & "' was not found on this computer." & _

" Without this printer the code will not be able to restore the original printer selection."

Err.Raise mintNoCurrentPrinter, Err.Source, "Unable to find current printer."

End If

'Set the printer to the PDF printer.

Application.Printer = Application.Printers(intPDFPrinterIndex)

End Sub

Private Sub Class_Terminate()

Dim intI As Integer

Dim intCurrentPrinterIndex As Integer

For intI = 0 To Application.Printers.Count - 1

If Application.Printers.Item(intI).DeviceName = mstrCurrentPrinterName Then

intCurrentPrinterIndex = intI

End If

Next intI

If intCurrentPrinterIndex = -1 Then

Err.Raise mintNoCurrentPrinter, Err.Source, "Unable to find original printer to change back to from PDF printer."

Else

Application.Printer = Application.Printers(intCurrentPrinterIndex)

End If

Set mPDFSettings = Nothing

End Sub

'HELPER FUNCTIONS

Private Function YesNo(YesNoValue As YesNoEnum) As String

Select Case YesNoValue

Case YesNoEnum.ynYes

YesNo = "yes"

Case YesNoEnum.ynNo

YesNo = "no"

End Select

End Function

Private Function NofileAlwaysNever(NofileAlwaysNeverValue As NofileAlwaysNeverEnum) As String

Select Case NofileAlwaysNeverValue

Case NofileAlwaysNeverEnum.nanNofile

NofileAlwaysNever = "noFile"

Case NofileAlwaysNeverEnum.nanAlways

NofileAlwaysNever = "always"

Case NofileAlwaysNeverEnum.nanNever

NofileAlwaysNever = "never"

End Select

End Function

Private Function AlwaysNever(AlwaysNeverValue As AlwaysNeverEnum) As String

Select Case AlwaysNeverValue

Case AlwaysNeverEnum.anAlways

AlwaysNever = "always"

Case AlwaysNeverEnum.anNever

AlwaysNever = "never"

End Select

End Function

Private Function YesNoAsk(YesNoAskValue As YesNoAskEnum) As String

Select Case YesNoAskValue

Case YesNoAskEnum.ynaYes

YesNoAsk = "yes"

Case YesNoAskEnum.ynaNo

YesNoAsk = "no"

Case YesNoAskEnum.ynaAsk

YesNoAsk = "ask"

End Select

End Function

Private Function TargetFromEnum(TargetValue As TargetEnum) As String

'Case sensitive. Keep in lower case.

Select Case TargetValue

Case TargetEnum.tDefault

TargetFromEnum = "default"

Case TargetEnum.tEbook

TargetFromEnum = "ebook"

Case TargetEnum.tPrepress

TargetFromEnum = "prepress"

Case TargetEnum.tPrinter

TargetFromEnum = "printer"

Case TargetEnum.tScreen

TargetFromEnum = "screen"

End Select

End Function

Private Function ZoomFit(ZoomFitValue As ZoomFitEnum) As String

'Note needed as we have Zoom? TODO

Select Case ZoomFitValue

Case ZoomFitEnum.zfFitall

ZoomFit = "fitall"

Case ZoomFitEnum.zfFitWidth

ZoomFit = "fitwidth"

End Select

End Function

Private Function TopBottom(TopBottomValue As TopBottomEnum) As String

Select Case TopBottomValue

Case TopBottomEnum.tbTop

TopBottom = "top"

Case TopBottomEnum.tbBottom

TopBottom = "bottom"

End Select

End Function

Private Function TopBottomCenter(TopBottomCenterValue As TopBottomCenterEnum) As String

Select Case TopBottomCenterValue

Case TopBottomCenterEnum.tbcTop

TopBottomCenter = "top"

Case TopBottomCenterEnum.tbcBottom

TopBottomCenter = "bottom"

Case TopBottomCenterEnum.tbcCenter

TopBottomCenter = "center"

End Select

End Function

Private Function LeftRightCenter(LeftRightCenterValue As LeftRightCenterEnum) As String

Select Case LeftRightCenterValue

Case LeftRightCenterEnum.lrcLeft

LeftRightCenter = "left"

Case LeftRightCenterEnum.lrcRight

LeftRightCenter = "right"

Case LeftRightCenterEnum.lrcCenter

LeftRightCenter = "center"

End Select

End Function

Private Function NoneAll(NoneAllValue As NoneAllEnum) As String

Select Case NoneAllValue

Case NoneAllEnum.naAll

NoneAll = "all"

Case NoneAllEnum.naNone

NoneAll = "none"

End Select

End Function

Private Function OrientationFromEnum(OrientationValue As OrientationEnum) As String

Select Case OrientationValue

Case OrientationEnum.oPortrait

OrientationFromEnum = "portrait"

Case OrientationEnum.oLandscapte

OrientationFromEnum = "landscape"

Case OrientationEnum.oSeascape

OrientationFromEnum = "seascape"

Case OrientationEnum.oUpsideDown

OrientationFromEnum = "upsidedown"

End Select

End Function

Private Function DeviceFromEnum(DeviceValue As DeviceEnum) As String

Select Case DeviceValue

Case DeviceEnum.dBMPmono

DeviceFromEnum = "bmpmono"

Case DeviceEnum.dBMPGray

DeviceFromEnum = "bmpgray"

Case DeviceEnum.dBMPsep1

DeviceFromEnum = "bmpsep1"

Case DeviceEnum.dBMPsep8

DeviceFromEnum = "bmpsep8"

Case DeviceEnum.dBMP16

DeviceFromEnum = "bmp16"

Case DeviceEnum.dBMP256

DeviceFromEnum = "bmp256"

Case DeviceEnum.dBMP16m

DeviceFromEnum = "bmp16m"

Case DeviceEnum.dBMP32b

DeviceFromEnum = "bmp32b"

Case DeviceEnum.dEPSWrite

DeviceFromEnum = "epswrite"

Case DeviceEnum.dJPEG

DeviceFromEnum = "jpeg"

Case DeviceEnum.dJPEGGray

DeviceFromEnum = "jpeggray"

Case DeviceEnum.dPCXMono

DeviceFromEnum = "pcxmono"

Case DeviceEnum.dPCXGray

DeviceFromEnum = "pcxgray"

Case DeviceEnum.dPCX16

DeviceFromEnum = "pcx16"

Case DeviceEnum.dPCX256

DeviceFromEnum = "pcx256"

Case DeviceEnum.dPCX24b

DeviceFromEnum = "pcx24b"

Case DeviceEnum.dPCXcmyk

DeviceFromEnum = "pcxcmyk"

Case DeviceEnum.dPNGMono

DeviceFromEnum = "pngmono"

Case DeviceEnum.dPNGGray

DeviceFromEnum = "pnggray"

Case DeviceEnum.dPNG16

DeviceFromEnum = "png16"

Case DeviceEnum.dPNG256

DeviceFromEnum = "png256"

Case DeviceEnum.dPNG16m

DeviceFromEnum = "png16m"

Case DeviceEnum.dPNGAlpha

DeviceFromEnum = "pngalpha"

Case DeviceEnum.dTIFFGray

DeviceFromEnum = "tiffgray"

Case DeviceEnum.dTIFF12nc

DeviceFromEnum = "tiff12nc"

Case DeviceEnum.dTIFF24nc

DeviceFromEnum = "tiff24nc"

Case DeviceEnum.dTIFF32nc

DeviceFromEnum = "tiff32nc"

Case DeviceEnum.dTIFFsep

DeviceFromEnum = "tiffsep"

Case DeviceEnum.dTIFFcrle

DeviceFromEnum = "tiffcrle"

Case DeviceEnum.dTIFFg3

DeviceFromEnum = "tiffg3"

Case DeviceEnum.dTIFFg32d

DeviceFromEnum = "tiffg32d"

Case DeviceEnum.dTIFFg4

DeviceFromEnum = "tiffg4"

Case DeviceEnum.dTIFFlzw

DeviceFromEnum = "tifflzw"

Case DeviceEnum.dTIFFpack

DeviceFromEnum = "tiffpack"

Case DeviceEnum.dPDFWrite

DeviceFromEnum = "pdfwrite"

End Select

End Function

Private Function PDFA1BFromEnum(PDFA1BValue As PDFA1BEnum)

Select Case PDFA1BValue

Case PDFA1BEnum.PDFA1B

PDFA1BFromEnum = "pdfa1b"

End Select

End Function

'PDF PRINTER SETTINGS

Public Function Output(OutputFilePath As String)

mPDFSettings.SetValue "Output", OutputFilePath

End Function

Public Function ConfirmOverwrite(YesNoValue As YesNoEnum)

mPDFSettings.SetValue "ConfirmOverwrite", YesNo(YesNoValue)

End Function

Public Function ShowSaveAS(NofileAlwaysNeverValue As NofileAlwaysNeverEnum)

mPDFSettings.SetValue "NoFileAlwaysNever", NofileAlwaysNever(NofileAlwaysNeverValue)

End Function

Public Function ShowSettings(AlwaysNeverValue As AlwaysNeverEnum)

mPDFSettings.SetValue "ShowSettings", AlwaysNever(AlwaysNeverValue)

End Function

Public Function ShowPDF(YesNoAskValue As YesNoAskEnum)

mPDFSettings.SetValue "ShowPDF", YesNoAsk(YesNoAskValue)

End Function

'PDF DOCUMENT SETTINGS

Public Function Target(TargetValue As TargetEnum)

mPDFSettings.SetValue "Target", TargetFromEnum(TargetValue)

End Function

Public Function Author(AuthorValue As String)

mPDFSettings.SetValue "Author", "AuthorValue"

End Function

Public Function UseDefaultAuthor(YesNoValue As YesNoEnum)

mPDFSettings.SetValue "UseDefaultAuthor", YesNo(YesNoValue)

End Function

Public Function Title(TitleValue As String)

mPDFSettings.SetValue "Title", TitleValue

End Function

Public Function UseDefaultTitle(YesNoValue As YesNoEnum)

mPDFSettings.SetValue "UseDefaultTitle", YesNo(YesNoValue)

End Function

Public Function Subject(SubjectValue As String)

mPDFSettings.SetValue "Subject", SubjectValue

End Function

Public Function Keywords(KeywordsValues As String)

mPDFSettings.SetValue "Keywords", KeywordsValues

End Function

'PDF DISPLAY SETTINGS

Public Function Zoom(ZoomFitValue As ZoomFitEnum, Optional ZoomPercent As Byte)

'ZoomPercent of 0 gives no zoom.

If ZoomFitValue = zfNone Then

mPDFSettings.SetValue "Zoom", ZoomPercent

Else

mPDFSettings.SetValue "Zoom", ZoomFit(ZoomFitValue)

End If

End Function

Public Function UseThumbs(YesNoValue As YesNoEnum)

mPDFSettings.SetValue "UseThumbs", YesNo(YesNoValue)

End Function

Public Function AutoRotatePages(Optional NoneAllValue As NoneAllEnum = NoneAllEnum.naAll)

mPDFSettings.SetValue "AutoRotatePages", NoneAll(NoneAllValue)

End Function

Public Function Orientation(OrientationValue As OrientationEnum)

mPDFSettings.SetValue "Orientation", OrientationFromEnum(OrientationValue)

End Function

'WATERMARK SETTINGS

Public Function WatermarkText(WatermarkTextValue As String)

mPDFSettings.SetValue "WatermarkText", WatermarkTextValue

End Function

Public Function WatermarkTransparency(WatermarkTransparencyPercentValue As Byte)

If WatermarkTransparencyPercentValue > 100 Then

mPDFSettings.SetValue "WatermarkTransparency", 100

Else

mPDFSettings.SetValue "WatermarkTransparency", WatermarkTransparencyPercentValue

End If

End Function

Public Function WatermarkRotation(WatermarkRotationDegreesValue As Integer)

'Currently doesn't accept c2c or -c2c.

mPDFSettings.SetValue "WatermarkRotation", WatermarkRotationDegreesValue Mod 360

End Function

Public Function WatermarkColor(WatermarkColorHTMLColorValue As String)

'Pass as #RRGGBB

mPDFSettings.SetValue "WatermarkColor", WatermarkColorHTMLColorValue

End Function

Public Function WatermarkFontName(WatermarkFontNameValue As String)

'Default is arial.ttf

mPDFSettings.SetValue "WatermarkFontName", WatermarkFontNameValue

End Function

Public Function WatermarkFontSize(WatermarkFontSizeValue As Byte)

mPDFSettings.SetValue "WatermarkFontSize", WatermarkFontSizeValue

End Function

Public Function WatermarkOutlineWidth(WatermarkOutlineWidthValue As Byte)

'Default is 2.

mPDFSettings.SetValue "WatermarkOutlineWidth", WatermarkOutlineWidthValue

End Function

Public Function WatermarkLayer(WatermarkLayerValue As TopBottomEnum)

'Default is top.

mPDFSettings.SetValue "WatermarkLayer", TopBottom(WatermarkLayerValue)

End Function

Public Function WatermarkVerticalPosition(WatermarkVerticalPositionValue As TopBottomCenterEnum)

'Default is center.

mPDFSettings.SetValue "WatermarkVerticalPosition", TopBottomCenter(WatermarkVerticalPositionValue)

End Function

Public Function WatermarkHorizontalPosition(WatermarkHorizontalPositionValue As LeftRightCenterEnum)

'Default is center.

mPDFSettings.SetValue "WatermarkHorizontalPosition", LeftRightCenter(WatermarkHorizontalPositionValue)

End Function

Public Function WatermarkVerticalAdjustment(WatermarkVerticalAdjustmentValue As Byte)

'Percentage of page height.

mPDFSettings.SetValue "WatermarkVerticalAdjustment", WatermarkVerticalAdjustmentValue

End Function

Public Function WatermarkHorizontalAdjustment(WatermarkHorizontalAdjustmentValue As Byte)

'Percentage of page width.

mPDFSettings.SetValue "WatermarkHorizontalAdjustment", WatermarkHorizontalAdjustmentValue

End Function

Public Function PrinterName()

PrinterName = mPDFSettings.GetPrinterName

End Function

Public Function ShowProgress(ShowProgressValue As Boolean)

mPDFSettings.SetValue "ShowProgress", ShowProgressValue

End Function

Public Function ShowProgressFinished(ShowProgressFinishedValue As Boolean)

mPDFSettings.SetValue "ShowProgressFinished", ShowProgressFinishedValue

End Function

'MERGE SETTINGS.

Public Function MergeFiles(MergeIntoFileValue As String)

mPDFSettings.SetValue "MergeFile", MergeIntoFileValue

End Function

Public Function MergePosition(MergePositionValue As TopBottomEnum)

mPDFSettings.SetValue "MergePosition", TopBottom(MergePositionValue)

End Function

Public Function Superimpose(SuperimposeOnFileNameValue As String)

mPDFSettings.SetValue "Superimpose", SuperimposeOnFileNameValue

End Function

Public Function SuperimposeLayer(SuperimposeLayerValue As TopBottomEnum)

mPDFSettings.SetValue "SuperimposeLayer", TopBottom(SuperimposeLayerValue)

End Function

Public Function SuperimposeResolution(superimposeLayerResolutionDPIValue As Long)

If superimposeLayerResolutionDPIValue > 14400 Then

mPDFSettings.SetValue "SuperimposeResolution", 14400

Else

mPDFSettings.SetValue "SuperimposeResolution", superimposeLayerResolutionDPIValue

End If

End Function

'PDF SECURITY SETTINGS

Public Function OwnerPassword(PasswordValue As String)

mPDFSettings.SetValue "OwnerPassword", PasswordValue

End Function

Public Function UserPassword(PasswordValue As String)

mPDFSettings.SetValue "UserPassword", PasswordValue

End Function

Public Function KeyLength(KeyLengthValue As KeyLengthEnum)

mPDFSettings.SetValue "KeyLength)", KeyLengthValue

End Function

Public Function Permissions(Optional PrintDocument As Boolean = True, _

Optional ModifyDocument As Boolean = False, _

Optional CopyDetails As Boolean = True, _

Optional ModifyTextAndFillInFields As Boolean = False, _

Optional FillInFields As Boolean = True, _

Optional ExtractTextAndGraphics As Boolean = True, _

Optional AssembleDocumentIncBookmarks As Boolean = False, _

Optional PrintHighQuality As Boolean = True)

Dim lngPermissions As Long

'Default

lngPermissions = 61632

If PrintDocument = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssPrintDocument

End If

If ModifyDocument = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssModifyDocument

End If

If CopyDetails = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssCopyDetails

End If

If ModifyTextAndFillInFields = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssModifyTextAndFillInFields

End If

If FillInFields = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssFillInFields

End If

If ExtractTextAndGraphics = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssExtractTextAndGraphics

End If

If AssembleDocumentIncBookmarks = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssAssembleDocumentIncBookmarks

End If

If PrintHighQuality = True Then

lngPermissions = lngPermissions + SecuritySettingsEnum.ssPrintHightQuality

End If

mPDFSettings.SetValue "Permissions", lngPermissions

End Function

'IMAGE CREATION SETTINGS

Public Function Device(DeviceValue As DeviceEnum)

mPDFSettings.SetValue "Device", DeviceFromEnum(DeviceValue)

End Function

Public Function Res(DPIValue As Integer)

mPDFSettings.SetValue "Res", DPIValue

End Function

Public Function ResX(DPIValue As Integer)

mPDFSettings.SetValue "ResX", DPIValue

End Function

Public Function RexY(DPIValue As Integer)

mPDFSettings.SetValue "ResY", DPIValue

End Function

Public Function TextAlphaBits(TextAlphaBitsValue As AlphaBitsEnum)

mPDFSettings.SetValue "TextAlphaBits", TextAlphaBitsValue

End Function

Public Function GraphicsAlphaBits(GraphicsAlphaBitsValue As AlphaBitsEnum)

mPDFSettings.SetValue "GraphicsAlphaBits", GraphicsAlphaBitsValue

End Function

Public Function Format(MakePDFA1BCompliantValue As PDFA1BEnum)

mPDFSettings.SetValue "Format", PDFA1BFromEnum(MakePDFA1BCompliantValue)

End Function

'DO IT

Public Function WriteSettings(TrueOrFalse As Boolean)

mPDFSettings.WriteSettings TrueOrFalse

End Function