2015-05-13 11 views
0

Я делаю утилиту для грамматического создания документа и его печати.Утилита Java для печати PDF

Я хочу извиниться, я не очень хорошо сформулировать это и может быть некоторая путаница, пожалуйста, обнажить над со мной :(

Этот проект в основном для создания удобной утилиты для создания документов в вашем программа и печать, а также в качестве учебного опыта.

Он использует объекты, которые я преобразовывают в Markdown, как его легко работать, я преобразовать его в HTML, как его собираются использовать в веб-форме.

Проблема возникает, когда я хочу, чтобы программа печатала этот HTML-файл, который я теперь создал для PDF.

Я искал решение в течение очень долгого времени, но пока не нашел результатов, все, что я нашел, было либо устаревшим, и заполнено ошибками, либо просто не могло делать то, что я хотел.

Я пробовал iText, поскольку это кажется самым популярным выбором, но, как указано выше, все, что я нашел, устарело и больше не полезно, главным образом потому, что классы, о которых они говорят, больше не существуют.

То, что я хочу, в конечном итоге является независимостью от других библиотек, поэтому это моя конечная цель, но пока я хочу, чтобы напечатать локально сохраненный HTML-файл в формате PDF, он должен быть совместимым с CSS.

В качестве дополнительной вещи, если кто-нибудь может указать мне в сторону изучения того, как сделать MarkDown для HTML и печатать HTML в PDF, я был бы более чем счастлив.

Edit 1: Stephan C pointet вопрос является слишком широким и трудно ответить, я постараюсь объяснить:

Главное, что я хочу, чтобы напечатать файл PDF с помощью файла HTML и CSS, который хранится на местном уровне.

Дополнительные решения Я бы хотел узнать, как закодировать это сам, а не реализовывать библиотеки, например markdown4j и iText. Да, я знаю, что это много, но, как сказано, это опыт обучения для меня.

+0

Я все равно поеду с решением iText. Он обладает всеми необходимыми функциями. Не знаю, какая часть его вам трудно реализовать .... – MaVRoSCy

+3

Хорошо, вот серьезный комментарий. Вы сомневаетесь слишком широко и слишком непонятно/противоречиво. Вы по-разному спрашиваете, как «печатать» PDF, конвертировать HTML в PDF, «хранить» HTML в формате PDF (что не имеет смысла). Тогда вы говорите, что хотите «независимости» для библиотек (что не имеет смысла). Затем вы спрашиваете о преобразовании Markdown в HTML. Слишком много противоречивых подтекстов здесь для правильного ответа. Если вы хотите, чтобы люди серьезно относились к вашему вопросу, вам необходимо будет решить эти проблемы. –

+0

Привет, Саймон, вы пробовали все библиотеки, описанные здесь: http://stackoverflow.com/questions/6118635/what-is-the-best-pdf-open-source-library-for-java? Что с ними не сработало? Проект Flying Saucer, похоже, делает XHTML для выхода в PDF. –

ответ

0

Печать непосредственно из HTML в PDF также может быть хуже, чем использование iText или других библиотек.
Я только что сделал iText PDF, не используя низкоуровневые классы PDF, но скомпилировав из него PDF-форму.
Если вам нужно заполнить форму PDF, вы можете использовать iText, как показано ниже.

  1. Сделайте свой html-форму в формате PDF. (Акробат или другое свободное программное обеспечение)
  2. Используйте IText классов AcroFields, чтобы получить поля формы PDF (вы получите их по именам или вы можете вернуть карту полей с помощью AcroFields.getFields();
  3. Compile необходимых данных с помощью AcroFields .setFields() или .setField();
  4. PdfReader класс позволяет открыть существующий PDF (шаблон)
  5. PdfStamper позволяют записать поток в другой (результат)
    Добавление изображений и других бинарных материал очень прост!

Таким образом, вы можете сделать это быстро, и макеты будут быстрыми и хорошими. Предел в том, что вам нужно столько шаблонов, сколько требуется вам. (если у вас есть поля, в некоторых случаях многие из других только один, вам нужны два шаблона). Для статического количества полей это хорошее решение. Надеюсь, это поможет.

0

Посмотрите на Converting HTML files to PDF. В нем есть пример кода для использования с iText, а также другие предложения. Если вы столкнулись с проблемами с предложенным выше предложением, укажите здесь. Измените свой исходный вопрос или задайте новый вопрос.