Могу ли я создать PDF-файл в Perl, используя текст на иврите и английском? - PullRequest
4 голосов
/ 08 октября 2009

Знаете ли вы, что модуль Perl PDF :: API2 может генерировать документы как на английском, так и на иврите? Я искал некоторое время и не могу найти способ обработки текста на языке справа налево.

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

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

Ответы [ 4 ]

1 голос
/ 08 октября 2009

Я не использую Perl и поэтому не могу ответить на ваш вопрос о PDF: API2. Но я использую Java и знаю, что библиотека iText поддерживает текст справа налево - iText доступен и для .NET.

Вот пример изменения направления текста: http://itextdocs.lowagie.com/examples/com/lowagie/examples/fonts/styles/RightToLeft.java

1 голос
/ 08 октября 2009

Ну, я не знаю, как использовать PDF::API2, не говоря уже о создании документов на иврите, используя его, поэтому я не могу вам помочь.

Я бы сначала попробовал PDF :: FromHTML , прежде чем погрузиться в PDF::API2, но потом я легко испугался.

0 голосов
/ 08 октября 2009

PDF :: API2 обладает множеством функциональных возможностей, но чрезвычайно эзотеричен. Я обнаружил, что документация очень сложна для получения необходимой информации. Вы должны получить все «правильно», чтобы PDF-файл отображался правильно, и, как будто ваши требования меняются, он имеет тенденцию оказывать каскадный эффект на ваш существующий код, чтобы все хорошо сочеталось. Например, вставка одного элемента в определенном месте может означать, что вам необходимо пересчитать позиции всех других элементов, отображаемых на этой странице, с точностью до одной точки, в зависимости от того, как вы используете API.

В результате мы довольно недавно отказались от решения, в котором использовался PDF :: API2, и вместо этого начали генерировать HTML, который мы затем преобразовали в PDF с помощью внешнего инструмента. Есть несколько хороших бесплатных, например PDF :: FromHTML в соответствии с предложением Синан Юнюр. Есть и другие, более многофункциональные коммерческие, если вы хотите, чтобы ваш HTML увлекся и хорошо перевел его в PDF (хотя я не использовал их лично).

Если вам нужно сделать несколько простых манипуляций с существующими PDF-файлами, а не генерировать их, я бы использовал (и использую) CAM :: PDF .

Короче говоря, я не рекомендую PDF :: API2, если вы не готовы тратить много времени на выяснение всех его тонкостей и личную поддержку вашего приложения в будущем. Он чрезвычайно мощный и многофункциональный, но если вы точно не знаете, что делаете, отсутствие документации и примеров помешает вам больше, чем помогает модуль.

0 голосов
/ 08 октября 2009

Вы действительно должны использовать PDF::API2? Я не знал эту библиотеку, но просто попробовал ее; похоже, у него отличный базовый код для низкоуровневого программирования, но я не видел ничего, связанного с реальной типографикой, не говоря уже об особых требованиях при наборе текста справа налево. Пример Hello, World! прекрасно работает, и вы даже можете заменить основной шрифт, который там используется, произвольным шрифтом TrueType (просто замените вызов $pdf->corefont('Helvetica-Bold'); на $pdf->ttfont('/path/to/font/file.ttf');), но я не смог Начнем с того, что можно найти что-нибудь о кодировках, поэтому я даже не смог установить один ивритский символ, потому что последовательность UTF-8 была искажена в файле PDF (я также попробовал несколько других кодировок, но безрезультатно). Очевидно, что есть некоторая поддержка для этого, так как я вижу файл с именем PDF / API2 / Basic / TTF / Cmap.pm (cmap - это таблица TrueType, которая определяет кодировки шрифта), но, опять же, он кажется довольно низким уровень.

Должен ли я добавить, что документация кажется крайне скудной (включая совершенно пустой раздел, озаглавленный «Шрифты и набор текста»!), И эта разработка, по-видимому, остановилась в 2005 году; Я бы посчитал, что библиотека еще слишком неполная, чтобы использовать ее для настоящих проектов (особенно таких, как у вас). Это очень жаль, потому что десять лет назад, похоже, было так много развития.

...