Protokoll als DIN A4 ausdrucken. Druckproblem. Wer kann helfen?



  • Hallo zusammen,
    ich habe mich eben in diesem Forum angemeldet in der Hoffnung hier Hilfe zu bekommen. Um meine Arbeit zu erleichtern habe ich mir von einem Kumpel ein Programm in Qt Programmieren lassen. Jetzt sind wir allerdings soweit das wir bei einem Druckproblem stehen geblieben sind wo er selbst beim besten willen einfach nicht weiter kommt. Ich brauche eure Hilfe dazu? Wer kann helfen?

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_pushButton_clicked()
    {
        QString fileName = QFileDialog::getOpenFileName(this, "Öffnen", "", "PDF (*.pdf)");
        qDebug() << fileName;
        QUrl viewer = QUrl::fromLocalFile(QFileInfo("pdfjs/web/viewer.html").absoluteFilePath());
        this->ui->webView->load(viewer.url() + "?file=../../"+fileName.split("/").last()+"");
    }
    
    void MainWindow::on_pushButton_2_clicked()
    {
        QPrinter printer(QPrinter::HighResolution);
        printer.setFullPage(true);
        //printer.setOrientation(QPrinter::Portrait);
        printer.setPaperSize(QPrinter::A4);
    
        QPrintDialog* pd = new QPrintDialog(&printer, this);
        if(pd->exec() == QDialog::Accepted) {
            //this->ui->webView->page()->mainFrame()->evaluateJavaScript("window.print();");
            this->ui->webView->print(&printer);
        }
    }
    

    link text

    Ok was seht ihr? Auf der linken Seite ist ein Protokoll aufgeführt. Nach einem doppelklick wird das Protokoll auf der rechten Seite angezeigt. Beim drucken erscheint das Protokoll als DIN A5. Genau hier liegt das Problem, das protokoll wird komprimiert.

    Ich würde mich und Lösungsvorschläge sehr freuen.

    Maurice

    [edit:koahnig] Korrektur der Code Tags


  • Moderators

    @derfighter

    Hallo und willkommen beim devnet-Forum

    Ad hoc sehe ich hier nicht ein Problem bei Qt. In der Regel sind die hier verwendeten Dialoge "native", d.h. die jeweiligen Dialoge des Betriebssystems. Qt wird nur als vereinfachte Zwischenplattform verwendet und setzt die notwendigen Parameter im "Native"-Dialog. Daher vereinfacht Qt in diesem Zusammenhang im Wesentlichen die Handhabung über verschiedene Plattformen und Betriebssysteme. Dies gilt im Besonderen für Windows. Man kann den "Native"-Mode umgehen, aber dies scheint hier nicht der Fall zu sein.

    Welches Betriebssystem wird hier verwendet?

    Da ein PDF verwendet wird, scheint eher die Grösse dort schon gesetzt zu sein. Ein PDF kann aber auch mit jedem anderen Programm, vorzugsweise einem PDF-Reader gedruckt werden. PDF-Reader stellen auch oft einen Druckertreiber zur Verfügung, welcher eventuell die Probleme versucht.

    Kannst du das PDF auf einem anderen Drucker ohne besondere Parameter auf DIN A4 ausdrucken?



  • @koahnig

    Hallo und herzlichen Dank für deine ausführliche Antwort.
    Ich selbst bin kein Programmierer und habe davon absolut keine Ahnung. Anfangs meines Studiums, lang ist es her, gab es mal ein Tutorium für C++. Aufgrund der schnell des Tutors kam ich da überhaupt nicht mit. Irgendwann habe ich es aufgegeben.

    Da ich meine Arbeit erleichtern wollte, habe ich mir irgendwann ein freiwilligen Programmierer gesucht der mir ein Programm nach meiner Vorstellung bastelt.

    Zur Problematik:
    Wenn ich eine Prüfung ausführe muss ich anschliessend ein Protokoll erstellen. Das erstellt Programm gibt mir die Plattform dafür.

    Option 1:
    Wenn ich auf eine Zeile gehe dann erscheinen alle Daten aus der Zeile in der Vorlage. Die Vorlage liegt im Hintergrund als HTML. Wenn ich jetzt auf speichern gehe dann wandelt er das ganze in ein DIN A4 PDF um welches ich im Programm ganz normal ausdrucken kann. Als ausdruck in DIN A4 funktioniert ohne Probleme.

    Option 2:
    Damit ich aber weis welches Protokoll ich ausgedruckt habe wurde die Bildschirmfläche in 2 hälften geteilt.
    Auf der linken Seite sieht man die Zeile des Protokolls und auf der rechten Seite kommt es zur Darstellung.
    So viel ich weis wird in beiden ein PDF verwendet. Wenn ich das Protokoll aus dem Programm heraus ausdrucken möchte dann kommt es als komprimiertes DIN A5 Protokoll aus dem Drucker heraus.

    Auf die frage, ob das auch bei anderen Drucker der Fall ist, ja. Ich habe das Programm auch auf der Arbeit getestet.

    Ich habe hier mal ein Bild hinzugefügt zur besseren Vorstellung.
    https://picload.org/view/ddoogdrl/druckproblem.jpg.html

    Ich würde es dir auch gerne via Teamviewer demonstrieren wenn du magst.

    Welches Betriebssystem: WIN 10.

    Kann ich dir irgendwie die ganze zip Datei zu kommen lassen die der Kumpel gemacht hat?

    Danke für deine Hilfe und alle anderen auch.

    Maurice


  • Moderators

    @derfighter

    Ich habe mir deinen Code von oben nochmals genauer angeschaut. Wie schon angenommen wird das Dokument wohl über einen externen Treiber ausgedruckt oder wenigstens geladen.

     QUrl viewer = QUrl::fromLocalFile(QFileInfo("pdfjs/web/viewer.html").absoluteFilePath());
     this->ui->webView->load(viewer.url() + "?file=../../"+fileName.split("/").last()+"");
    

    und dann gedruckt mit

    this->ui->webView->print(&printer);
    

    Persönlich erwarte ich, dass da ein Parameter an den Viewer zum korrekten Setzen der Seitegrösse fehlt. Die QPrinter device wird ordentlich auf DIN A4 gesetzt, aber das muss und hat aus meiner Sicht wahrscheinlich auch keinen Einfluss auf den Viewer.

    Salopp gesagt, teilt der Viewer wahrscheinlich mit: "Ich habe DIN A5 zu drucken.". QPrinter denkt sich: "Fein, ich habe DIN A4 gesetzt und alles passt. Raus damit." QPrinter scheint keine Reskalierungsoption anzubieten. Jedenfalls habe ich keine auf die Schnelle gefunden. Falls ich QPrinter in einem Programm überhaupt einsetze, dann höchstens im Default Mode. Damit bin ich am Ende der Fahnenstange angelangt.

    Mit Webview habe ich keine Erfahrung und auch mit dem verwendeten pdfjs nicht. Da gibt es aber schon Optionen zu setzen, habe aber keinen blassen Dunst, wie das funktionieren soll.



  • @koahnig

    vielen vielen herzlich Dank für deine schnelle Antwort. Ich gebe das an meinem Kumpel weiter der sich deine Antwort zu brust nimmt. Mein Kumpel der das Programm geschrieben hat, hat aktuell Probleme mit seinem Modem. Sobald es wieder funktioniert, wird er wie ich denke sich auch hier melden.

    Wenn deine Vorstellung klappt oder es negative ausfällt schreibe ich es aufjedenfall hier rein.

    Besten Dank
    Maurice

    PS: Wenn du magst demonstriere ich dir das auch nochmal via Teamviewer.



  • @koahnig So, die Lösung für das Problem wurde gefunden. Mit dem Adobe Reader und der richtigen Zuordnung geht jetzt auch das drucken so wie ich es gerne haben möchte.

    Das pdf.js wurde meines wissen ganz weg gelassen.


  • Moderators

    @derfighter

    Schön, dass dein Problem gelöst wurde.

    Für pdf gibt es einen Haufen freie SW, aber auch oft einen Haken.



  • @koahnig das war mir wichtig das es gelöst wurde. Ich weis wie schwer es ist sich in einen Fehler hineinzudenken und dann eine Lösung zu finden. Sorry das ich meinen Fehler nicht besser erklären konnte. Ich kann einen PC auseinander nehmen und zusammensetzen aber Programmieren geht leider bei mir überhaupt nicht.

    Danke trotzdem für deinen Ansatz.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.