2009-10-07 2 views
4

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

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

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

ответ

1

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

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

+0

Если вы легко испугались, сделайте * не * посмотрите на источник PDF :: FromHTML. – ysth

+0

Да, но использование модуля не было страшным опытом. –

+0

PDF :: FromHTML не работает, потому что текст на иврите перемещается слева направо, а не справа налево. И это делается в HTML через CSS и PDF :: FromHTML не делает CSS. – mpeters

1

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

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

-1

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

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

0

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

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

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

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