V-Форум / Corel VBA / Тема: Custom Page Size

Custom Page Size

 22/03/2010 17:51:26 #Link

GoodvinVV

Доброго дня Всем !!!
помогите разобраться...
Есть желание печатать Custom Page Size, но не получается принтеру назначить тот размер который нужно ....например получить список принтеров это пожалуста, выбрать нужный тоже ...посмотреть текущий размер тоже можно.... а КАК Установить свой размер?

Private Sub Command1_Click()
List1.Clear
For Each objPrinter In Printers
List1.AddItem objPrinter.DeviceName
If objPrinter.DeviceName = "Adobe PDF" Then
Text4.Text = objPrinter.DeviceName

Dim W
Dim H

W = objPrinter.Width * 1.7636684303351E-03 * 10
H = objPrinter.Height * 1.7636684303351E-03 * 10

W = Round(W, 2)
H = Round(H, 2)

Text3.Text = W
Text5.Text = H

End If

Next

End Sub

Private Sub Command2_Click() установить в принтер новые парамтры (размеры)

??? objPrinter.Width = ???
??? objPrinter.Height = T???

End Sub

Re: Custom Page Size

 23/03/2010 0:31:37 #Link

xm

GoodvinVV
вы об чем молчел?
у любого принтера есть адд кастом сайз
накой все эти сложные скриптули?

Re: Custom Page Size

 23/03/2010 9:40:15 #Link

GoodvinVV

.....как вбить Custom ручками меня не интересует я этим по 50-100 раз в день .... а мне нужно програмно ибо ручками (каждый раз новые размеры) много времени тыркать диалог принтера однако.
поэтому и "скриптули"

Re: Custom Page Size

 23/03/2010 10:26:02 #Link

wOxxOm

нужно будет писать через winapi, иначе никак. Кури гуглы, должны быть примеры, я пользовал только чтение отступов:

Sub GetPrinterMargins(Optional L#, Optional t#, Optional r#, Optional b#)
    Const PhysicalOffsetX& = 112, PhysicalOffsetY& = 113, PhysicalWidth& = 110, PhysicalHeight& = 111, _
                HorzRES& = 8, VertRES& = 10, HorzSIZE& = 4, VertSIZE& = 6, _
                LogPixelsX& = 88, LogPixelsY& = 90
    Dim dpiX#, dpiY#, W#, H#, hDC&, s$
    s = Printers.Default.Name
    hDC = CreateDCW(StrPtr("WINSPOOL"), StrPtr(s), 0, ByVal 0&)
    If hDC = 0 Then Exit Sub
    dpiX = GetDeviceCaps(hDC, LogPixelsX): If dpiX = 0 Then Exit Sub
    dpiY = GetDeviceCaps(hDC, LogPixelsY): If dpiY = 0 Then Exit Sub
    L = ConvertUnits(GetDeviceCaps(hDC, PhysicalOffsetX) / dpiX, cdrInch, p_impUnit)
    t = ConvertUnits(GetDeviceCaps(hDC, PhysicalOffsetY) / dpiY, cdrInch, p_impUnit)
    W = ConvertUnits(GetDeviceCaps(hDC, PhysicalWidth) / dpiX, cdrInch, p_impUnit)
    H = ConvertUnits(GetDeviceCaps(hDC, PhysicalHeight) / dpiY, cdrInch, p_impUnit)
    r = W - ConvertUnits(GetDeviceCaps(hDC, HorzRES) / dpiX, cdrInch, p_impUnit) - L
    b = H - ConvertUnits(GetDeviceCaps(hDC, VertRES) / dpiY, cdrInch, p_impUnit) - t
    DeleteDC hDC
    marginTop = t: marginBottom = b: marginLeft = L: marginRight = r
    With chMargins
        hDC = InStr(.Caption, "(")
        .Caption = RTrim$(Left$(.Caption, IIf(hDC = 0, 99, hDC - 1))) & " (" & s & ")"
        .ControlTipText = "Top: " & RoundUnit(t, p_impUnit) & "; Left: " & RoundUnit(L, p_impUnit) & _
                                     "; Right: " & RoundUnit(r, p_impUnit) & "; Bottom: " & RoundUnit(b, p_impUnit) & _
                                     " — using default system printer: " & s
    End With
End Sub

Re: Custom Page Size

 23/03/2010 17:37:07 #Link

GoodvinVV

вот, нашел примерчик, не совсем то , что хотелось бы.... мудрёный очень...кто поможет разобраться?
http://www.planet-source-...


пример моей тестовой формы

и cod

Private Sub Command1_Click()
List1.Clear
For Each objPrinter In Printers
List1.AddItem objPrinter.DeviceName
If objPrinter.DeviceName = "Adobe PDF" Then
Text4.Text = objPrinter.DeviceName

Dim W
Dim H

W = objPrinter.Width * 1.7636684303351E-03 * 10
H = objPrinter.Height * 1.7636684303351E-03 * 10

W = Round(W, 2)
H = Round(H, 2)

Text3.Text = W
Text5.Text = H

End If

Next

End Sub

Private Sub Command2_Click() установить в принтер новые парамтры (размеры)

??? ???
??? ???

End Sub

Re: Custom Page Size

 22/09/2011 12:55:24 #Link

Гость

Был жуткий затрах с этой темой.
В итоге как вышло у меня:
Юзер жмёт печатать.
ППД файл заменяется с подменой скажем А4 страницы нужными размерами.
PrintSettings натравливаются на этот кастомный размер.
Выводится диалог на печать.

Источник: https://powerclip.ru/modules/newbb/viewtopic.php?topic_id=9291&start=0

Rambler's Top100