2010-09-25 2 views
2

У меня есть PDF, который я хотел бы показать в Book Control. Поскольку этот элемент управления не может использовать PDF-файлы, мне приходится его обойти, используя изображения или конвертируя PDF в XAML.Показать PDF в BookControl. Конвертировать PDF в XAML?

Что является самым элегантным способом для этого?

ответ

1

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

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

+0

Я пошел с этим, потому что документы были действительно слишком большими. Я показываю их только в одном размере, потому что есть некоторые проблемы с включением BookControl в ScatterViewItem (переключение не будет работать так, как должно). – Hedge

+0

-1 Речь идет о рендеринге PDF в Radbook и не ищем альтернатив. –

+1

@ Ravi В этом вопросе ничего не было. Я не притворяюсь психическим. – IanGilham

3

Я написал две программы конвертации PDF в XAML, основанные на библиотеке PDFRenderer (с открытым исходным кодом). Мне нужно это, чтобы преобразовать мои математические документы и/или рисунки в XAML, чтобы я мог вставлять их в общую доску (из моего собственного дизайна) при обучении через Интернет, см. http://www.mathcoach.ch/blog/?p=30.

Основная проблема заключается в преобразовании ссылок на шрифты («глифы»). Если вы используете PDFRenderer, который включает в себя преобразование ссылок на шрифты в контуры, легко создать код XAML, содержащий только элементы Path. Поскольку XAML, насколько мне известно, не позволяет прямо вставлять изображения, мои две программы преобразования делают не конвертируют растровые изображения, а просто отбрасывают их (конвертируя растровые изображения, это просто то, что я не считаю своим временем момент).

Чтобы преобразовать PDF-файлы в XAML с использованием только элементов Path, вы можете просто реализовать объект Graphics2D (это упрощает работу, если вы наследуете org.apache.batik.ext.awt.g2d.AbstractGraphics2D). Основными методами реализации в этом случае являются fill() и stroke(), что легко сделать, потому что объекты GeneralPath Java2 очень аккуратно отображают элементы пути XAML (линейные сегменты, квадратичные и кубические сегменты Безье).

Обратите внимание, что если исходный PDF-файл содержит много текста (ссылки на глиф), то полученный XAML-код будет большим. Около 2 МБ на страницу формата А4. Однако он отлично работает с математическими чертежами, которые содержат относительно немного ссылок на глиф.

Для моих собственных PDF-файлов я могу хранить ссылки на глиф, т. Е. Не нужно преобразовывать их в контуры и, следовательно, в элементы Path, потому что я использую только шрифты, которые обязательно будут установлены на машине, где документ должен отображаться. Кроме того, для этого требуется относительно хрупкий процесс преобразования индексов глифов, чтобы они были в порядке, если они использовались в качестве индексов в установленных файлах шрифтов.

+0

Могу ли я скачать и попробовать PDF2XAML? – Hedge

+0

Я смущаюсь сделать его общедоступным из-за вопроса о юридических проблемах. Я даже не хочу читать все различные и все лицензии. Это отлично работает для меня. Однако эти программы не документируются для понимания другими, и чтобы сделать преобразование более эффективным, мне пришлось изменить источник библиотеки PDFRenderer. Итак, на данный момент я хотел бы сохранить эти два конвертера для моего личного (некоммерческого) использования. - Но, может быть, вы можете отправить мне пример PDF для конвертирования с помощью моих инструментов? Вы можете найти мой адрес электронной почты здесь http://www.mathcoach.ch/Frame/English/Contact.html –

0

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

Смежные вопросы