Gå til innhold

Automatisk print av pdf


Anbefalte innlegg

Hei

Kan noen forklare meg hvordan jeg kan lage et script som printer pdf automatisk ettersom det dokker opp i valgt mappe feks: c://programfiler/pdf

 

Er dette i det hele-tatt. Har googlet litt uten å finne noen god løsning.

Lenke til kommentar
Videoannonse
Annonse

Jada, det er mulig. Skal pdf-filene bli liggende i mappen etter at de er skrevet ut? Det er nemlig litt enklere å få dette til dersom filen kan slettes etter utskrift.

 

Du kan lage et script som gjør noe slikt som dette:

 

  1. Sjekk om det er PDF-filer i mappen. Hvis ingen PDF-filer ble funnet, vent i X sekunder og gå til pkt. 1.
  2. Velg en fil, og bruk et program (f.eks. Adobe Reader) til å sende filen til en angitt skriver. Ta vare på prosess-IDen til AR.
  3. Kjører AR-prosessen fortsatt? Hvis ja, vent i X sekunder og gå til pkt. 3.
  4. Slett filen. Dersom dette ikke lar seg gjøre: Send feilmelding og stopp (for å unngå flere utskrifter av samme fil).
  5. Gå til pkt. 1

Det er et par praktiske problemer man må ta hensyn til. Det kan f.eks. ta tid fra en fil er synlig i mappen til den faktisk er ferdiglagret, og i mellomtiden vil filen være låst (og ufullstendig). Dette kan løses ved at man i pkt. 2 sjekker om filen kan låses, og går tilbake til pkt. 1 dersom dette ikke lar seg gjøre.

 

Det kan også være hensiktsmessig å se om Adobe Reader (eller hva man nå bruker) returnerer en feilkode, og det finnes mer elegante måter å håndtere både prosessheng (pkt. 3 venter i utgangspunktet i evigheter) og låste filer (pkt. 4) enn det jeg har skissert i eksempelet.

 

Hvis man vil gjøre dette veldig portabelt og avansert, går det an hente ut fra registeret hvilket program som er registrert for PDF-utskrift. Her er eksempler på batch-script som gjør nettopp dette.

 

Edit: Klarte ikke å la dette ligge, nei. Her er et eksempel som bruker Foxit Reader til å skrive ut dokumenter til en angitt skriver som er delt ut fra en annen server:

 

@echo off

setlocal

 

set pdfdir=C:\PDF

set pdfprintapp=C:\Program Files (x86)\Foxit Reader\Foxit Reader.exe

set pdfprintparam=-t

set pdfprinter=\\prn-01\TA DCC-2625

set logfile=%windir%\TEMP\pdfprint.log

 

:WaitForFile

ping -n 5 localhost >nul

dir %pdfdir%\*.pdf >nul 2>nul

if errorlevel 1 goto WaitForFile

 

for %%a in ("%pdfdir%\*.pdf") do call :PrintPDF "%%a"

goto WaitForFile

 

:PrintPDF

ping -n 2 localhost >nul

"%pdfprintapp%" %pdfprintparam% "%~1" "%pdfprinter%"

del /f /q "%~1"

if exist "%~1" goto FatalError

goto end

 

:FatalError

echo Feil ved utskrift av "%~1": Noe Gikk Galt >>%logfile%

:Loop

goto Loop

 

:end

Dette er testet i XP og 7, men det inneholder ingen feilhåndtering utover en primitiv evig loop dersom filen ikke lar seg slette (da filen ellers ville blitt skrevet ut om og om igjen). Foxit bruker "-t"-parameteret for å angi filnavn og skriver. Adobe Reader har et tilsvarende parameter, men det har jeg ikke testet.

 

Forslag til forbedringer: Test om filen er låst før utskrift, f.eks. ved å prøve å flytte filen til en anne mappe. Kjør Foxit i bakgrunnen med "start", gjerne via eget script m/sjekk av feilkoder, og bruk tasklist for å vente til den har avsluttet (timeout/taskkill etter et gitt antall sekunder). Generelt bedre logging, f.eks. med dato og klokkeslett.

 

NB: Hvis du skal kjøre dette i bakgrunnen, husk å kjøre det med en konto som har tilgang til skriveren/nettverket.

Endret av conundrum
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...