Печать копий документа из текстового поля формы - PullRequest
0 голосов
/ 31 декабря 2018

Есть ли способ напечатать количество копий, указанное в текстовом поле в приложении формы C # windows?

С моим текущим кодом документ печатается с требуемым количеством отпечатков, но после первой печати появляется диалоговое окно, в котором говорится, что документ уже открыт, и мне нужно открыть копию.Когда я открываю эту копию, документ печатается снова, но только если я согласен открыть копию.Есть ли способ напечатать документ несколько раз, не каждый раз получая диалоговое окно копии документа?

Когда форма заполнена правильно, я хочу, чтобы она была сохранена на моем жестком диске, и хочу, чтобыраспечатать номер, указанный в текстовом поле в предыдущей форме.Значение из этого текстового поля хранится в переменной intAantalPoorten.

Большое спасибо!

С уважением, Берт

CreateWordDocument(@"N:\De wienes\Productieformulieren\Sjablonen\Poortblad.docx", @"N:\De wienes\Productieformulieren\Producties poortbladen\Poortblad " + txtKlantnaam.Text + "-" + txtReferentie.Text + ".docx");

ProcessStartInfo info = new ProcessStartInfo(@"N:\De wienes\Productieformulieren\Producties poortbladen\Poortblad " + txtKlantnaam.Text + "-" + txtReferentie.Text + ".docx");


            for (intAAntalPrints = 0; intAAntalPrints <= intAantalPoorten; intAAntalPrints++)

            {

                info.Verb = "Print";
                info.CreateNoWindow = true;
                info.WindowStyle = ProcessWindowStyle.Hidden;
                Process.Start(info); 

            }

1 Ответ

0 голосов
/ 01 января 2019

Возможно, вы не используете лучшую модель программирования.То, что вы делаете, полагается на оболочку Windows, чтобы открыть документ и вызвать зарегистрированный глагол (как определено Word в локальном реестре).Это самый примитивный и наименее функциональный способ выполнения работы.Например, нет способа изменить, на каком принтере вы печатаете ... или сколько копий или на каких страницах и т. Д.

Вместо этого есть богатая модель программирования, которую Word (и все приложения Office)предоставлять.Вы можете открывать документы и распечатывать их с указанием нужного вам количества копий.

Чтобы получить доступ к этой модели программирования, вам нужно сослаться на сборку взаимодействия .COM для Word, а именно:

Word interop assembly

... и узел взаимодействия Office Core:

Office Core interop assembly

Затем,это просто вопрос вождения Word, чтобы делать то, что вы хотите.Например:

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
  public partial class Form1: Form
  {
    public Form1( )
    {
      InitializeComponent( );
    }

    private void button1_Click( object sender, EventArgs e )
    {
      //--> assumes the textBox1.Text contains the file to open...
      var app = new Microsoft.Office.Interop.Word.Application( );
      var doc = app.Documents.Open( textBox1.Text, ReadOnly: true );
      doc.PrintOut( Copies: 1 );
      doc.Close( );
      app.Quit( );

    }
  }
}

Обратите внимание, что для этого необходимо установить Word на локальный компьютер.Для получения дополнительной информации, посмотрите слово объектная модель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...