Search
Write a publication
Pull to refresh
3
0
Роберт Макалкин @Apitron

User

Send message

Мы Apitron.PDF.Kit сделали поддержку PDF2.0 но, почему то, среди пользователей данный формат не особо популярен.

Я использую гибкий и удобный Apitron.PDF.Kit for .NET для редактирования, извлечения текста и создания PDF ( с возможностью добавления своего стиля каждому элементу ). Бесплатная книжка.

Для создания подобной таблицы:
// создали менеджер ресурсов и добавили картинки
ResourceManager resourceManager = new ResourceManager();
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("Left", "left.png"));
resourceManager.RegisterResource(new Apitron.PDF.Kit.FixedLayout.Resources.XObjects.Image("Right", "right.png"));

// создали ПДФ документ  со своим стилем
FlowDocument document = new FlowDocument { Margin = new Thickness(18) };

// общий стиль для данных в ячейках таблицы
document.StyleManager.RegisterStyle("grid#iApitron", new Style { InnerBorderColor = RgbColors.LightGray, Align = Align.Center, Font = new Font(StandardFonts.Helvetica, 12) });            
            
// добавляем стиль для заголовка таблицы
document.StyleManager.RegisterStyle("textblock.h1", new Style { Font = new Font(StandardFonts.HelveticaBold, 20) });

// сам грид
Grid grid = new Grid(Length.FromPercentage(33), Length.FromPercentage(33), Length.FromPercentage(33)) { Id = "iApitron" };

// добавляем строки таблицы с данными
grid.Add(new GridRow(Section.Empty, new TextBlock("Ну, заяц!"){Class="h1"}, Section.Empty));
grid.Add(new GridRow(new TextBlock("Col 1 Row 1"),new TextBlock("Col 2 Row 1"),new TextBlock("Col 3 Row 1")));
grid.Add(new GridRow(new TextBlock("Col 1 Row 2"),new TextBlock("Col 2 Row 2"),new TextBlock("Col 3 Row 2")));
grid.Add(new GridRow(new Image("Left"),new TextBlock("Col 2 Row 3"),new Image("Right")));
document.Add(grid);

 // сохраним документ
using (Stream stream = File.Create("Apitron_table.pdf"))
{
     document.Write(stream, resourceManager, new PageBoundary(Boundaries.Ledger));
}
Для простого текстового формата, Adobe явно перемудрил. Bruno Lowagie конечно проделал большую работу, но зачем всё так усложнять? Мне проще понять структуру PDFa, чем изучить API iTexta которым она обёрнута.
Что делать когда поверх текста нарисована аннотация или буквы с наклоном или по спирали, или в документе несколько слоёв? Я тоже решал подобную задачу — найти текст в документе, и выделить его цветом. У меня, получилось как-то так, найденый текст выделен жёлтеньким. Apitron.PDF.Rasterizer
Видимо, и Ваш и мой бизнес реально успешен, Вам хватило времени написать такую длинную статью, а мне её прочитать. Успехов!
Поискав, понял, что на сегодняшний день такой возможности нет.
Как можно приложению получить доступ к системным шрифтам?
Как поправляют меня японские коллеги, в примере использовался tate gumi (режим вертикальной записи иероглифов и соответствующие правила записи), а не Kinsoku Shori — правила переноса букв на новую строку, и случаи неразделимых последовательностей символов.
PDFCreator также содержит ссылку на gsdll32.dll (Ghostscript)
Я попробовал ваше приложение, конвертировать в JPEG тестовый файл не получилось. Странно, что приложение не выдало ошибок, молча проглотив ошибки.

Information

Rating
Does not participate
Date of birth
Registered
Activity