Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430

Печать PDF в файл

06.02.2023, 13:34. Показов 1927. Ответов 17

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!

Нужно html файл который ранее сформирован моей программой и сохранён на диск, сохранить как PDF.
Делаю так:

C#
1
2
3
4
5
6
7
System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
pd.PrinterSettings.PrinterName = "Microsoft Print to PDF";
pd.DocumentName = Application.LocalUserAppDataPath + "\\ReportWeldXHTML.html";
pd.PrinterSettings.PrintToFile = true;
pd.PrinterSettings.PrintFileName = "666.pdf";
pd.PrinterSettings.PrintRange = System.Drawing.Printing.PrintRange.AllPages;            
pd.Print();
Документ "666.pdf" создаётся, но он пустой. Подскажите как правильно это сделать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2023, 13:34
Ответы с готовыми решениями:

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

Печать pdf файлов
Добрый день. Хочу научиться печатать pdf файлы с приложения, подскажи, пожалуйста, хорошую библиотеку для этого)

Печать PDF на Konica Minolta
Привет всем! Пришло веселое время экономии и начальство вспомнило про наличие в офисе дорогой игрушки. Ранее все тиражирование материалов...

17
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
11.02.2023, 22:45
Платные инструменты для конвертации HTML и прочих форматов в PDF существуют не просто так.
pd.DocumentName это не источник данных а название документа в окне статуса печати, а источником данных является событие pd.PrintPage где нужно самому реализовывать всю логику рисования.
0
Эксперт .NET
 Аватар для Usaga
14088 / 9306 / 1348
Регистрация: 21.01.2016
Сообщений: 34,953
12.02.2023, 12:44
Цитата Сообщение от nicolas2008 Посмотреть сообщение
Платные инструменты для конвертации HTML и прочих форматов в PDF
Ну, как минимум HTML->PDF можно конвертить бесплатно. Мы в проект для этих целей используем Puppeteer Sharp + PagedJs. Вся связка обошлась нам в $0 (без учёта скидки) и работает на ура.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
12.02.2023, 14:07
Usaga, бесплатные инструменты существует с этим вроде никто и не спорит. Можно и самому примитивный конвертер набросать. Вопрос только в качестве и функцинале учитывая сложность задачи.
Если работает на ура то тут можно только порадоваться за прогресс бесплатного ПО.
0
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
16.02.2023, 21:01  [ТС]
Если делать то что я пытаюсь сделать программно, сделать в ручную, то сохраняется PDF так как мне надо.
Просто для удобства хотелось сделать так, что при нажатии кнопки, нужно было ввести имя для сохранения и все.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,324
16.02.2023, 21:11
Лучший ответ Сообщение было отмечено mutex как решение

Решение

mutex,
Чтобы сохранить HTML-файл в формате PDF с помощью C#, можно использовать библиотеку iTextSharp. Ниже приведен пример кода:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
 
// ...
 
string htmlFilePath = Application.LocalUserAppDataPath + "\\ReportWeldXHTML.html";
string pdfFilePath = "666.pdf";
 
// Создаем документ PDF
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
 
// Создаем объект PdfWriter для записи в файл
PdfWriter.GetInstance(pdfDoc, new FileStream(pdfFilePath, FileMode.Create));
 
// Открываем документ
pdfDoc.Open();
 
// Читаем HTML-файл
using (TextReader reader = new StreamReader(htmlFilePath))
{
    // Создаем объект XMLWorkerHelper для конвертации HTML в PDF
    XMLWorkerHelper.GetInstance().ParseXHtml(
        new PdfWriter(pdfDoc),
        pdfDoc,
        reader
    );
}
 
// Закрываем документ
pdfDoc.Close();
В этом примере мы сначала создаем документ PDF с помощью класса Document, затем создаем объект PdfWriter, указывая файл, в который нужно сохранить PDF. Затем мы открываем документ и используем XMLWorkerHelper для конвертации HTML в PDF. Наконец, мы закрываем документ.

