Подтвердить что ты не робот

WPF для XPS для PDF

Я реализовал отчет в стандартных элементах WPF, а также реализовал DocumentPaginator, чтобы взять эти элементы управления и преобразовать их в документ для печати. ​​

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

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

Итак, я подумал, что попрошу здесь попытаться найти эффективный метод для этого. Может ли кто-нибудь предложить хороший способ взять DocumentPaginator и либо сохранить его прямо в PDF, с возможностью копирования/вставки или преобразовать его из документа XPS в PDF с помощью этой функции?

Спасибо, Алекс.

EDIT - исправление PDFSharp: Хорошо, как запрошено здесь, это то, что я сделал, чтобы скомпилировать исправление для конвертера PDFSharp 1.31 XPS:

1) Я скачал источник отсюда:

PDFSharp - SourceForge

2) Я выполнил инструкцию в этом сообщении:

Исправление PSFSharp

XpsParser.ImageBrush.cs (ln 22, added): brush.Opacity = 1;
PdfContentWriter.cs (ln 526, changed): if (opacity <= 1)

3) Затем просто скомпилируйте источник, сначала откройте "PdfSharp-WPF.csproj" и постройте его, затем откройте "PdfSharp.Xps.csproj" и постройте его, а соответствующие библиотеки - "PdfSharp-WPF". dll 'и' PdfSharp.Xps.dll '

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

EDIT (2): NJones создал сообщение в блоге с более подробной информацией об исправлении PdfSharp: Выход в PDF в WPF

4b9b3361

Ответ 1

Существует XPS-конвертер, который был включен в PDFsharp 1.31. Это бета-версия, но AFAIK поддерживает почти все и может работать для ваших нужд.

PDFsharp 1.31 можно загрузить из SourceForge или CodePlex.

Ответ 2

Если коммерческий SDK будет вариантом, есть одна компания, с которой я столкнулся, у которой есть профессиональный вариант преобразования XPS в PDF (и многое другое).

http://www.nixps.com

Предупреждение: я не являюсь аффилированным лицом этой компании, и я не пробовал их продукты. Я имел, с другой стороны, слышал о них хорошие вещи.

Ответ 3

Я использую Telerik Reporting, который обрабатывает разбиение на страницы и позволяет создавать отчеты в дизайнере, похожие на создание графического интерфейса. Я решил просто купить сторонний продукт, потому что я не хотел тратить время разработки на создание своего собственного paginator и т.д. Кроме того, этот инструмент, вероятно, более устойчивый к ошибкам, а затем настраиваемое решение и обеспечивает большую гибкость в отношении того, как вы хотите спроектируйте распечатку/отчет. В будущем, если у вас более сложная печать или отчеты, этот инструмент делает намного больше. Я не работаю для Telerik, но продукт хороший.

Он позволяет экспортировать в PDF, Word, Excel, HTML, PowerPoint, PNG и т.д. и т.д.

Ответ 4

ИМХО, у вас есть правильная идея: XPS - это, на мой взгляд, самый простой способ сериализации данных в удобном для использования формате, особенно для преобразования.

Что касается стороннего инструмента, у меня есть сверстник (как и я, а не я), который использовал CheckPrixa с некоторым успехом; он бесплатный и предлагает конверсии в командной строке. (т.е. сериализация документа и преобразование файла с расширением .bat.).

Он также позволяет обрабатывать ключевые слова, заголовки и т.д. наряду с более важными элементами, такими как даже разбиение на страницы.

Насколько я знаю, нет известных расхождений.

В качестве альтернативы, если преобразование MSXPS - это то, что дает вам головные боли, вы можете посмотреть XpsConverter, он преобразует MSXPS в OpenXPS и как Драйвер окна, он доступен на любой машине с использованием .NET 3 и выше.

Держите нас в курсе любых решений, которые вы пытаетесь сделать, виртуальные отчеты - растущая сделка.