Войти

Показать полную графическую версию : Как отправить на печать документ в формате pdf


Lich130387
23-10-2013, 07:55
Прошарил весь интернет, нигде не нашёл.

Foreigner
23-10-2013, 08:24
Попробуйте, я проверить не могу:

start-process ( get-item file.pdf ).fullname -verb print

Lich130387
23-10-2013, 10:00
примерно такое мне и подсказали: вот (http://gregcaporale.wordpress.com/2012/01/18/powershell-to-print-files-automatically/).

PS Но мне это не подходит по одной причине: там печать идёт на принтере по умолчанию, а мне нужно выбирать принтер, на котором будет идти печать.

Kazun
23-10-2013, 19:10
AcroRd32.exe /N /T PdfFile PrinterName

Lich130387
25-10-2013, 11:45
d32.exe /N /T PdfFile PrinterName »
в компандой строке такое работает, а повершелле я не могу заставить его работать.
У меня эта строка выглядит так: C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe /N /T f:\test\Tst.pdf doPDF v7

Kazun
25-10-2013, 11:49
&"C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" /N /T "f:\test\Tst.pdf" "doPDF v7"

Lich130387
25-10-2013, 13:50
Написал такой скрипт:
cls

function Print-File ($FilePath=“f:\test\Tst.pdf”)
{
Start-Process –FilePath $FilePath –Verb Print -PassThru | %{sleep 10;$_} | kill
}

function Get-DefaultPrinter {
$printer = Get-WmiObject win32_printer
foreach($prn in $printer) {
if ($prn.Default) {return $prn}
}

}

function Set-DefaultPrinter ($name) {
if (!$name) {
Write-Host "Не указано имя принтера. Операция прервана"
return 0
}
else {
$internal = GWMI -class Win32_Printer | Where {$_.Name -eq $name}
$internal.SetDefaultPrinter()
return 1
}
}

$printer = Get-WmiObject win32_printer
$DefPrnName = $NULL
$prns = @()
$i = 1

$DefPrnName = (Get-DefaultPrinter).Name

do
{
Write-Host "Печатать на принтере, выбранном по умолчанию ($DefPrnName)? (y - yes,n - no, x - exit)"
$ans1 = Read-Host
if ($ans1 -eq "x") {exit}
} until (($ans1 -ine "y") -or ($ans1 -ine "n"))


If ($ans1 -eq "y") {Print-File}
elseif ($ans1 -eq "n")
{
Write-Host "Выберете принтер для печати тестовой страницы:"
foreach($prn in $printer)
{
$prns += $prn
Write-Host $i -NoNewline
Write-Host (") "+$prn.Name)
$i++
}
Write-Host "0) Выход"

$i--
$numprn = Read-host

If ($numprn -eq 0) {exit}
$result = $NULL
If ($numprn -match "[1-$i]") {
$result = Set-DefaultPrinter ($prns[$numprn-1].Name)
$DefPrnName = (Get-DefaultPrinter).Name
Write-Host "По умолчанию установлен принтер $DefPrnName"
}
If ($result -eq "1") {Print-File}

}


По крайней мере, функцию свою выполняет.
Чуть позже попробую воспользоваться советом Kazun, возможно, скрипт станет попроще.




© OSzone.net 2001-2012