Мне нужно отправить PDF-документ напрямую на удаленный сетевой принтер без каких-либо изменений, используя кнопку «Печать».
Для большинства приложений это невозможно с помощью кнопки "Печать", потому что приложение, которое вы используете, пытается установить соединение с драйвером принтера, который не является необработанным, тогда как вы явно хотите обойти эти возможности.  Вместо этого вы должны отправить необработанный поток непосредственно на принтер.  Чтобы добиться этого в Windows (БЕЗ использования кнопки печати)
- Поделитесь принтером в сети.
 
- Из 
cmd (или PowerShell и т.д.): echo sample.pdf > \\computer\printer 
Или из языка программирования, такого как JScript:
"use strict";
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile("sample.pdf", "\\\\computer\\printer", true);
Заставить приложение вести себя таким образом не будет обычным делом.  Большинство приложений, способных открывать и отображать PDF, не смогут обойти драйвер.  Это только по соглашению.  Базовые языки (например, C++, Java) имеют методы для обработки необработанных данных, просто это не то, что обычно ассоциируется с кнопкой "Печать", которую вы описываете.
  В Ubuntu я просто использую Generic / Raw Queue driver , и все в порядке.
Какое приложение в операционной системе Ubuntu позволяет это?  Вообще говоря, CUPS будет использовать Ghostscript и будет переведен аналогично драйверу Microsoft PDF.  Я бы оспорил утверждение о том, что отправляемые данные PDF являются "неизмененными" в Ubuntu.  Более вероятно, что это модифицировано, но что модифицированная версия просто более желательна.  Если вы правы и поток байтов не изменен, это больше похоже на скрытую функцию CUPS, чем на проблему с WinSpool.