Ermittlung der Seiten-Anzahl einer PDF-Datei

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Ermittlung der Seiten-Anzahl einer PDF-Datei

Beitrag von donkosak (ForumUser / 3 / 3 / 0 ) »
Hallo zusammen,

ich möchte die Seitenzahl einer PDF-Datei, welche mir in xstring-Format vorliegt, ermitteln. Hintergrund ist der, dass die PDF-Datei aus dem SAP heraus gedruckt werden soll. Hierfür erzeuge ich einen Spoolauftrag (FuBa "ADS_SR_CONFIRM" zuletzt) wobei die Seitenzahl des zu druckenden Spools mitgegeben werden muss.
Aktuell wird die Seitenzahl wie folgt ermittelt:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  GET_PAGE_COUNT_PDF
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GF_CONTENT_SRC  text
*      -->P_GF_PAGES  text
*----------------------------------------------------------------------*
FORM get_page_count_pdf USING lf_content_pdf TYPE XSTRING
                              gf_pages       TYPE i.

  DATA:   lf_pdf   TYPE STRING.

  DATA:   lf_lines TYPE i,
          lf_pages TYPE numc5,
          lf_temp  TYPE STRING.

  DATA: lt_result TYPE match_result_tab.

  FIELD-SYMBOLS: <fs_result> LIKE LINE OF lt_result,
                 <fs_subm>   LIKE LINE OF <fs_result>-SUBMATCHES.

  lf_pages = 0.


  CALL FUNCTION 'CRM_IC_XML_XSTRING2STRING'
    EXPORTING
      inxstring = lf_content_pdf
    IMPORTING
      outstring = lf_pdf.


  FIND REGEX `/Count (.{1,5})/` IN lf_pdf IGNORING CASE RESULTS
  lt_result.
  IF sy-subrc NE 0.
    FIND ALL OCCURRENCES OF REGEX `/Count (.{1,4})/` IN lf_pdf
    IGNORING CASE RESULTS lt_result.
  ENDIF.
  lf_lines = LINES( lt_result ).
  IF lf_lines IS NOT INITIAL.
    READ TABLE lt_result ASSIGNING <fs_result> INDEX lf_lines.
    IF sy-subrc EQ 0.
      READ TABLE <fs_result>-SUBMATCHES ASSIGNING <fs_subm> INDEX 1.
      IF sy-subrc EQ 0.
        lf_temp = lf_pdf+<fs_subm>-OFFSET(<fs_subm>-LENGTH).
        CONDENSE lf_temp NO-GAPS.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = lf_temp
          IMPORTING
            OUTPUT = lf_pages.
        gf_pages = lf_pages.
      ENDIF.
    ENDIF.
  ENDIF.


ENDFORM.                    " GET_PAGE_COUNT_PDF
Das Problem ist nun, dass das Ganze zwar für Version 1.5 funktioniert, für andere Versionen aber nicht.

Danke schon mal vorab!

Beste Grüße

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Ermittlung der Seiten-Anzahl einer PDF-Datei

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Verlässlich scheint sich das mit reinen ABAP-Mitteln nicht ermitteln zu lassen:
https://stackoverflow.com/questions/164 ... unt-with-c
In der zweiten Antwort steht was von einem C-Program auf SourceForge. Habs nicht analysiert, aber vielleicht lässt sich der Quellcode auf ABAP umlegen.

Im Gegensatz dazu scheint es mit dem Tool "pdfinfo" aus den "xpdf utilities" ziemlich gut zu klappen:
https://www.linuxquestions.org/question ... nt-699113/
Natürlich musst du das erst auf dem Applikationsserver installieren lassen, dann das PDF als Datei irgendwo ablegen und von dem Tool analysieren lassen.
Wir haben das bei uns drauf und ich kann bestätigen, dass es in einem kurzen Testlauf funktioniert hat.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
donkosak

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Ermittlung der Seiten-Anzahl einer PDF-Datei

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Als externes Tool würde ich PdfTk mal probieren (gibt es auch als kostenlose Version).
https://www.pdflabs.com/docs/pdftk-cli-examples/
So soll es damit gehen:

Code: Alles auswählen.

pdftk my.pdf dump_data | grep NumberOfPages
https://stackoverflow.com/questions/167 ... batch-file

gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
donkosak

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Ermittlung der Seiten-Anzahl einer PDF-Datei

Beitrag von donkosak (ForumUser / 3 / 3 / 0 ) »
Ich melde mich nochmals zum Thema:
Ich habe herausgefunden, dass die Seitenzahl für den Funktionsbaustein "ADS_SR_CONFIRM" in meinem Fall keine Rolle spielt. Ich habe die Seitenzahl fest auf "1" gesetzt und mehrere Tests mit PDFs, die länger als eine Seite sind, durchgeführt.
Ergebnis: Der Spoolauftrag wird trotzdem korrekt erzeugt und kann angezeigt und gedruckt werden. Zwar wird in der Transaktion "SP01" unter "Seiten" bei den Spoolaufträgen in meinen Tests "1" angezeigt, das sollte aber nicht weiter stören, solange die korrekte Seitenanzahl gedruckt wird.

Beste Grüße

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3527
Views
SAPscript - Anzahl der Seiten
von svenk » 12.07.2007 11:36 • Verfasst in ABAP® für Anfänger
0
Antw.
979
Views
Grafiken in PDF-Seiten
von Steffi221185 » 26.11.2007 08:03 • Verfasst in ABAP Objects®
1
Antw.
1201
Views
BSP-Seiten und Unterprogrammen
von Alonso » 08.08.2005 15:22 • Verfasst in Web-Dynpro, BSP + BHTML
5
Antw.
2580
Views
Abap und HTML-Seiten?
von Gast » 21.03.2005 12:01 • Verfasst in ABAP® Core
0
Antw.
1395
Views
SMARTFORMS 2 Seiten Formular
von sp89 » 26.08.2009 07:01 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Bedarfszusammenfassung "Einzelbedarfe"
vor 2 Stunden von harri 2 / 1178
Trennen Strasse und Hausnummer
vor 4 Stunden von ralf.wenzel 21 / 11286
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4380

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Bedarfszusammenfassung "Einzelbedarfe"
vor 2 Stunden von harri 2 / 1178
Trennen Strasse und Hausnummer
vor 4 Stunden von ralf.wenzel 21 / 11286
Dialog-Container mit Toolbar/Status
Gestern von black_adept gelöst 27 / 4380

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 254
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3180
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9773