none
Vorgabe für PDF-Dateiname RRS feed

  • Frage

  • Hallo,

    bei meiner SDI-Anwendung wird beim Drucken mit FreePDF der PDF-Dateiname inklusive Dateierweiterung vorgegeben:

    Bei Word wird die Dateierweiterung beim PDF-Dateinamen nicht vorgegeben:

    Wie kann ich es erreichen, dass in meiner SDI-Anwendung beim Drucken der PDF-Dateiname ohne Dateierweiterung vorgegeben wird?

    Danke im Voraus und viele Grüße

    Bernd

    Mittwoch, 6. August 2014 09:36

Alle Antworten

  • Hallo powerzone3000,

    danke für Deine Antwort.

    ich habe heraus gefunden, dass in der Standard-Funktion void CView::OnFilePrint() der Titel mit Dateierweiterung hierdurch übernommen wird:

    docInfo.lpszDocName = strTitle;

    Danach lande ich in meiner Funktion, die im Moment so aussieht:

    void CMeinView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
     // ZU ERLEDIGEN: Zusätzliche Initialisierung vor dem Drucken hier einfügen
    }

    Nun würde ich gerne in meiner Funktion CMeinView::OnBeginPrinting den Wert für docInfo.lpszDocName aktualisieren.

    Wie kann ich in meiner Funktion CMeinView::OnBeginPrinting auf den Wert von docInfo.lpszDocName zugreifen?

    Danke im Voraus und viele Grüße

    Bernd

    Mittwoch, 6. August 2014 12:25
  • Hallo,

    ich habe nun eine Lösung gefunden, indem ich die Funktion OnFilePrint überschreibe. Allerdings vermute ich, dass man es auch noch besser lösen kann. So sieht meine neue Funktion aus:

    void CMeinView::OnFilePrint()
    {
     // Den aktuellen Titel ermitteln
     CMainFrame* pMF = (CMainFrame*) AfxGetApp()->m_pMainWnd;
     CMeinDoc* psbrdAktDok = (CMeinDoc*) pMF->GetActiveDocument();
     CString strTitelMitErw = psbrdAktDok->GetTitle(); 

     // Den neuen Titel ermitteln und setzen
     CString strTitelOhneErw = strTitelMitErw;
     LPTSTR lpTitelOhneErw = strTitelOhneErw.GetBuffer(MAX_PATH);
     PathRemoveExtension(lpTitelOhneErw);
     strTitelOhneErw.ReleaseBuffer();
     psbrdAktDok->SetTitle(strTitelOhneErw);

     // Die Funktion der Basisklasse ausführen
     CScrollView::OnFilePrint();

     // Den ursprünglichen Titel wieder setzen
     psbrdAktDok->SetTitle(strTitelMitErw);
    }

    Viele Grüße

    Bernd

    • Bearbeitet Bernd Föry Donnerstag, 7. August 2014 09:08
    Donnerstag, 7. August 2014 08:09