Mehrere PDF gleichzeitig drucken - letzte Seite weglassen
#1
geschrieben 15. November 2016 - 08:03
in Windows kann ich (bei installiertem Adobe Acrobat Reader)
mehrere PDF-Dateien markieren
>> Rechtsklick in markierte Dateien
in einem Rutsch viele PDF-Dateien drucken.
Leider enthält die jeweils letzte Seite dieser PDF-Dateien immer Werbung, die ich so zig-fach nun immer "umsonst" drucke und anschl. im Papierkorb landet.
Gibt es eine Möglichkeit (Skript o.ä.) das mir mehrere PDF-Dateien gleichzeitig drucken kann und hier eben immer die jeweils letzte Seite weglässt (so dass diese nicht mit gedruckt wird)?
Danke
Anzeige
#2
geschrieben 15. November 2016 - 15:21
#3
geschrieben 15. November 2016 - 17:24
Angenommen 100 PDF Dateien im Ordner (jede PDF hat angenommen nur 2 Seiten), diese markierst Du alle, Rechtsklick, Drucken
=> Das würde nun 200 Seiten drucken (100 davon sind wie gesagt Werbemitteilungen, da in jeder PDF die letzte Seite eben Werbung ist)
Nach Deiner Methode wären es dann nur noch 99 Seiten Werbung anstatt 100
#4
geschrieben 15. November 2016 - 20:06
#5
geschrieben 15. November 2016 - 21:49
Entweder den Druck einzeln ansteuern und nur Seite 1-x drucken lassen, oder alle PDF-Dateien bearbeiten und die letzte Seite löschen.
#6
geschrieben 15. November 2016 - 22:38
Hilft jetzt natürlich auch nicht weiter, aber ich würde die Werbung schon am Anfang rausschmeißen, wenn ich die Dateien speichere.
#7
geschrieben 16. November 2016 - 09:22
- alle PDF Dateien im Ordner kopiert (*_edited.pdf)
- bei den (*_edited.pdf) PDF Dateien die letzte Seite löscht
- anschl. werden alle *edited.pdf Dateien im Hintergrund an den Drucker geschickt
- danach werden alle *edited.pdf Dateien wieder gelöscht
- am Ende werden alle Ursprungs-PDF-Dateien in einen neu angelegten Ordner "YYYY-MM-TT_Gedruckt" verschoben
Voraussetzungen
- Coherent PDF Command Line Tools (Windows Binary "cpdf.exe" in den PDF-Ornder kopieren)
- Installierten Adobe Acrobat Reader DC
- von mir angepasstes PrintPDF.bat Skript von Rob van der Woude im PDF-Ornder speichern
@ECHO OFF :: Check Windows version, abort if not NT 4 or later IF NOT "%OS%"=="Windows_NT" GOTO Syntax SETLOCAL ENABLEDELAYEDEXPANSION :: Initialize variables SET PrintCmd= SET Temp=%Temp:"=% SET NumFiles=0 SET MultiPrint=0 SET ListTool= :: Check command line arguments rem IF "%~1"=="" GOTO Syntax rem IF NOT "%~3"=="" GOTO Syntax rem IF "%~2"=="" ( rem SET FileSpec=%~1 rem ) ELSE ( rem IF /I "%~1"=="/M" SET FileSpec=%~2 rem IF /I "%~2"=="/M" SET FileSpec=%~1 rem ) rem ECHO.%* | FIND /I "/M" >NUL && SET MultiPrint=1 rem ECHO.%FileSpec% | FIND "/" >NUL && GOTO Syntax rem IF NOT EXIST "%FileSpec%" GOTO Syntax rem recursiv in all (sub-)folders rem for /R %%f in (*.pdf) do ( rem .\cpdf.exe "%%f" 1-~2 -recrypt -o "%%~nf_edited.pdf" rem ) :: cut last page from all PDF files :: http://community.coherentpdf.com/ :: http://stackoverflow.com/questions/17705974/remove-the-last-page-of-a-pdf-file-using-pdftk :: cpdf in.pdf 1-~2 -o out.pdf for %%f in (*.pdf) do ( .\cpdf.exe "%%f" 1-~2 -recrypt -o "%%~nf_edited.pdf" ) :: hard coded for all cpdf edited PDF files SET FileSpec=*edited.pdf :: Count the number of files specified by filespec FOR %%A IN (%FileSpec%) DO SET /A NumFiles = !NumFiles! + 1 IF %NumFiles% EQU 0 GOTO Syntax :: Check if we need to have access to a list of processes :: currently running, and if so, which one is available IF %NumFiles% GTR 1 SET MultiPrint=1 IF %MultiPrint% EQU 0 CALL :GetListTool :: Get the file association from the registry FOR /F "tokens=1* delims==" %%A IN ('ASSOC .PDF') DO ( FOR /F "tokens=1 delims==" %%C IN ('FTYPE ^| FIND /I "%%~B"') DO ( CALL :GetPrintCommand %%C ) ) :: Check if a print command was found IF NOT DEFINED PrintCmd ( ECHO. ECHO No print command seems to be assiociated with .PDF files on this computer. GOTO Syntax ) :: Print the file using the print command we just found FOR %%A IN (%FileSpec%) DO CALL :ExecPrintCommand "%%~fA" :: A final message IF "%MultiPrint%"=="1" ( ECHO. ECHO You will need to close the Acrobat Reader window manually after the printing ECHO is finished. ECHO. ECHO *** wait for script to finish printing all files *** IF "%NumFiles%"=="1" IF "%ListTool%"=="" ( ECHO To close that window automatically next time you print a single PDF file, ECHO download and install PSLIST from the Microsoft website: ECHO http://www.microsoft.com/technet/sysinternals/utilities/pstools.mspx ) ) :: Done GOTO End :ExecPrintCommand CALL START /MIN "PrintPDF" %PrintCmd% GOTO:EOF :GetListTool :: Now we need to find a tool to check for processes. :: In XP and later this will be the native TASKLIST command, :: in NT 4 and 2000 we'll need to find a non-native tool. :: First we'll try TASKLIST ... TASKLIST >NUL 2>&1 IF ERRORLEVEL 1 ( REM ... if TASKLIST isn't available we'll try TLIST next ... TLIST >NUL 2>&1 IF ERRORLEVEL 1 ( REM ... and if that isn't available either we'll try PSLIST ... PSLIST >NUL 2>&1 IF NOT ERRORLEVEL 1 SET ListTool=PSLIST ) ELSE ( SET ListTool=TLIST ) ) ELSE ( SET ListTool=TASKLIST ) :: Don't worry if we didn't find ANY tool to list processes, in :: that case we'll just assume multiple PDFs need to be printed IF "%ListTool%"=="" SET MultiPrint=1 GOTO:EOF :GetPrintCommand :: Get the print command for this file type from the registry :: START /WAIT REGEDIT.EXE /E "%Temp%.\pdf.dat" "HKEY_CLASSES_ROOT\%1\shell\print\command" START /WAIT REGEDIT.EXE /E "%Temp%.\pdf.dat" "HKEY_CLASSES_ROOT\AcroExch.Document.DC\shell\print\command" IF NOT EXIST "%Temp%.\pdf.dat" GOTO:EOF FOR /F "tokens=1* delims==" %%D IN ('TYPE "%TEMP%.\pdf.dat" ^| FIND "@="') DO SET PrintCmd=%%E DEL "%Temp%.\pdf.dat" SET PrintCmd=%PrintCmd:\"="% SET PrintCmd=%PrintCmd:""="% SET PrintCmd=%PrintCmd:\\=\% :: The /T switch terminates Acrobat Reader after printing. :: Thanks to Fabio Quieti for sending me this tip. :: However, as Michael Butler pointed out, it should not be :: used when printing lots of files. :: So I introduced a /M switch for this batch file, stating :: that multiple files are to be printed. :: Without specifying the /M switch, this will also be true :: when wildcards are used in the filespec. :: Finally, if another Adobe Reader process is running right :: now, we won't be using the /T switch either. IF %MultiPrint% EQU 0 CALL :CheckProcess %PrintCmd% IF %MultiPrint% EQU 0 ( SET PrintCmd=%PrintCmd:"%1"=/t "%%%~1"% rem SET PrintCmd=%PrintCmd% /t "%%~1" ) ELSE ( SET PrintCmd=%PrintCmd:"%1"="%%%~1"% rem SET PrintCmd=%PrintCmd% "%%~1" ) GOTO:EOF :CheckProcess IF "%ListTool%"=="" ( SET MultiPrint=1 ) ELSE ( %ListTool% 2>&1 | FIND /I "%~n1" >NUL && SET MultiPrint=1 ) GOTO:EOF :Syntax ECHO. ECHO PrintPDF.bat, Version 3.11 for Windows NT 4 / 2000 / XP / Server 2003 ECHO Prints PDF files from the command line ECHO. ECHO Usage: PRINTPDF pdf_filespec [ /M ] ECHO. ECHO Where: "pdf_filespec" is the file name or filespec of the PDF file(s) ECHO to be printed; wildcards allowed (*); use double ECHO quotes for long file names ECHO. ECHO Notes: This batch file has been tested with Acrobat Reader versions 5-7 only. ECHO It requires Adobe/Acrobat Reader, and will NOT work if Acrobat "Writer" ECHO is installed. ECHO Thanks to Fabio Quieti, as of version 3.00, you no longer need to close ECHO the minimized Acrobat Reader window manually, after printing the file. ECHO Thanks to Michael Butler, printing lots of PDFs will no longer make the ECHO computer slow down to a crawl or even hang. ECHO. ECHO Written by Rob van der Woude ECHO http://www.robvanderwoude.com :End rem wait 15 seconds and delete all *edited.pdf files ping 127.0.0.1 -n 15 > nul for %%f in (*_edited.pdf) do ( DEL "%%f" ) :: Use WMIC to retrieve date and time FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO ( IF "%%~L"=="" goto s_done Set _yyyy=%%L Set _mm=00%%J Set _dd=00%%G Set _hour=00%%H SET _minute=00%%I SET _second=00%%K ) :s_done :: Pad digits with leading zeros Set _mm=%_mm:~-2% Set _dd=%_dd:~-2% Set _hour=%_hour:~-2% Set _minute=%_minute:~-2% Set _second=%_second:~-2% rem Set logtimestamp=%_yyyy%-%_mm%-%_dd%_%_hour%_%_minute%_%_second% Set logtimestamp=%_yyyy%-%_mm%-%_dd% mkdir %logtimestamp%_Gedruckt rem ping 127.0.0.1 -n 3 > nul MOVE *.pdf %logtimestamp%_Gedruckt\ rem /Y will overwrite all without prompt. /D will overwrite only those that are newer. you can also use xcopy /? for more options rem xcopy *.pdf Gedruckt\ /D IF "%OS%"=="Windows_NT" ENDLOCAL
Dieser Beitrag wurde von Heart bearbeitet: 16. November 2016 - 09:45
#8
geschrieben 16. November 2016 - 18:01
Der hat ein COM-Interface (InternetExplorer.Application) und das kann man unter anderem über PowerShell ansteuern. Dann müßte man nur noch schauen, was die API zu den Druckoptionen erlaubt; ich würde aber erwarten, daß PrintRange() in irgendeiner Form implementiert ist.
Alternativ halt irgendein programmierbarer PDF-Reader oder sonst ein Tool, was PDF verarbeiten kann, wo man dann seitenweise durchgehen kann und dann sowas wie $pages = Document.PageCount; Document.Print(1;$pages-1) sagen darf.
Da müßte man dann schauen, wer sowas tut.
Batch ist aber denkbar schlecht. Wenn man das nimmt, muß man zwangsläufig existierende Implementierungen greifen.
#9
geschrieben 17. November 2016 - 09:15
Das Batch Skript von mir oben funktioniert jedoch soweit nach meinen Wünschen schon mal nahezu "perfekt"
#10
geschrieben 11. Juli 2017 - 10:44
ich kann genau so etwas super gut gebrauchen und habe es bei mir nach Deiner Anleitung versucht.
Leider bricht er immer nach 4 PDF`s das Drucken ab und es kommt folgende Meldung:
"Beim öffnen dieses Dokuments ist ein Fehler aufgetreten. Diese Datei kann nicht gefunden werden."
Es wäre super wenn Du mir behilflich sein könntest.
Vielen Dank im Voraus...!
Schöne Grüße
#11
geschrieben 11. Juli 2017 - 10:47
Zitat (heinzkram: 11. Juli 2017 - 10:44)
ich kann genau so etwas super gut gebrauchen und habe es bei mir nach Deiner Anleitung versucht.
Leider bricht er immer nach 4 PDF`s das Drucken ab und es kommt folgende Meldung:
"Beim öffnen dieses Dokuments ist ein Fehler aufgetreten. Diese Datei kann nicht gefunden werden."
Es wäre super wenn Du mir behilflich sein könntest.
Vielen Dank im Voraus...!
Schöne Grüße
Wie lauten die Dateinamen? Evtl. hat die 5. PDF Datei Umlaute/Sonderzeichen im Dateinamen, weswegen das Skript dann abbricht?
#12
geschrieben 11. Juli 2017 - 11:14
Am Dateinamen selbst kann es denke ich nicht liegen.
Ich habe mal alle umbenannt, 1.pdf - 7.pdf oder mal a.pdf,b.pdf usw. jedes mal das selbe Ergebnis.
Er bricht irgendwann einfach ab.
#13
geschrieben 11. Juli 2017 - 11:22
Dieser Beitrag wurde von Gispelmob bearbeitet: 11. Juli 2017 - 11:22
#14
geschrieben 11. Juli 2017 - 11:26
Komisch ist, ich bin mir sicher, daß es die ersten Male funktioniert hat.
#15
geschrieben 12. Juli 2017 - 08:11
- ← Grafik Treiber für Dell Inspiron 6400 mit W10
- System & Software - Windows 10
- Internetfreigabe resetten oder an/aus stellen mit Skript →