VB.NET PrintDialog Печать в файл

Я использую .NET (VB) Graphics для печати / предварительного просмотра отчетов в заранее определенном формате (например, налоговые формы), который отлично работает.

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

Когда я устанавливаю флажок «Печать в файл» (для обычного лазерного принтера или драйвера принтера XPS) и нажимаю «Печать», я не получаю диалоговое окно «Открыть файл», как это предлагается в этой статье (http://www.functionx.com/vcnet/controls/print.htm). Кажется, что операция идет нормально, но я понятия не имею, где найти файл, если он действительно создан.

Что мне не хватает? Может ли кто-нибудь предложить альтернативный метод накопления графических отчетов и печати или распечатки в файл?

TIA для вашего времени.


person ron tornambe    schedule 12.03.2012    source источник
comment
Почему бы не использовать напрямую PDF-принтер? Например, PDFCreator или BullZip?   -  person Steve    schedule 13.03.2012
comment
Я бы рассмотрел PDF-принтер. Можно ли их легко установить (программно) на любую платформу Windows? К сожалению, обе эти ссылки довольно подозрительны. PDFCreator получил очень плохие отзывы за интеграцию с панелью инструментов Babylon, а ссылка на BullZip недоступна.   -  person ron tornambe    schedule 13.03.2012
comment
По PDFCreator не могу сказать. Просто отказался много лет назад, потому что это было слишком тяжело, для BullZip я использую его сегодня с большим удовлетворением. Протестировал ссылку сейчас и работает хорошо. «Установлено программно»? Я думаю, что нет, вы должны включить их настройку в свою и запустить во время установки вашего приложения или проинструктировать своих клиентов, как установить. Если вы выполните поиск в Интернете по запросу «PDF Printer», вы найдете ссылки на другие решения.   -  person Steve    schedule 13.03.2012
comment
Ой ... прочтите сейчас о PDFCreator и его панели инструментов ... ни за что. Не обращайте внимания на мое предложение о PDFCreator.   -  person Steve    schedule 13.03.2012
comment
Спасибо, Стив. Я посмотрю на BullZip (забавное название) и другие. Сделайте это предложение ответом, и я проголосую за него.   -  person ron tornambe    schedule 13.03.2012


Ответы (2)


Действительно ли диалоговое окно печати связано с экземпляром PrintDocument? Такой код работает хорошо:

    private void button1_Click(object sender, EventArgs e) {
        printDocument1.PrinterSettings.PrintToFile = true;
        printDocument1.PrinterSettings.PrintFileName = @"c:\temp\test.xps";
        printDocument1.Print();
    }
person Hans Passant    schedule 13.03.2012
comment
Спасибо, Ганс. Я получаю сообщение об ошибке «Доступ запрещен», но, по крайней мере, похоже, что это попытка записи в файл. Вы знаете, как исправить эту ошибку? - person ron tornambe; 13.03.2012
comment
Я думаю, передать другое имя файла. Используйте путь appdata. - person Hans Passant; 13.03.2012
comment
После записи файла и открытия XPS Viewer сообщает, что не может открыть этот документ. Это потому, что он был написан с использованием объекта Graphics? - person ron tornambe; 13.03.2012
comment
Вам нужно будет задать новый вопрос по этому поводу, обязательно задокументируйте это должным образом. - person Hans Passant; 13.03.2012

Почему бы не использовать PDF-принтер? В сети вы найдете множество бесплатных решений.
Мне больше нравится BullZip, но есть и другие варианты . Если вы ищете такого рода решение, помните о тупиках (например, панели инструментов рекламного ПО или странных условиях лицензирования).
Однако этот сценарий имеет определенные преимущества, например, вы можете определить папку в качестве основы документа и каждый раз при печати , ваш PDF-принтер запоминает, где создать PDF-документ.

person Steve    schedule 13.03.2012