Обратите внимание, что для использования библиотеки iTextSharp необходимо установить пакет NuGet. Вы можете сделать это, открыв "Менеджер пакетов NuGet" и вводя команду "Install-Package iTextSharp" в консоли NuGet.
1
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
16.01.2024, 10:06  [ТС]
XMLWorkerHelper не существует в текущем контексте.
Из какого пространства имён этот класс?
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
16.01.2024, 10:12
mutex,
Цитата Сообщение от UseMuse Посмотреть сообщение
можно использовать библиотеку iTextSharp
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 962
16.01.2024, 14:00
пока тема еще жива хотел бы уточнить если HTML страничка состоит из текста, картинок и таблиц, то можно ли как-то красиво разбивать на страницы HTML, чтобы картинки и таблицы по возможности не резались?

если кто-то решал похожую задачу, то хотя бы подскажите общий алгоритм.
0
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
16.01.2024, 16:43  [ТС]
Я установил NuGet пакет iTextSharp версии 5.5.13.3.
и

C#
1
2
using iTextSharp.text;
using iTextSharp.text.pdf;
добавил.

Все равно XMLWorkerHelper не существует в текущем контексте.
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
16.01.2024, 19:29
Цитата Сообщение от mutex Посмотреть сообщение
Все равно XMLWorkerHelper не существует в текущем контексте.
Ну как так не существует, у всех есть у вас нет! А это что тогда?
C#
1
iTextSharp.tool.xml.XMLWorkerHelper
0
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
17.01.2024, 08:26  [ТС]
Нет у меня пространства iTextSharp.tool
Есть только
iTextSharp.awt
iTextSharp.testutils
iTextSharp.text
iTextSharp.xmp

Может не тот пакет поставил.
Кто должен быть автор пакета и как он точно называется?
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
17.01.2024, 08:42
mutex,
Миниатюры
Печать PDF в файл  
1
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
17.01.2024, 10:37  [ТС]
Я поставил самый верхний в списке.
Установил который нужен, но теперь почему то ругается на
new PdfWriter(pdfDoc)

"PdfWriter" не содержит конструктор, который принимает аргументы 1.
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
17.01.2024, 10:49
mutex,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Создаем объект PdfWriter для записи в файл
var wr = PdfWriter.GetInstance(pdfDoc, new FileStream(pdfFilePath, FileMode.Create));
 
 
// Читаем HTML-файл
    using (TextReader reader = new StreamReader(htmlFilePath))
    {
        // Создаем объект XMLWorkerHelper для конвертации HTML в PDF
        
        XMLWorkerHelper.GetInstance().ParseXHtml(wr,
            pdfDoc,
            reader
        );
    }
0
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
21.01.2024, 18:40  [ТС]
А как сделать чтобы текст на русском конвертировался в PDF ?
0
312 / 143 / 77
Регистрация: 23.08.2015
Сообщений: 455
23.01.2024, 16:46
Цитата Сообщение от mutex Посмотреть сообщение
А как сделать чтобы текст на русском конвертировался в PDF ?
Попробуйте добавить:
C#
1
TextReader reader = new StreamReader(htmlFilePath, Encoding.UTF8)
где Encoding.UTF8 - кодировка исходного html
0
37 / 35 / 7
Регистрация: 18.04.2009
Сообщений: 430
26.01.2024, 16:47  [ТС]
Чего то у меня вообще ничего не работает. В созданном PDF появляются две пустые страницы и все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2024, 16:47
Помогаю со студенческими работами здесь

Печать страниц из PDF на разные принтеры в зависимости от размера и цветности
Доброго времени суток уважаемые форумчане. Объясню вкратце суть проблемы. Имеется .pdf файл ( ~50 страниц ), в нем страницы разных...

Печать bitmap в pdf файл
Всем привет. Имеется список битмапов (изображений со сканера). Необходимо этот список поместить в pdf-файл. Нашёл на просторах инета...

Не могу открыть в PDF читалке в форме PDF файл имя которого хранится в БД Access
в приложении есть поиск он ищет в БД(1 таблица, 2 поля) и если в поисковую строку вводится название проблемы схожее с имеющейся в БД(1...

Печать выбранного pdf
Добрый день, мне необходимо реализовать возможность печати выбранного на компе pdf файла, кто может помочь? к примеру, в коде записан...

[Mono] Печать PDF файлов
Добрый день! Подскажите, каким образом можно распечатать PDF файл? Использую этот код в Windows: ProcessStartInfo info =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru