2013-10-01 4 views
7

Я пытаюсь напечатать все pdf-файлы в текущем каталоге. Когда я называю этот сценарий bash в cmd (singlepdf.sh): '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t Gemeinde_348_BioID_842_alt.pdf все работает нормально.Печать PDF-файлов из командной строки Windows

При вызове multiplepdfs.sh с этим содержанием:

declare -a pdfs=(*.pdf) 

for pdf in ${pdfs[@]}; do 
    echo -e "\nprinting **$pdf** with AcroRd32.exe...\n" 
    '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t $pdf 
    sleep 3 
done 

эхо показывает, что файлы рассматриваются правильно в цикле - но тогда я получаю ошибку "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory

Может кто-то помочь с этим вопросом?

Edit: Кстати, у меня есть MSYS MinGW установлен

ответ

3

Сообщение об ошибке говорит вам.

Попробуйте просто

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf" 

Когда вы заключите строку в одинарные кавычки, это делает все внутри правильной строки, в том числе " символов. Удалив одинарные кавычки, оболочка будет обрабатывать dbl-кавычки как строки «обертки».

Я хотел бы также обернуть переменную имя файла в двухместное кавычки, так что вы можете легко обрабатывать файлы с пробелами в именах, т.е.

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf" 

IHTH

+0

Я пробовал все типы и варианты qoutes, а один в op был единственным, работающим вне цикла. С одинарными кавычками adobe открывает файл, но странно выдает сообщение по строкам «Ошибка при открытии файла. . "и не отправляет файл на принтер. – Kay

+0

Спасибо за редактирование, я только что опубликовал сообщение, чтобы спросить, как вы можете запустить bash на Windows. Лучшее, что я могу порекомендовать, - добавить «set -vx» в верхней части вашего скрипта, чтобы вы могли видеть, что выполняется, и как любые значения используются для переменных. Кроме того, вы можете попробовать строки ANSI с '$ 'c: \ program ...." 'или' $' c: \ ..... ''вместо простых dbl или одиночных кавычек. Также добавьте в свой пост вывод 'bash --version'. Удачи. – shellter

+0

или попробуйте использовать скрипт 'multipdf'' singlepdf' с аргументом файла? Удачи. – shellter

3

Похоже, вы упускаете имя принтера, драйвер , и порт - в этом порядке. Ваша последняя команда должна выглядеть следующим образом:

AcroRd32.exe /t <file.pdf> <printer_name> <printer_driver> <printer_port> 

Например:

"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "C:\Folder\File.pdf" "Brother MFC-7820N USB Printer" "Brother MFC-7820N USB Printer" "IP_192.168.10.110" 

Примечание: Для того, чтобы найти информацию о принтере, щелкните правой кнопкой мыши принтер и выберите свойства. В моем примере, указанном выше, имя принтера и имя драйвера совпадают, но ваша информация может отличаться.

7

У меня было две проблемы с использованием Acrobat Reader для этой задачи.

  1. API командной строки официально не поддерживается, поэтому он может быть изменен или удален без предупреждения.
  2. Отправляйте команду печати, чтобы Reader загружал графический интерфейс, и, казалось бы, не смог предотвратить его. Мне нужно, чтобы процесс был прозрачным для пользователя.

Я наткнулся на это blog, что предполагает использование Foxit Reader. Foxit Reader является бесплатным, API почти идентичен Acrobat Reader, но он документально подтвержден и не загружает графический интерфейс для заданий на печать.

Слово предупреждения, не просто щелкните процесс установки, не обращая внимания, оно также пытается установить несвязанное программное обеспечение. Почему производители программного обеспечения все еще делают это ???

+5

