Я попробовал несколько вариантов кода для кода C#/>net 6.0, приведенного ниже. Все они возвращают код 200/Успех, но задания не печатаются. Принтер указан как поддерживающий IPP Everywhere https://www.pwg.org/ipp/everywhere.html. На принтере включен IP-шлюз. Я также смог создавать и печатать на том же принтере через локальный принтер IPP, используя универсальный драйвер PostScript для Windows. Есть идеи, почему мой код без драйверов не работает?
Следующий код запускается и отправляет запрос на печать. Он возвращает 200/Успех/ОК, но задание не печатается. Есть ли какой-то стандартный рецепт заголовка, который должен работать на любом принтере, поддерживающем IPP (OKI C844)?
public async Task SubmitPrintJob(string filePath) {
string paperTray = "tray-1";
using (HttpClient httpClient = new HttpClient())
{
try
{
// IPP header
byte[] ippHeader = new byte[] {
0x01, 0x01, // version number
0x00, 0x02, // operation-id (Print-Job)
0x00, 0x00, 0x00, 0x01, // request-id
0x01, 0x47, 0x00, 0x11, // operation-attributes-tag + charset attributes
0x75, 0x73, 0x2D, 0x61, 0x73, 0x63, 0x69, 0x69,
0x00, 0x44, 0x00, 0x15,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2D, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74,
0x00, 0x05, 0x75, 0x74, 0x66, 0x2D, 0x38,
0x44, 0x00, 0x12, // document-format tag + length of the following "application/pdf" string
0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x70, 0x64, 0x66, 0x00, 0x03, 0x00
};
// Read PDF file bytes
byte[] pdfBytes = await File.ReadAllBytesAsync(filePath);
// Concatenate IPP header and PDF bytes
byte[] requestData = new byte[ippHeader.Length + pdfBytes.Length];
Buffer.BlockCopy(ippHeader, 0, requestData, 0, ippHeader.Length);
Buffer.BlockCopy(pdfBytes, 0, requestData, ippHeader.Length, pdfBytes.Length);
// Create HttpContent
var content = new ByteArrayContent(requestData);
// Send POST request
HttpResponseMessage response = await httpClient.PostAsync(printerUri, content);
// Check response
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Print job sent successfully.");
}
else
{
Console.WriteLine($"Failed to send print job: {response.StatusCode}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/771 ... print-jobs
Отправка заданий печати PDF без драйверов ⇐ C#
Место общения программистов C#
1736012546
Anonymous
Я попробовал несколько вариантов кода для кода C#/>net 6.0, приведенного ниже. Все они возвращают код 200/Успех, но задания не печатаются. Принтер указан как поддерживающий IPP Everywhere https://www.pwg.org/ipp/everywhere.html. На принтере включен IP-шлюз. Я также смог создавать и печатать на том же принтере через локальный принтер IPP, используя универсальный драйвер PostScript для Windows. Есть идеи, почему мой код без драйверов не работает?
Следующий код запускается и отправляет запрос на печать. Он возвращает 200/Успех/ОК, но задание не печатается. Есть ли какой-то стандартный рецепт заголовка, который должен работать на любом принтере, поддерживающем IPP (OKI C844)?
public async Task SubmitPrintJob(string filePath) {
string paperTray = "tray-1";
using (HttpClient httpClient = new HttpClient())
{
try
{
// IPP header
byte[] ippHeader = new byte[] {
0x01, 0x01, // version number
0x00, 0x02, // operation-id (Print-Job)
0x00, 0x00, 0x00, 0x01, // request-id
0x01, 0x47, 0x00, 0x11, // operation-attributes-tag + charset attributes
0x75, 0x73, 0x2D, 0x61, 0x73, 0x63, 0x69, 0x69,
0x00, 0x44, 0x00, 0x15,
0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2D, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74,
0x00, 0x05, 0x75, 0x74, 0x66, 0x2D, 0x38,
0x44, 0x00, 0x12, // document-format tag + length of the following "application/pdf" string
0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x70, 0x64, 0x66, 0x00, 0x03, 0x00
};
// Read PDF file bytes
byte[] pdfBytes = await File.ReadAllBytesAsync(filePath);
// Concatenate IPP header and PDF bytes
byte[] requestData = new byte[ippHeader.Length + pdfBytes.Length];
Buffer.BlockCopy(ippHeader, 0, requestData, 0, ippHeader.Length);
Buffer.BlockCopy(pdfBytes, 0, requestData, ippHeader.Length, pdfBytes.Length);
// Create HttpContent
var content = new ByteArrayContent(requestData);
// Send POST request
HttpResponseMessage response = await httpClient.PostAsync(printerUri, content);
// Check response
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Print job sent successfully.");
}
else
{
Console.WriteLine($"Failed to send print job: {response.StatusCode}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77100269/sending-driverless-pdf-print-jobs[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия