Для будущих читателей этого поста: если коммерческая библиотека является допустимым выбором, это можно сделать с помощью Amyuni PDF Creator ActiveX (Delphi, C++, VB, PHP) или с Amyuni PDF Creator .Net (C#, VB.net и т. д.), изменив свойство PaperBin объекта объект страницы.
Возможные значения этого свойства можно найти в документации по структуре DEVMODE в MSDN, примеры: DMBIN_UPPER — 0x0001, DMBIN_LOWER — 0x0002, DMBIN_AUTO — 0x0007.
Код на C# будет выглядеть так:
Amyuni.PDFCreator.IacDocument pdfDoc = new Amyuni.PDFCreator.IacDocument();
using(FileStream fs = File.Open("MyDocument.pdf", FileMode.Open))
{
pdfDoc.Open(fs, "");
}
const int DMBIN_MANUAL = 4;
for( int pageNumber = 1; i <= pdfDoc.PageCount; i++)
{
pdfDoc.GetPage(pageNumber).AttributeByName("PaperBin").Value = DMBIN_MANUAL;
}
pdfDoc.Print("My Laser Printer", False);
Для PHP вам нужно будет использовать версию ActiveX и создать документ, используя ProgID элемента управления ActiveX:
$pdfdoc = new COM("PDFCreactiveX.PDFCreactiveX");
Обратите внимание, что этот подход касается печати на определенный лоток с использованием библиотеки, как упоминалось в других ответах, невозможно сохранить эту информацию в самом файле PDF, чтобы ее можно было использовать другими приложениями.
Отказ от ответственности: в настоящее время я работаю в Amyuni Technologies.
person
yms
schedule
16.05.2013