Библиотека .NET для набора документов (PDF или аналогичный)?

РЕДАКТИРОВАТЬ: Лучшее объяснение: Перед тем как назначить вознаграждение за этот вопрос, я хочу более четко указать, что мне нужно:

Мне нужна библиотека .NET для создания документов для печати. Пользователи должны иметь возможность распечатать тот же самый документ, который они видят, используя мое приложение или внешний инструмент (например, Adobe Acrobat reader). Это не обязательно должна быть библиотека для создания PDF-документов, подойдет любой формат документа, удовлетворяющий вышеуказанному условию.

Мне нужна библиотека для поддержки следующих сценариев:

Сценарий 1:

  1. Я создаю текст с некоторым шрифтом и цветом.
  2. Я запрашиваю у библиотеки ширину, если этот текст напечатан.
  3. I вычислить позицию (координаты [X, Y] на странице) этого текста на основе информации из 2. и иметь библиотеку для печати в этой позиции на странице.

Сценарий 2:

  1. Я создаю текст с некоторыми его части в верхнем индексе. Все части текста (обычный и надстрочный) имеют один и тот же (но переменный) шрифт.
  2. Я спрашиваю библиотеку, какова ширина этого текста при печати. Я получаю правильный ответ, который также учитывает кернинг между обычным текстом и надстрочным индексом.
  3. Я вычисляю положение (координаты [X, Y]) на странице, на которой этот текст должен быть напечатан (используя его ширину из шаг 2.). Я позволил библиотеке распечатать его в этой позиции. Напечатанный на странице, он имеет точно такую ​​же ширину, которая была возвращена библиотекой на предыдущем шаге.

Примечание для второго сценария: У меня есть текст с некоторыми частями в верхнем индексе - пример AAA {v-верхний индекс} BBB (где текст в фигурных скобках {} является надстрочным). Библиотека должна иметь возможность печатать этот текст, используя правильный кернинг . Без правого кернинга между последним A и первым верхним индексом v будет такой же промежуток, как и между последним верхним индексом t и первым B . Для пользователя это будет выглядеть так, как будто между A и надстрочным индексом v есть пробел, но без пробела после последней буквы надстрочного индекса. Так текст будет выглядеть некрасиво. Если библиотека должна обрабатывать это правильно, у нее будет метод для печати всего текста AAA {v-superscript text} BBB сразу с указанием того, что часть этого текста находится в верхнем индексе. Тогда будет использоваться правильный кернинг между обычным текстом и надстрочным индексом.

Сценарий 3:

  1. Я хочу напечатать изображение, состоящее из линий, кружков, закрашенных кружков, букв и кривых Безье в определенной точке страницы. Мне нужно указать ширину линий и кругов. Все формы должны быть напечатаны с точностью до пикселя.

Библиотека должна быть бесплатной, а не GPL (LGPL в порядке). Есть ли что-то, что позволяет мне делать то, что мне нужно? Можно ли это сделать с помощью iTextSharp (версия 4.1.6, то есть LGPL, а не AGPL)? Или, возможно, с фиксированным документом? Спасибо за любые предложения.


Исходный вопрос:

Мне нужно набрать сложные документы в приложении .NET (C #) для пользователя. В основном эти документы используются для печати.

Документы будут содержать текст и простую сгенерированную графику. Макет текста и графики будет сложным и должен быть рассчитан (другими словами, положение текста в документе должно контролироваться моим кодом, это не будет выполняться автоматически выбранной библиотекой).

Вот мои требования к API:

  1. функция, которая возвращает точную ширину для данной строки и заданного шрифта, в котором должен отображаться текст
  2. возможность позиционировать текст в точном положении на странице
  3. иметь текст с некоторой его частью в суперсценарии
  4. функция для получить точную ширину некоторого текста, часть которого находится в надстрочном индексе
  5. , возможность добавлять изображения или даже лучший вариант для рисования простой графики (линия заданной толщины, закрашенный круг заданного радиуса / диаметра)

Не имеет быть библиотекой для создания PDF-документов - подойдет любой другой формат документа «что вы видите, то и будет напечатано». Если есть компонент WPF, который может отображать такие документы, это преимущество. Я знаю, что есть iTextSharp, но с помощью iTextSharp выполнить 4. требование непросто. Конечно, некоторая библиотека для создания PDF-файлов, удовлетворяющая вышеуказанным требованиям, тоже будет отличным решением.

Спасибо за ЛЮБЫЕ предложения, я также рад предоставить подробности или более четкие объяснения.

8
задан Rasto 22 April 2011 в 09:58
поделиться