Могу ли я создать файл PDF в Perl, используя текст на иврите и английском языке?

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

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

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


person bradoaks    schedule 07.10.2009    source источник


Ответы (4)


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

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

person Sinan Ünür    schedule 07.10.2009
comment
Если вас легко напугать, не смотрите исходный код PDF::FromHTML. - person ysth; 08.10.2009
comment
Да, но пользоваться модулем было не страшно. - person Sinan Ünür; 08.10.2009
comment
PDF::FromHTML не будет работать, потому что текст на иврите движется слева направо, а не справа налево. И это делается в HTML с помощью CSS, а PDF::FromHTML не использует CSS. - person mpeters; 11.11.2009

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

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

person Steve Claridge    schedule 07.10.2009

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

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

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

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

person Adam Bellaire    schedule 08.10.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 году; Я считаю, что библиотека пока еще слишком неполная, чтобы ее можно было использовать для настоящих проектов (особенно таких, как ваш). Очень жаль, потому что десять лет назад, кажется, было так много разработок.

person Arthur Reutenauer    schedule 08.10.2009