Я не мог заставить Foxit Reader (v7.0.6) печатать тихо в фоновом режиме. Он открывает минимизированную версию графического интерфейса пользователя и не возвращает управление до тех пор, пока оно не будет закрыто вручную. (Таким образом, я закончил использование ** SumatraPDF **, в котором есть ключи командной строки ** - print-to-default ** (или * * -print-to ** _myprinter_) и ** - silent **, что позволяет полностью отключить фоновое печать! И код возврата равен 0, если он преуспеет, и 1, если он не работает. Ссылка: [http://github.com/ sumatrapdfreader/sumatrapdf/wiki/Command-line-arguments] (http://github.com/sumatrapdfreader/sumatrapdf/wiki/Command-line-arguments) – Johan

+0

Печать в командной строке работала так, как ожидалось, в Foxit v6.2, но, похоже, быть сломанным в 7.0 – dlchambers

+0

Я могу подтвердить это. Тихая печать с Foxit 7.06 открывает графический интерфейс, Foxit 6.15 действительно печатает молча – Ello

1
@ECHO off set "dir1=C:\TicketDownload" 
FOR %%X in ("%dir1%*.pdf") DO ("C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t "%%~dpnX.pdf" "Microsoft XPS Document Writer") 
FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/) 

Попробуйте это ..Может быть, у вас есть и другая версия Reader, так что это проблема.

3

У меня была аналогичная проблема с печатью нескольких PDF-файлов подряд и найдено только обходное решение с использованием программного обеспечения 2Printer. пример командной строки для печати PDF файлов:

2Printer.exe -s "C:\In\*.PDF" -prn "HP LasetJet 1100" 

Это бесплатно для некоммерческого использования в http://doc2prn.com/

+2

Бесплатная версия добавляет страницу отчета на каждую страницу, поэтому для меня бесполезно, так как 50% моей печати будет пустой тратой. – pilkch

+0

Пока это работает, мы можем его купить. Но, пожалуйста, убедитесь, что после покупки он работает. Не могли бы вы подтвердить его надежность и стандарт. мы должны использовать его на предприятиях. – YumYumYum

3

Использование Acrobat читателя не хорошее решение, особенно атрибуты командной строки не документированы. Кроме того, окно программы Acrobat остается открытым после процесса печати. Файлы PDF хорошо известны драйверам принтера, поэтому вы можете найти лучшие инструменты, такие как 2Printer.exe или RawFilePrinter.exe. На моем взгляде RawFilePrinter имеет лучшую поддержку и четкое лицензирование процесс (вы платите пожертвование один раз, и вы можете распространять RawFilePrinter во многих проектах вам нравится - даже новые версии работают с ранее приобретенной лицензией)

RawFilePrinter.exe -p "c:\Users\Me\Desktop\mypdffile.pdf" "Canon Printer" 
IF %ERRORLEVEL% 1(
    echo "Error!" 
) 

Последняя версия скачать: http://effisoft.pl/rawfileprinter

4

Первого ответа - хотел, чтобы наконец вернуть полезное сообщество ...

Требуется, чтобы добавить это ответы для людей, все еще ищут простое решение. Я использую бесплатный продукт от Foxit Software - FoxItReader.
Вот ссылка на версию, которая работает с бесшумными печатными версиями, функция бесшумной печати все еще не работает. FoxitReader623.815_Setup

FOR %%f IN (*.pdf) DO ("C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" /t %%f "SPST-SMPICK" %%f & del %%f) 

Я просто создал команду в цикле через каталог и для каждого файла PDF (FOR %% F IN * .pdf) открыть читателя молча (/ т) получить следующий PDF (%% ф) и отправить его в очередь печати (SPST-SMPICK), а затем удалить каждый PDF после отправки его в очередь печати (del %% f). Shashank показал пример перемещения файлов в другой каталог, если это то, что вам нужно сделать

FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/) 
1

Я знаю, что это и старый вопрос, но я столкнулся с той же проблемой в последнее время и ни один из ответов не работает для меня :

  • не удалось найти старую версию Foxit Reader
  • Как @pilkch сказал 2Printer добавляет страницу отчета
  • Adobe Reader открывает графический интерфейс

После поиска немного больше я нашел это: http://www.columbia.edu/~em36/pdftoprinter.html.

Это простой пример, который вы вызываете с именем файла, и печатает на принтере по умолчанию (или указанном вами). С сайта:

PDFtoPrinter - это программа для печати PDF-файлов из командной строки Windows. Программа разработана в основном для командной строки Windows, а также для использования с эмулятором vDos DOS.

Чтобы распечатать PDF файл на принтер Windows, по умолчанию, используйте следующую команду:

PDFtoPrinter.exe filename.pdf 

Для печати на конкретный принтер, добавьте имя принтера в кавычках:

PDFtoPrinter.exe filename.pdf "Name of Printer" 

Если вы хотите печатать на сетевом принтере, используйте имя, которое появляется в диалоговых окнах печати Windows, например (и обратите внимание на две обратные косые черты в начале имени и одну обратную косую черту после имени сервера):

PDFtoPrinter.exe filename.pdf "\\SERVER\PrinterName" 
Смежные вопросы