Custom Page Size
22/03/2010 17:51:26
#Link
Доброго дня Всем !!!
помогите разобраться...
Есть желание печатать 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
GoodvinVV
вы об чем молчел?
у любого принтера есть адд кастом сайз
накой все эти сложные скриптули?
Re: Custom Page Size
23/03/2010 9:40:15
#Link
.....как вбить Custom ручками меня не интересует я этим по 50-100 раз в день .... а мне нужно програмно ибо ручками (каждый раз новые размеры) много времени тыркать диалог принтера однако.
поэтому и "скриптули"
Re: Custom Page Size
23/03/2010 10:26:02
#Link
нужно будет писать через 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
вот, нашел примерчик, не совсем то , что хотелось бы.... мудрёный очень...кто поможет разобраться?
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