PDF-файлы ручной работы [дубликаты]

Раньше была и остается возможность для программы выводить (инкапсулированный) постскриптум, просто записывая несколько строк в текстовый файл. Чтобы нарисовать «х», можно, например, написать

%!PS
%%BoundingBox: 0 0 100 100
newpath 100 0 moveto 0 100 lineto stroke
newpath 0 0 moveto 100 100 lineto stroke
showpage

Есть ли эквивалентный метод для вывода PDF?

Изменить

Пожалуйста, предложите неэлегантный, обычный или роскошный способ вывода PDF.

Неэлегантным методом будет тот, который все еще проходит мимо eps. Обычным будет тот, который аналогичен текстовому файлу eps выше. Роскошным методом будет удобный API/библиотека.

Изменить2

«Обычное» решение не зависит от платформы, но решение не относится ни к первой, ни к третьей категории. Итак, позвольте мне уточнить, что я ищу решение с использованием Java на Android.


person Calaf    schedule 03.05.2013    source источник
comment
Есть ли эквивалентный метод - Насколько эквивалентен? Вы, очевидно, можете написать файл PDF, если знаете синтаксис. Вы ищете более простой формат, который можно преобразовать в pdf?   -  person mbeckish    schedule 03.05.2013
comment
Формат PDF находится здесь: wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/   -  person Roger Rowland    schedule 03.05.2013
comment
В моей системе Debian есть epstopdf из пакета texlive-extra-utils. Некоторые версии pstopdf/ps2pdf, вероятно, также будут работать.   -  person twalberg    schedule 03.05.2013
comment
@twalberg Использование epstopdf не очень элегантно (как я упоминаю в измененном вопросе). Знаете ли вы, по крайней мере, возможно ли выполнить преобразование без выхода из оболочки? Например, можно ли использовать epstopdf через API?   -  person Calaf    schedule 03.05.2013
comment
@RogerRowland Спасибо за указатель. Почему-то я никогда не видел синих/красных/зеленых книг в pdf, хотя постскриптумные были у всех на полке.   -  person Calaf    schedule 03.05.2013
comment
Я всегда использую либхару. libharu.org   -  person tristan2468    schedule 03.05.2013
comment
@mbeckish Вероятно, излишне отказываться от собственного приложения для этой функции. Я надеялся, что может существовать хорошее решение, не зависящее от языка, но я вижу, что это требует слишком многого. Я изменяю вопрос, чтобы сделать его специфичным для платформы.   -  person Calaf    schedule 03.05.2013
comment
@mbeckish Если вас интересует хорошее решение с использованием C++, см. ответ, который я только что добавил к первому указанному вами вопросу (stackoverflow.com /a/16363006/704972).   -  person Calaf    schedule 03.05.2013
comment
@mbeckish Я видел вторую ссылку, которую вы цитируете, и был разочарован ответами в течение трех лет существования вопроса. Только теперь понятно, что реверс-инжиниринг формата pdf не нужен. Ответ Роджера Роуленда кажется лучшим.   -  person Calaf    schedule 03.05.2013
comment
@RogerRowland Пожалуйста, переместите свой комментарий, чтобы он стал ответом.   -  person Calaf    schedule 03.05.2013
comment
@RogerRowland Когда вы пишете этот ответ, я предлагаю вам указать копию ISO 32000-1 вместо ссылки в формате PDF. В конце концов, это настоящий стандарт... adobe.com/devnet/acrobat/ pdfs/PDF32000_2008.pdf   -  person mkl    schedule 03.05.2013
comment
возможный дубликат структуры файла PDF?   -  person mbeckish    schedule 03.05.2013
comment
Хорошо, ответ опубликован - спасибо всем за комментарии...   -  person Roger Rowland    schedule 03.05.2013


Ответы (3)


Как обсуждалось в многочисленных комментариях к вашему вопросу, стандарт ISO 32000-1 для формата файла PDF можно найти здесь. (Спасибо @mkl за обновленную ссылку).

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

person Roger Rowland    schedule 03.05.2013

Ну, если я правильно вас понял, я мог бы сделать что-то подобное в одном из своих приложений для Android.

Я реализовал предметно-ориентированный язык для интерактивных анкет, результаты которых извлекаются в формате pdf. Для создания pdf я использовал библиотеку с открытым исходным кодом iText. Таким образом, вы можете создать dsl и API между вашим dsl и библиотекой создания и обработки PDF, например iText. Однако я не знаю, интересует ли вас готовое решение или разработка чего-то с нуля, поэтому я не уверен, поможет ли это.

Вы можете найти код здесь github с более подробной информацией о dsl (например, синтаксис и т. д.).

А вот демонстрационное приложение в гугл плей.

person JahN EstaCado    schedule 03.05.2013
comment
Помимо вопроса, который я задаю здесь, я также ищу дизайн, который позволяет не дублировать код — другими словами, дизайн, который позволяет мне рисовать либо на холсте Android, либо на холсте pdf с тем же набором инструкции. Это не просто лень, но и помогает в обслуживании и т.д. Дизайн, выдающий какую-то промежуточную dsl, не тяжел. Трудная часть заключается в том, чтобы убедиться, что рендеринг остается интерактивным, когда вывод представляет собой холст Android. - person Calaf; 03.05.2013

PDF — это не простой текстовый формат, поэтому он не так уж и прост. Но интегрировать библиотеку Java PDF в ваше приложение не составит труда, см., например, iText.

person devconsole    schedule 03.05.2013