РЕДАКТИРОВАТЬ: Лучшее объяснение: Прежде чем установить вознаграждение за этот вопрос, я хочу яснее указать, что мне нужно:
Мне нужна библиотека .NET для создания документов для печати. Пользователи должны иметь возможность распечатать точно такой же документ, который они видят, либо с помощью моего приложения, либо с помощью внешнего инструмента (например, Adobe Acrobat Reader). Это не обязательно должна быть библиотека для создания PDF-документов, подойдет любой формат документа, удовлетворяющий вышеуказанному условию.
Мне нужна библиотека для поддержки следующих сценариев:
Сценарий 1:
- Я создаю текст в некотором шрифте и цвете.
- Я спрашиваю у библиотеки ширину, если этот текст напечатан.
- Я вычисляю позицию (координаты [X, Y] на странице) этого текста на основе информации из 2. и имею библиотеку для печати в этой позиции на странице.
Сценарий 2:
- Я создаю текст с некоторыми его частями в надстрочном индексе. Все части текста (обычный и надстрочный) набраны одинаковым (но переменным) шрифтом.
- Спрашиваю у библиотеки, какой ширины будет этот текст при печати. Я получаю правильный ответ, который также учитывает kerning между обычным текстом и надстрочным индексом.
- Я вычисляю положение (координаты [X, Y]) на странице, где этот текст должен быть напечатан (используя его ширину из шага 2). Я позволил библиотеке напечатать его в этой позиции. Напечатанный на странице, он имеет именно ту ширину, которую вернула библиотека на предыдущем шаге.
Примечание для второго сценария: у меня есть текст с некоторыми частями в надстрочном индексе — пример AAA{v-superscript text}BBB
(где текст в {}
фигурных скобках является надстрочным индексом). Библиотека должна иметь возможность печатать этот текст, используя правильный кернинг. Без правого кернинга между последним A
и первым надстрочным индексом v
будет такой же разрыв, как и между последним надстрочным индексом t
и первым B
. Для пользователя это будет выглядеть так, будто между A
и надстрочным индексом v
есть пробел, но после последней надстрочной буквы пробела нет. Так текст будет выглядеть некрасиво. Если библиотека должна обрабатывать это правильно, у нее будет метод для печати всего текста AAA{v-superscript text}BBB
сразу с указанием того, что часть его находится в надстрочном индексе. Тогда он будет использовать правильный кернинг между обычным текстом и надстрочным индексом.
Сценарий 3:
- Я хочу напечатать изображение, состоящее из линий, кругов, закрашенных кругов, букв и кривых Безье в точной точке на странице. Мне нужно указать ширину линий и кругов. Все формы должны быть напечатаны с точностью до пикселя.
Библиотека должна быть бесплатной, а не GPL (LGPL в порядке). Есть ли что-то, что позволяет мне делать то, что мне нужно? Можно ли это сделать с помощью iTextSharp (версия 4.1.6, то есть LGPL, а не AGPL)? Или, возможно, с фиксированным документом? Спасибо за любые предложения.
Исходный вопрос:
Мне нужно набрать сложные документы в приложении .NET (C#) для пользователя. Основное использование этих документов будет для печати.
Документы будут содержать текст и простую сгенерированную графику. Компоновка текста и графики будет сложной и должна быть вычислена (другими словами, положение текста в документе должно контролироваться моим кодом, это не будет сделано автоматически выбранной библиотекой).
Вот мои требования к API:
- функция, которая возвращает точную ширину для данной строки и заданного шрифта, в котором должен отображаться текст
- возможность позиционировать текст в точное положение на странице
- иметь текст с некоторой его частью в суперсценарии
- функция для получения точной ширины некоторого текста, часть которого находится в надстрочном индексе
- возможность добавлять изображения или, что еще лучше, рисовать простую графику (линия заданной толщины, закрашенный круг заданного радиуса/диаметра)
Это не обязательно должна быть библиотека для создания PDF-документов — подойдет любой другой формат документа «что видишь, то и напечатаешь». Если есть компонент WPF, который может отображать такие документы, это преимущество. Я знаю, что существует iTextSharp, но выполнить 4. требование с помощью iTextSharp непросто. Конечно, некоторая библиотека для создания PDF-файлов, которая удовлетворяет вышеуказанным требованиям, также будет отличным решением.
Спасибо за ЛЮБЫЕ предложения, я также рад предоставить подробную информацию или более четкое объяснение.
FixedPage
, но я до сих пор не знаю, как создатьFixedPage
с некоторым содержимым в .NET. Мой вопрос stackoverflow.com/questions/4634445/how-to -work-with-fixedpage все еще остается без ответа. - person Rasto   schedule 12.04.2011