C# – iText7 – водяные знаки (штамп) HTML поверх PDF ⇐ C#
C# – iText7 – водяные знаки (штамп) HTML поверх PDF
Это оказалось довольно сложно, поскольку я, будучи новичком в C#, не могу уяснить себе это.
У меня есть эта функция:
... var font = PdfFontFactory.CreateFont("assets/fonts/default.ttf", PdfEncodings.WINANSI, PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED); // всегда не ноль шрифт.SetSubset(ложь); документ.AddFont(шрифт); вар fs = новый iText.Layout.Font.FontProvider(); fs.AddFont("assets/fonts/default.ttf"); fs.AddStandardPdfFonts(); элементы var = HtmlConverter.ConvertToElements(new MemoryStream(watermark.Content), новый ConverterProperties().SetFontProvider(fs)); Таблица table = новая таблица (UnitValue.CreatePercentArray (new float [] { 4, 1, 3 })). UseAllAvailableWidth (); // возможны изменения, взято из официальной документации вар ячейка = новая ячейка (); cell.SetFont(шрифт).Add((IBlockElement)elements[0]); таблица.AddCell(ячейка); вар страница = документ!.GetFirstPage(); // всегда не ноль PdfCanvas холст = новый PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), doc.Document); новый Canvas(canvas, page.GetPageSize()).Add(cell) .Закрывать(); вернуть документ; Закрытие документов перед преобразованием их в байты возвращает следующую ошибку: Все шрифты должны быть встроены. Это не {0}, хотя я изо всех сил стараюсь использовать и встраивать его повсюду. В чем может быть проблема?
Некоторые моменты:
[*]Эта функция должна получить HTML и поставить водяной знак поверх PDF/A-3. Он не заботится о конкретных HTML-тегах, шрифтах и других включенных вещах — точно так же, как отпечаток изображения визуализированного HTML на первой странице PDF-файла. [*]Я не могу регулировать или контролировать HTML-код, который я получаю по запросам. Я не могу самостоятельно менять или устанавливать шрифты программно и вручную. Я не знаю, какие шрифты я получу. Я бы хотел, чтобы HtmlConverter позволял устанавливать предопределенный шрифт для всего документа, ну да ладно. [*]Лучше всего конвертировать HTML в элементы и использовать таблицу с холстом. Другим способом может быть преобразование HTML в PNG, что делает жизнь счастливее и проще, но на самом деле это невозможно в C # без внутренней обработки всей страницы, что, по моему мнению, глупо для такой задачи.
Это оказалось довольно сложно, поскольку я, будучи новичком в C#, не могу уяснить себе это.
У меня есть эта функция:
... var font = PdfFontFactory.CreateFont("assets/fonts/default.ttf", PdfEncodings.WINANSI, PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED); // всегда не ноль шрифт.SetSubset(ложь); документ.AddFont(шрифт); вар fs = новый iText.Layout.Font.FontProvider(); fs.AddFont("assets/fonts/default.ttf"); fs.AddStandardPdfFonts(); элементы var = HtmlConverter.ConvertToElements(new MemoryStream(watermark.Content), новый ConverterProperties().SetFontProvider(fs)); Таблица table = новая таблица (UnitValue.CreatePercentArray (new float [] { 4, 1, 3 })). UseAllAvailableWidth (); // возможны изменения, взято из официальной документации вар ячейка = новая ячейка (); cell.SetFont(шрифт).Add((IBlockElement)elements[0]); таблица.AddCell(ячейка); вар страница = документ!.GetFirstPage(); // всегда не ноль PdfCanvas холст = новый PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), doc.Document); новый Canvas(canvas, page.GetPageSize()).Add(cell) .Закрывать(); вернуть документ; Закрытие документов перед преобразованием их в байты возвращает следующую ошибку: Все шрифты должны быть встроены. Это не {0}, хотя я изо всех сил стараюсь использовать и встраивать его повсюду. В чем может быть проблема?
Некоторые моменты:
[*]Эта функция должна получить HTML и поставить водяной знак поверх PDF/A-3. Он не заботится о конкретных HTML-тегах, шрифтах и других включенных вещах — точно так же, как отпечаток изображения визуализированного HTML на первой странице PDF-файла. [*]Я не могу регулировать или контролировать HTML-код, который я получаю по запросам. Я не могу самостоятельно менять или устанавливать шрифты программно и вручную. Я не знаю, какие шрифты я получу. Я бы хотел, чтобы HtmlConverter позволял устанавливать предопределенный шрифт для всего документа, ну да ладно. [*]Лучше всего конвертировать HTML в элементы и использовать таблицу с холстом. Другим способом может быть преобразование HTML в PNG, что делает жизнь счастливее и проще, но на самом деле это невозможно в C # без внутренней обработки всей страницы, что, по моему мнению, глупо для такой задачи.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение