TotalPDFPrinterX: Оптимизируйте задачи печати с серверным групповым принтером PDF на основе ActiveX.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total PDF Printer X — это серверный SDK, который пакетно печатает PDF-файлы на физические или сетевые принтеры на серверах Windows — в headless-режиме, без запуска Acrobat, Foxit или любого другого просмотрщика PDF в цепочке печати. Работает тихо: без графического интерфейса, без диалогов, без всплывающих окон. Total PDF Printer X поставляется как с консольным бинарником, так и с интерфейсом ActiveX/COM, поэтому встраивается в ASP, PHP, .NET, Python, Ruby, Java и любой другой бэкенд с поддержкой COM. Обратите внимание, что аргумент назначения — это имя принтера, а не путь к файлу — вывод идёт на физические или сетевые принтеры, а не на диск.
Total PDF Printer X покрывает полный сценарий серверной печати:
-sort)
-rn), несколько копий (-NumCopy), режимы двусторонней печати (-d vertical для длинного края, -d horizontal для короткого края)
-ps A4, Letter, Legal и т.д.) и цветовой режим (-cl monochrome) на каждое задание
-list для шаблонов автоматических воркеров
Типичное развёртывание: FTP-приёмник или папка экспорта ERP получает PDF-файлы (счета, упаковочные листы, транспортные накладные, судебные документы); Folder Monitor ловит каждый новый файл и вызывает Total PDF Printer X с именем принтера и флагами; файл выходит на бумагу без вмешательства оператора. Десятки тысяч страниц в день на один сервер печати — обычное дело.
Обратите внимание, что Total PDF Printer X работает только на серверах Windows. Попробуйте бесплатно (30-дневный пробный период, без ограничений) и убедитесь, что он действительно стоит своих денег.
(включает 30-дневный бесплатный пробный период)
(только $450.00)
string src = @"C:\test\test1.pdf";
string printer = "HP LaserJet M404";
var prn = new PDFPrinterX();
prn.Print(src, printer, "-NumCopy 2 -d vertical -ps A4 -log c:\\test\\Printer.log");
if (!string.IsNullOrEmpty(prn.ErrorMessage))
throw new Exception(prn.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Printer\PDFPrinterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.pdf";
var printerName = "HP LaserJet M404";
startInfo.FileName = executablePath;
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" -p \"{printerName}\"";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Print job submitted.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("PDFPrinter.PDFPrinterX")
C.Print "c:\test\source.pdf", "HP LaserJet M404", "-NumCopy 2 -ps A4 -log c:\test\PrintPDF.log"
Response.Write C.ErrorMessage
set C = nothing
$src = "C:\\test\\test.pdf";
$printer = "My Printer Name";
$c = new COM("PDFPrinter.PDFPrinterX");
$c->Print($src, $printer, "-ps A4 -NumCopy 2");
if ($c->ErrorMessage == "") echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('PDFPrinter.PDFPrinterX')
src = "C:\\test\\test.pdf"
printer = "HP LaserJet M404"
c.Print(src, printer, "-NumCopy 2 -d vertical -log c:\\test\\PDFPrinter.log")
if c.ErrorMessage != ""
puts c.ErrorMessage
end
import win32com.client
c = win32com.client.Dispatch("PDFPrinter.PDFPrinterX")
src = "C:\\test\\test.pdf"
printer = "HP LaserJet M404"
c.Print(src, printer, "-NumCopy 2 -d vertical -log c:\\test\\PDFPrinter.log")
if c.ErrorMessage:
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('PDFPrinter.PDFPrinterX');
c.Print('c:\test\source.pdf', 'HP LaserJet M404', '-NumCopy 2 -ps A4 -log c:\test\PDFPrinter.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("PDFPrinter.PDFPrinterX");
c.Print("C:\\test\\source.pdf", "HP LaserJet M404", "-NumCopy 2 -ps A4");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test1.pdf"; my $printer = "HP LaserJet M404"; my $c = CreateObject Win32::OLE 'PDFPrinter.PDFPrinterX'; $c->Print($src, $printer, "-NumCopy 2 -log c:\\test\\PDFPrinter.log"); print $c->ErrorMessage if $c->ErrorMessage ne "";
"Scanprint Logistics — это склад, где мы храним и распределяем товары наших клиентов. Мы используем Total PDF Printer X вместе с Total Folder Monitor для автоматизации печати PDF-файлов от наших клиентов и из нашей ERP-системы. Клиенты загружают PDF-файлы (например, счета) на наш FTP-сервер, а затем Total PDF Printer X их печатает, чтобы мы могли вкладывать распечатки в отправляемые товары."
Frants Erikstrup
www.scanprint.dk
"После установки версии Total PDF Printer и Total PDF Printer X никаких проблем не возникло, так что мой отзыв весьма положительный. Мы только начинаем использовать новую версию (предыдущей мы уже пользовались), и если возникнут вопросы, я обязательно напишу. Спасибо и всего наилучшего."
Silverio Pattuelli
Ravenna, Italy, www.nobleagri.com
"Двенадцать складских площадок, на каждой свой принтер этикеток и принтер упаковочных листов. Total PDF Printer X плюс Folder Monitor: входящая папка на принтер, ERP сбрасывает PDF-ки, бумага появляется на нужной станции за секунды. -p выбирает принтер по дружественному имени; -t кладёт номер заказа в очередь Windows, чтобы операторы могли найти зависшее задание. Мы заменили самописный конвейер на автоматизации Acrobat, который ломался при каждом обновлении Acrobat. Пять лет на PDF Printer X — ни одного сбоя, который можно было бы списать на конвертер."
Marcin Z.
Senior IT Engineer at a 3PL warehouse network
"Включили Total PDF Printer X в наш продукт для медицинских записей по Royalty-Free лицензии. Разовая плата за проект оказалась долей того, что просили Aspose.PDF или PDFTron за права на перераспространение в части печати. Наш установщик доставляет и регистрирует ActiveX, наше приложение вызывает Print() напрямую, конечные пользователи видят только наш UI. Ограничение в виде 32-битного ActiveX стоило нам пары дней переработки конвейера, но поддержка отзывчиво помогла с обходными путями, когда мы спросили."
Sasha P.
Independent Software Vendor
"Судебные материалы приходят в PDF; мы печатаем их с водяными знаками с номером дела и нумерацией страниц для физического дела. Разделительные листы между документами держат ежедневную стопку упорядоченной для архивариуса. -rn позволяет печатать только страницы с подписями, когда нужны только они. Детерминированно от запуска к запуску, что важно для аудита. CLI стабилен, хорошо задокументирован, а флаг -xmllog даёт нам машинно-читаемый вывод по каждому заданию для аудит-следа."
Eleni V.
Lead Developer at a court-records office
IT teams that automate batch PDF printing on Windows servers via command line and ActiveX
Print PDF files on servers without any user interaction
IT departments deploy Total PDF PrinterX on Windows servers to print incoming PDF documents automatically. The application runs silently with no GUI or pop-up messages, printing batches of PDFs via command line on schedule — ideal for invoices, reports, and documents that need to be printed as soon as they arrive.
Batch-print thousands of PDF invoices in date order
Accounting departments print daily batches of PDF invoices, statements, and financial reports sorted by file date or time. Total PDF PrinterX adds page numbers or company watermarks to each sheet, and separator pages between documents keep the printed stack organized for distribution or mailing.
Add PDF printing to your web app via ActiveX
Software developers integrate Total PDF PrinterX via ActiveX into web applications, ERP systems, and document management platforms. Users trigger print jobs from a browser, and the server handles printing silently — no desktop software or user intervention required on the server side.
Auto-print packing slips and shipping labels from a server
Warehouses and distribution centers auto-print PDF packing slips, shipping labels, and delivery notes as orders flow in. Auto-rotate and fit-to-page options handle different document sizes without manual adjustment, and duplex-safe separator sheets prevent documents from bleeding across double-sided pages.
Print case files with watermarks and page numbering
Government agencies and legal departments batch-print PDF filings, case documents, and regulatory submissions on dedicated print servers. Add text watermarks with confidentiality notices or copyright information to every page, and stamp page numbers for organized physical records — all hands-free via command line.
Total PDF Printer X поставляется с PDFPrinterX.exe — консольной программой, которую можно запускать из скриптов, планировщика задач, хуков сервера печати или любого серверного сервиса, которому нужен бумажный вывод. Набор флагов соответствует GUI-версии PDFPrinter.exe; полный справочник смотрите в документации командной строки. Обратите внимание, что аргумент назначения — это имя принтера, а не путь к файлу: вывод идёт на физические или сетевые принтеры, а не на диск.
Минимально возможный вызов. Опустите имя принтера, и документ пойдёт на тот, который Windows считает текущим принтером по умолчанию.
PDFPrinterX.exe "C:\docs\invoice.pdf"
-p принимает дружественное имя принтера, как оно появляется в панели Принтеры Windows, или любой уникальный фрагмент его.
PDFPrinterX.exe "C:\docs\invoice.pdf" -p "HP LaserJet M404"
Частичные совпадения тоже работают — -p HP выберет первый принтер, имя которого содержит "HP".
Для длинных PDF, где нужно несколько листов — обложка, страница с подписью, отдельная глава — используйте -rn, чтобы ограничить печатаемый диапазон.
PDFPrinterX.exe "C:\docs\contract.pdf" -p "Office Printer" -rn "1-3,7,12-14"
Типичный офисный случай: раздать N копий одного и того же документа, на двух сторонах, на A4. -NumCopy задаёт количество копий, -d vertical включает дуплекс по длинной кромке, -ps A4 принудительно задаёт размер бумаги.
PDFPrinterX.exe "C:\docs\handout.pdf" -p "HP LaserJet M404" -NumCopy 25 -d vertical -ps A4
Направьте бинарник на подстановочный знак, и он напечатает каждый совпавший файл как отдельное задание. Полезно для ночных пакетов сгенерированных отчётов.
PDFPrinterX.exe "C:\reports\daily\*.pdf" -p "Reports Printer" -sort name
Добавьте -Recurse, чтобы включить подпапки, или -combine, чтобы отправить весь пакет как одно объединённое задание печати вместо одного задания на файл.
Общие принтеры на Windows-сервере печати адресуются по их сетевому имени. Передавайте UNC-путь дословно в -p.
PDFPrinterX.exe "C:\docs\report.pdf" -p "\\PRINTSRV01\Accounting-HP" -t "Q3 Report" -cl monochrome
-t задаёт заголовок задания, отображаемый в очереди печати Windows, что облегчает поиск или отмену задания.
Когда внешний воркер пишет файл-очередь, а принтер его потребляет, не нужно зашивать пути к файлам в саму командную строку. -list читает маски файлов (по одной на строку) из обычного текстового файла.
PDFPrinterX.exe -list "C:\queues\print-queue.txt" -p "Office Printer" -fo
-fo заставляет обработку идти без подсказок; сочетайте с -do, если воркер очереди также ожидает удаления оригиналов после успешной печати.
Как только PDFPrinterX.exe работает как сервис или плановая задача, лог — единственный сигнал того, что произошло на самом деле. -verbosity detail пишет по строке на файл; -logmode append сохраняет историю между запусками; -xmllog выпускает дружественный парсеру файл-компаньон.
PDFPrinterX.exe "C:\spool\*.pdf" -p "Warehouse Label Printer" -log "C:\logs\pdfprint.log" -verbosity detail -logmode append -xmllog "C:\logs\pdfprint.xml"
Обновлено Fri, 01 May 2026
(только $450.00)
-p: -p "HP LaserJet M404". Частичные совпадения тоже работают, поэтому -p HP выберет первый принтер, в имени которого есть "HP". Для общих принтеров на сервере печати Windows используйте UNC-путь к шаре: -p "\\PRINTSRV01\Accounting-HP". Опустите -p, чтобы печатать на текущий принтер по умолчанию Windows.new COM("PDFPrinter.PDFPrinterX") в PHP, new PDFPrinterX() в .NET, win32com.client.Dispatch("PDFPrinter.PDFPrinterX") в Python, WIN32OLE.new('PDFPrinter.PDFPrinterX') в Ruby. Обратите внимание: имя COM-метода — Print, а не Convert — назначение — это имя принтера, а не путь к файлу. Альтернативно, консольный бинарник PDFPrinterX.exe можно вызывать из любого процесса, планировщика или shell-скрипта.-rn "1-3,7,12-14" для произвольных диапазонов страниц. -NumCopy 25 задаёт количество копий. -d vertical включает двустороннюю печать по длинному краю (типичный "книжный" переплёт); -d horizontal — двусторонняя по короткому краю ("календарный" переплёт). -ps A4/Letter/Legal принудительно задаёт размер бумаги; -cl monochrome принудительно выводит чёрно-белый результат даже на цветном принтере.PDFPrinterX.exe с настроенными вами именем принтера и флагами. Это канонический сценарий для складов (авто-печать упаковочных листов), бухгалтерии (авто-печать счетов) и интеграций с ERP (авто-печать экспортов). Флаг файла-очереди -list покрывает конвейеры с воркерами, в которых другой процесс пишет очередь печати.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.