Показать сообщение отдельно

  #18  
Старый 05.04.2010, 23:04
SpangeBoB
Познавший АНТИЧАТ
Регистрация: 12.07.2008
Сообщений: 1,705
С нами: 9384806

Репутация: 1350


По умолчанию

На одном из форумов был задан вопрос - "Нужно распечатать 1000 *.pdf файлов. Но только первую страницу каждого из файлов. "

Решение конечно не красивое,но рабочее.Что требуется:
1)Качаем http://sourceforge.net/projects/pdfsharp/files/pdfsharp/PDFsharp%201.31/PDFsharp-MigraDocFoundation-Assemblies-1_31.zip/download
2)Распаковываем.
3)Наличие Adobe Reader.
4)Свободное место.

Суть скрипта создаем новый файл только с первой страницей (в данном случаем в F:\print\ - заменить на свое ) и распечатываем ее.Т.е у нас будет создано 1000 файлов и в каждом только 1 страница.

Цитата:
#Папка куда складываем каждую первую страницу.
$pathToSave = "F:\print\"
[System.Reflection.Assembly]::LoadFile('F:\PdfSharp.dll')
#Обязательное требование Adobe Reader
[PdfSharp.Pdf.Printing.PDFFilePrinter]::AdobeReaderPath = "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
Get-ChildItem F:\ -Filter *.pdf | ForEach-Object {
$filename = $_.FullName
$name = [System.IO.Path]::GetFileNameWithoutExtension($filename)
$inputname = [PdfSharp.Pdf.Io.Pdfreader]::Open($filename,[PdfSharp.Pdf.IO.PdfDocumentOpenMode]::Import)
$outfile = New-Object PdfSharp.Pdf.PdfDocument
$outfile.Version = $inputname.Version
$outfile.Info.Title = [String]::Format("Page {0} of {1}", 1, $inputname.Info.Title)
$outfile.Info.Creator = $inputname.Info.Creator
$outfile.AddPage($inputname.Pages[0])
$outfile.Save($pathToSave+[String]::Format("{0} - Page {1}.pdf", $name, 1))
$printer = New-Object PdfSharp.Pdf.Printing.PDFFilePrinter([System.String]($pathToSave+[String]::Format("{0} - Page {1}.pdf", $name, 1)) , [System.String]"HP LaserJet 6L")
$printer.Print()
}
'F:\PdfSharp.dll' - заменяем на путь куда распаковали
Get-ChildItem F:\ -Filter *.pdf - для примера искать pdf в корне диска

Пример работы взят с сайта http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx

Последний раз редактировалось SpangeBoB; 05.04.2010 в 23:10..
 
Ответить с цитированием