Announcement

Collapse
No announcement yet.

Drucken unter ASP.NET

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Drucken unter ASP.NET

    Hallo zusammen,

    bei uns in der Firma soll ein Produktionsgestütztes System durch eine neue Anwendung abgelöst werden. Um den Aufwand für die Clients so gering wie möglich zu halten (Client - Installationen für Datenbanken etc), war mein Vorschlag das Ganze als ASP.NET Application umzusetzen. Nun ist es bei diesem System so, das nach einer Buchung automatisiert Dokumente ausgedruckt werden müssen. Mit anderen Worten, der Benutzer wird nicht aufgefordert einen Drucker auszuwählen. Es wird und soll kein Druckdialog angezeigt werden.

    Gibt es eine Möglichkeit, unter den WebForms automatisiert Dokumente zu drucken. Selbst wenn es nicht unter ASP.NET geht, müsste zumindest eine Windowsanwendung (WinForms) diesen Job übernehmen. Aber auch hier hätte ich jetzt keine Idee, wie ich soetwas umsetzen soll.

    Hat hierzu vielleicht jemand eine Idee für mich. Vielen Dank

    Gruß

    Sascha

  • #2
    Halle,
    eine ASP.NET-Anwendung wird auf der Server-Seite ausgeführt, daher wird es prinzipiell schwierig, wenn der Ausdruck beim Client-Rechner aus dem Drucker kommen soll. Ohne ein Hilfs-Script, dass im Browser des Clients ausgeführt wird, geht es daher nicht. Das könnte im einfachsten Fall so aussehen:
    <code>
    <b>private</b> <b>void</b> ButtonPrint_Click(<b>object</b> sender, System.EventArgs e)
    {
    <b>string</b> sScript = <font color="#9933CC">&quot;&lt;script language='javascript'&gt;&quot;</font> +
    <font color="#9933CC">&quot;window.open('UploadDataPrint .aspx', '_blank', &quot;</font> +
    <font color="#9933CC">&quot;'menubar=yes, resizable=yes, scrollbar=yes') &lt;/script&gt;&quot;</font>;
    Page.RegisterStartupScript(<font color="#9933CC">&quot;PopupScript&quot;</font>, sScript);
    }
    </code>
    Eine Windows Forms-Anwendung hat diese Probleme selbstverständlich nicht. Wenn die ASP.NET-Anwendung das Dokument als PDF-Datei generiert, könnte das Windows Forms-Programm diese PDF-Datei herunterladen und lokal über den Acrobar Reader automatisch ausdrucken lassen.
    Falls auf der Server-Seite die <i>Reporting Services</i> vom <i>MS SQL Server 2000</I> oder <i>MS SQL Server 2005</i> für das Generieren des auszudruckenden Dokuments verwendet werden, stellt Microsoft ein Control für das Einbetten in die eigene Windows Forms-Anwendung zur Verfügung. Außerdem kann der Client auch direkt den <i>XML Web Service</i> der Reporting Services ansprechen, um sich das gewünschte Dokument direkt abzuholen:
    <code>
    ReportingService service = <b>new</b> ReportingService();
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;
    <font color="#003399"><i>// Input-Aufrufparameter</i></font>
    <b>string</b> report = <font color="#9933CC">&quot;/SampleReports/Company Sales&quot;</font>;
    <b>string</b> format = <font color="#9933CC">&quot;PDF&quot;</font>;
    <b>string</b> historyId = <b>null</b>;
    <b>string</b> deviceInfo = <b>null</b>;
    ParameterValue[] parameters = <b>null</b>;
    DataSourceCredentials[] credentials = <b>null</b>;
    <b>string</b> showHideToggle = <b>null</b>;
    <font color="#003399"><i>// Output-Aufrufparameter</i></font>
    <b>string</b> encoding = <font color="#9933CC">&quot;&quot;</font>;
    <b>string</b> mime = <font color="#9933CC">&quot;&quot;</font>;
    ParameterValue[] parametersUsed = <b>new</b> ParameterValue[]{};
    Warning[] warnings = <b>new</b> Warning[]{};
    <b>string</b>[] streamIds = <b>new</b> <b>string</b>[]{};
    <font color="#003399"><i>// Bericht erzeugen, PDF kommt als Byte-Array zurück</i></font>
    <b>byte</b>[] byteArray = service.Render(report, format, historyId,
    deviceInfo, parameters, credentials, showHideToggle,
    <b>out</b> encoding, <b>out</b> mime, <b>out</b> parametersUsed, <b>out</b> warnings, <b>out</b> streamIds);
    <font color="#003399"><i>// Byte-Array als Datei speichern</i></font>
    FileStream file = File.OpenWrite(@<font color="#9933CC">&quot;C:\Report.pdf&quot;</font>);
    file.Write(byteArray, 0, byteArray.Length);
    file.Close();
    <font color="#003399"><i>// PDF direkt im Reader anzeigen</i></font>
    System.Diagnostics.Process.Start(@<font color="#9933CC">&quot;C:\Report.pdf&quot;</font>);
    </code>
    &#10

    Comment


    • #3
      Hallo,

      soweit dürfte das Vorgehen klar sein. Allerdings wird hier nur das Dokument angezeigt. gibt es jetzt hierbei Parameter, die einen Direcktdruck ausführt, oder muss hier im AcrobatReader etwas eingestellt werden?

      Gruß

      Sasch

      Comment


      • #4
        Meine Suchergebnisse zu dem Thema sind schon eine Weile her, aber da war es praktisch nicht möglich, per Javaskript den Browser anzuweisen, dass Dokument zu drucken, ohne Dialoge anzuzeigen. Bei den harten Sicherheitsmaßnahmen wird sich das kaum geändert haben.<p>
        Aber mal anders gedacht: Warum druckt nicht Euer Server? Vermutlich steht der "Webserver" ja auch im Haus, sonst hätte die Frage Winforms/WebForms ja nicht stehen können. <p>
        Mari
        Schöne Grüße, Mario

        Comment

        Working...
        X