/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
pdf-filer og indsættelse af sidetal + filn~
Fra : Martin Jørgensen


Dato : 16-04-04 20:18

Hej NG.

Nedenstående spørgsmål blev også forgæves stilt i dk.edb.tekst, men der er
nok nogle unix-hajer som sikkert kan svare på spørgsmålet herinde:

På DTU vil jeg meget gerne have Adobe Acrobat Reader 5.0 til at indsætte
filnavnet og sidenummeret, inklusive det totale antal sider i alt, på de
sider jeg udskriver. Hvordan gør jeg dette bedst? Jeg syntes ikke jeg
kunne/kan se nogen løsning, umiddelbart.

Men problemet må kunne løses på en måde - sikkert vha. en smart
Unix-kommando, måske?

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

 
 
Stig H. Jacobsen (17-04-2004)
Kommentar
Fra : Stig H. Jacobsen


Dato : 17-04-04 00:10

On Fri, 16 Apr 2004 21:17:37 +0200, Martin Jørgensen wrote:

> På DTU vil jeg meget gerne have Adobe Acrobat Reader 5.0 til at indsætte
> filnavnet og sidenummeret, inklusive det totale antal sider i alt, på de
> sider jeg udskriver. Hvordan gør jeg dette bedst?

Jeg tror ikke at readeren kan - den er jo bare til at læse og
printe dokumenter med.

Hvis det er dig selv som vedligeholder dokumenterne, så er
løsningen vel at indsætte sidenumre i dokumenterne før de bliver
lavet til .PDF.

--
Stig
(remove the 'no's to send me mail)

Martin Jørgensen (17-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 17-04-04 20:36

Stig H. Jacobsen wrote:

> On Fri, 16 Apr 2004 21:17:37 +0200, Martin Jørgensen wrote:
>
>> På DTU vil jeg meget gerne have Adobe Acrobat Reader 5.0 til at indsætte
>> filnavnet og sidenummeret, inklusive det totale antal sider i alt, på de
>> sider jeg udskriver. Hvordan gør jeg dette bedst?
>
> Jeg tror ikke at readeren kan - den er jo bare til at læse og
> printe dokumenter med.

Næh, men der findes sikkert en eller anden smart unix-kommando som kan,
gætter jeg på...

> Hvis det er dig selv som vedligeholder dokumenterne, så er
> løsningen vel at indsætte sidenumre i dokumenterne før de bliver
> lavet til .PDF.

Det er selvfølgelig ikke mig selv.

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Ivar Madsen (17-04-2004)
Kommentar
Fra : Ivar Madsen


Dato : 17-04-04 22:46

Martin Jørgensen skrev i -dk.edb.system.unix:

>> Jeg tror ikke at readeren kan - den er jo bare til at læse og
>> printe dokumenter med.
> Næh, men der findes sikkert en eller anden smart unix-kommando som kan,
> gætter jeg på...

Måske ikke en enkelt komando, men med en stribe komandoer kan du.
Jeg så engang et program der kunne lave pdf om til html, mener at det var
pdf2html, og html kan du gøre flere ting ved, hvis ikke du kan få en browser
til at sætte sidetal på, så kan du med lynx --dump lave det om til ren txt som
du med en txteditor kan sætte sidetal på.

--
Med venlig hilsen Ivar Madsen
--------------------------------------------------------------------------------
http://milli.dk/webupdate/ nu i version 0.3.3 nogle sider meldtes konstant
opdateret, dette er fixet, båndbredebegrænsningen er desvære fjernet igen.

Steen Suder, privat (17-04-2004)
Kommentar
Fra : Steen Suder, privat


Dato : 17-04-04 17:46

Martin Jørgensen wrote:
> Hej NG.
>
> Nedenstående spørgsmål blev også forgæves stilt i dk.edb.tekst, men der er
> nok nogle unix-hajer som sikkert kan svare på spørgsmålet herinde:
>
> På DTU vil jeg meget gerne have Adobe Acrobat Reader 5.0 til at indsætte
> filnavnet og sidenummeret, inklusive det totale antal sider i alt, på de
> sider jeg udskriver. Hvordan gør jeg dette bedst? Jeg syntes ikke jeg
> kunne/kan se nogen løsning, umiddelbart.
>
> Men problemet må kunne løses på en måde - sikkert vha. en smart
> Unix-kommando, måske?

Lidt far-fetched, men jeg tænker i baner af at filtrere output (Acrobat
reader print command) igennem mpage før det pipes til lpr, kprinter
eller hvad der nu bruges.

--
Steen Suder
Prøv at forestille dig, at du er en anden, og læs så din artikel igennem
inden du sender den. Det er ikke en skam at stave ordentligt og
formulere sig, så andre kan læse og forstå hvad du skriver.

Martin Jørgensen (17-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 17-04-04 20:40

Steen Suder, privat wrote:

> Martin Jørgensen wrote:
-snip-
>> Men problemet må kunne løses på en måde - sikkert vha. en smart
>> Unix-kommando, måske?
>
> Lidt far-fetched, men jeg tænker i baner af at filtrere output (Acrobat
> reader print command) igennem mpage før det pipes til lpr, kprinter
> eller hvad der nu bruges.

Ok, jeg har kigget lidt på mpage. Den virker vist kun for ASCII til
postcript, er det ikke korrekt forstået? PDF er vel ikke almindelig ASCII?
Jeg håber at nogen har en løsning. Kan man virkeligt ikke lave et lille
script eller lignende?

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Jesper Harder (17-04-2004)
Kommentar
Fra : Jesper Harder


Dato : 17-04-04 23:53

Martin Jørgensen <unoder.spam@jay.spam.net> writes:

> På DTU vil jeg meget gerne have Adobe Acrobat Reader 5.0 til at
> indsætte filnavnet og sidenummeret, inklusive det totale antal sider
> i alt, på de sider jeg udskriver. Hvordan gør jeg dette bedst? Jeg
> syntes ikke jeg kunne/kan se nogen løsning, umiddelbart.

Du kan gøre det ved at indsætte en Postscript prolog, hvor du
omdefinerer en passende Postscript operator, fx 'showpage' eller
'EndPage', til at indsætte den tekst du ønsker på hver side.

Her er et eksempel, der indsætter sidetal i bunden af siden. Gem det
i en fil, 'pnum.ps'.

--8<---------------cut here---------------start------------->8---
globaldict /pagenumber 0 put
/showpage {
initgraphics
globaldict begin
/pagenumber pagenumber 1 add def
pagenumber ( ) cvs
/Helvetica 10 selectfont
290 10 moveto show
systemdict begin
showpage   
end
end
} bind def
--8<---------------cut here---------------end--------------->8---

Så kan du gøre noget i stil med

pdftops tekst.pdf - | cat pnum.ps - | lpr

for at udskrive en PDF-fil med sidetal.

Det overlades som en øvelse til læseren at udvide det til at inkludere
filnavn og det totale antal sider Du får sikker brug for awk eller
lignende.

--
Jesper Harder <http://purl.org/harder/>

Martin Jørgensen (18-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 18-04-04 18:04

Jesper Harder wrote:
-snip-

> Du kan gøre det ved at indsætte en Postscript prolog, hvor du
> omdefinerer en passende Postscript operator, fx 'showpage' eller
> 'EndPage', til at indsætte den tekst du ønsker på hver side.

Det har jeg aldrig rodet med før.

> Her er et eksempel, der indsætter sidetal i bunden af siden. Gem det
> i en fil, 'pnum.ps'.

Gjort.

> --8<---------------cut here---------------start------------->8---
> globaldict /pagenumber 0 put
> /showpage {
> initgraphics
> globaldict begin
> /pagenumber pagenumber 1 add def
> pagenumber ( ) cvs
> /Helvetica 10 selectfont
> 290 10 moveto show
> systemdict begin
> showpage
> end
> end
> } bind def
> --8<---------------cut here---------------end--------------->8---
>
> Så kan du gøre noget i stil med
>
> pdftops tekst.pdf - | cat pnum.ps - | lpr
>
> for at udskrive en PDF-fil med sidetal.

Det virker bare ikke. Har du/andre afprøvet det? Først udskrev den en blank
side. Dernæst udskrev den indholdet af tekstfilen, som den ser ud på
skærmen, når man kører den gennem en "cat pnum.ps"...

> Det overlades som en øvelse til læseren at udvide det til at inkludere
> filnavn og det totale antal sider Du får sikker brug for awk eller
> lignende.

Kan du/andre ikke guide mig lidt mere... Jeg er ikke særlig "stiv" i
linux... Og ovennævnte virker jo ikke på min egen printer derhjemme.
Endvidere kører dtu's printere jo gennem netværket og der virker "lpr" vel
ikke umiddelbart fordi "lpr" sender vel bare dataene til parallel-porten?

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Thomas S. Iversen (18-04-2004)
Kommentar
Fra : Thomas S. Iversen


Dato : 18-04-04 18:26

On 2004-04-18, Martin Jørgensen <unoder.spam@jay.spam.net> wrote:

> Endvidere kører dtu's printere jo gennem netværket og der virker "lpr" vel
> ikke umiddelbart fordi "lpr" sender vel bare dataene til parallel-porten?

cat /etc/printcap

viser hvilke printere maskinen kender

lpr -P<printernavn> fil.ps

udskriver på den valgte printer

Mvh Thomas

Martin Heller (18-04-2004)
Kommentar
Fra : Martin Heller


Dato : 18-04-04 18:44

Martin Jørgensen wrote in
<4082b510$0$286$edfadb0f@dread12.news.tele.dk>:
> Endvidere kører dtu's printere
> jo gennem netværket og der virker "lpr" vel ikke
> umiddelbart fordi "lpr" sender vel bare dataene til
> parallel-porten?

Du kan godt bruge lpr til at printe på DTU's printere. Du
skal bare angive et printernavn: lpr -p<printer>.

Martin Jørgensen (19-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 19-04-04 19:48

Martin Heller wrote:

> Martin Jørgensen wrote in
> <4082b510$0$286$edfadb0f@dread12.news.tele.dk>:
>> Endvidere kører dtu's printere
>> jo gennem netværket og der virker "lpr" vel ikke
>> umiddelbart fordi "lpr" sender vel bare dataene til
>> parallel-porten?
>
> Du kan godt bruge lpr til at printe på DTU's printere. Du
> skal bare angive et printernavn: lpr -p<printer>.

Ok, men der hvor vi mek'ere befinder os kører computerne Windows 2000 og
vha. Citrix kan jeg logge ind på unix-systemet. Det fremgik selvfølgelig
ikke og det kunne du ikke vide. Den kommando du skriver der, tvivler jeg på
virker i Windows 2000-setup...

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Jesper Harder (18-04-2004)
Kommentar
Fra : Jesper Harder


Dato : 18-04-04 22:17

Martin Jørgensen <unoder.spam@jay.spam.net> writes:

> Jesper Harder wrote:
>
>> Så kan du gøre noget i stil med
>>
>> pdftops tekst.pdf - | cat pnum.ps - | lpr
>>
>> for at udskrive en PDF-fil med sidetal.
>
> Det virker bare ikke. Har du/andre afprøvet det?

Nej, jeg havde kun kigget på resultatet i en Postscriptfremviser.

> Først udskrev den en blank side. Dernæst udskrev den indholdet af
> tekstfilen, som den ser ud på skærmen, når man kører den gennem en
> "cat pnum.ps"...

Det viser sig at lpr skal have et '-l' flag:

pdftops tekst.pdf - | cat pnum.ps - | lpr -l

Det er sikkert fordi lpr laver små julelege med at kigge på den første
linje for at se om filen ser ud til at være en Postscriptfil.

I stedet kan du indsætte:

%!PS-Adobe-3.0

som den første linje i filen pnum.ps. Det vil måske virke bedre, hvis
de printere du udskriver til ikke er Postscriptprintere (i så fald går
jeg ud fra du har opsat din printer til at kunne udskrive Postscript).

>> Det overlades som en øvelse til læseren at udvide det til at inkludere
>> filnavn og det totale antal sider Du får sikker brug for awk eller
>> lignende.
>
> Kan du/andre ikke guide mig lidt mere... Jeg er ikke særlig "stiv" i
> linux...

Jeg ville bruge Emacs. Gem nedenstående i filen 'pnum.el' og skriv
noget i stil med dette fra kommandolinjen:

emacs -q --batch -l pnum.el -f pnum tekst.pdf

--8<---------------cut here---------------start------------->8---
(defvar prolog
"%%!PS-Adobe-3.0
globaldict /pagenumber 0 put
/filename ( - %s) def
/pages (/%s) def
/showpage {
initgraphics
globaldict begin
/pagenumber pagenumber 1 add def
pagenumber ( ) cvs
/Helvetica 10 selectfont
290 20 moveto show
    pages show
    filename show
systemdict begin
showpage   
end
end
} bind def")

(defun pnum ()
(let ((filename (car command-line-args-left))
   (pages ""))
(with-temp-buffer
(call-process "pdftops" nil t nil filename "-")
(goto-char (point-min))
(when (re-search-forward "%%Pages: \\([0-9]+\\)" nil t)
   (setq pages (match-string 1)))
(goto-char (point-min))
(insert (format prolog filename pages))
(call-process-region (point-min) (point-max) "lpr" nil 0 nil))))
--8<---------------cut here---------------end--------------->8---

--
Jesper Harder <http://purl.org/harder/>

Martin Jørgensen (19-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 19-04-04 20:03

Du slipper ikke så let

Jesper Harder wrote:

> Martin Jørgensen <unoder.spam@jay.spam.net> writes:
-snip-

>> Først udskrev den en blank side. Dernæst udskrev den indholdet af
>> tekstfilen, som den ser ud på skærmen, når man kører den gennem en
>> "cat pnum.ps"...
>
> Det viser sig at lpr skal have et '-l' flag:
>
> pdftops tekst.pdf - | cat pnum.ps - | lpr -l
>
> Det er sikkert fordi lpr laver små julelege med at kigge på den første
> linje for at se om filen ser ud til at være en Postscriptfil.
>
> I stedet kan du indsætte:
>
> %!PS-Adobe-3.0
>
> som den første linje i filen pnum.ps. Det vil måske virke bedre, hvis
> de printere du udskriver til ikke er Postscriptprintere (i så fald går
> jeg ud fra du har opsat din printer til at kunne udskrive Postscript).

Jeg har nu tilføjet den linje du skrev. Jeg troede at alle Laserprintere
forstod PostScript. Jeg har forsøgt mig med min private laserprinter, en HP
5L uden held. Jeg ved ikke lige om jeg skal gøre noget specielt for at
opsætte den til at kunne udskrive Postscript. Det mente jeg helt bestemt,
at den selv forstod, automatisk...

>>> Det overlades som en øvelse til læseren at udvide det til at inkludere
>>> filnavn og det totale antal sider Du får sikker brug for awk eller
>>> lignende.
>>
>> Kan du/andre ikke guide mig lidt mere... Jeg er ikke særlig "stiv" i
>> linux...
>
> Jeg ville bruge Emacs. Gem nedenstående i filen 'pnum.el' og skriv
> noget i stil med dette fra kommandolinjen:
>
> emacs -q --batch -l pnum.el -f pnum tekst.pdf

Her er outputtet:

Loading /etc/emacs/site-start.d/gettext.el (source)...
Loading /etc/emacs/site-start.d/python.el (source)...
Loading /etc/emacs/site-start.d/rpm.el (source)...
Symbol's value as variable is void:   

-snip resten-

Jeg prøvede også med din nye kode i pnum.el... Måske skulle jeg opgive...
Printeren bliver bare ved og ved med at udskrive tomme sider, nu... (jeg
udskriver på min egen printer derhjemme)...

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Kent Friis (19-04-2004)
Kommentar
Fra : Kent Friis


Dato : 19-04-04 20:22

Den Mon, 19 Apr 2004 21:02:49 +0200 skrev Martin Jørgensen:
>
> Jeg har nu tilføjet den linje du skrev. Jeg troede at alle Laserprintere
> forstod PostScript. Jeg har forsøgt mig med min private laserprinter, en HP
> 5L uden held. Jeg ved ikke lige om jeg skal gøre noget specielt for at
> opsætte den til at kunne udskrive Postscript. Det mente jeg helt bestemt,
> at den selv forstod, automatisk...

Laserjet 5L forstår IKKE postscript.

Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/

Peter Dalgaard (19-04-2004)
Kommentar
Fra : Peter Dalgaard


Dato : 19-04-04 20:56

Kent Friis <leeloo@phreaker.net> writes:

> Den Mon, 19 Apr 2004 21:02:49 +0200 skrev Martin Jørgensen:
> >
> > Jeg har nu tilføjet den linje du skrev. Jeg troede at alle Laserprintere
> > forstod PostScript. Jeg har forsøgt mig med min private laserprinter, en HP
> > 5L uden held. Jeg ved ikke lige om jeg skal gøre noget specielt for at
> > opsætte den til at kunne udskrive Postscript. Det mente jeg helt bestemt,
> > at den selv forstod, automatisk...
>
> Laserjet 5L forstår IKKE postscript.

Men man sætter den vel bare op som virtuel PS printer på Linux, ik'?

--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907

Kent Friis (19-04-2004)
Kommentar
Fra : Kent Friis


Dato : 19-04-04 21:21

Den 19 Apr 2004 21:55:35 +0200 skrev Peter Dalgaard:
> Kent Friis <leeloo@phreaker.net> writes:
>
>> Den Mon, 19 Apr 2004 21:02:49 +0200 skrev Martin Jørgensen:
>> >
>> > Jeg har nu tilføjet den linje du skrev. Jeg troede at alle Laserprintere
>> > forstod PostScript. Jeg har forsøgt mig med min private laserprinter, en HP
>> > 5L uden held. Jeg ved ikke lige om jeg skal gøre noget specielt for at
>> > opsætte den til at kunne udskrive Postscript. Det mente jeg helt bestemt,
>> > at den selv forstod, automatisk...
>>
>> Laserjet 5L forstår IKKE postscript.
>
> Men man sætter den vel bare op som virtuel PS printer på Linux, ik'?

Ghostscript kan gøre det, ja, men nu skrev han jo "Det mente jeg helt
bestemt at den selv forstod, automatisk", og det gør printeren ikke.

Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/

Martin Jørgensen (20-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 20-04-04 19:20

Kent Friis wrote:

> Den 19 Apr 2004 21:55:35 +0200 skrev Peter Dalgaard:
>> Kent Friis <leeloo@phreaker.net> writes:
-snip-
>>> Laserjet 5L forstår IKKE postscript.
>>
>> Men man sætter den vel bare op som virtuel PS printer på Linux, ik'?
>
> Ghostscript kan gøre det, ja, men nu skrev han jo "Det mente jeg helt
> bestemt at den selv forstod, automatisk", og det gør printeren ikke.

Hvordan sættes Ghostscript op til dette?

Man ghostscript siger f.eks:

For example, for output to an Epson printer you might use the command

gs -sDEVICE=epson myfile.ps

Dette fandt jeg på linuxprinting.org:

Remember that the 5L is more like the LaserJet 4 family than the LaserJet 5
family (as with most "L" printers from HP). For example it does not work
with the "lj5gray"/"lj5mono" drivers but only with the "ljet4"/"lj4dith"
drivers (and Gimp-Print).

Så jeg gætter på at gs -sDEVICE=ljet4 enum.ps skulle give noget:

Men flg. besked kommer istedet:

[martin@virus Desktop]$ gs -sDEVICE=ljet4 enum.ps
ESP Ghostscript 7.07 (2003-11-19)
Copyright 2003 artofcode LLC and Easy Software Products, all rights
reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /undefinedfilename in (enum.ps)
Operand stack:

Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push --nostringval--
--nostringval--
Dictionary stack:
--dict:1049/1417(ro)(G)-- --dict:0/20(G)-- --dict:68/200(L)--
Current allocation mode is local
Last OS error: 2
ESP Ghostscript 7.07.2: Unrecoverable error, exit code 1


mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Martin Jørgensen (20-04-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 20-04-04 15:20

Kent Friis wrote:

> Den Mon, 19 Apr 2004 21:02:49 +0200 skrev Martin Jørgensen:
>>
>> Jeg har nu tilføjet den linje du skrev. Jeg troede at alle Laserprintere
>> forstod PostScript. Jeg har forsøgt mig med min private laserprinter, en
>> HP 5L uden held. Jeg ved ikke lige om jeg skal gøre noget specielt for at
>> opsætte den til at kunne udskrive Postscript. Det mente jeg helt bestemt,
>> at den selv forstod, automatisk...
>
> Laserjet 5L forstår IKKE postscript.

Ok, så er det forklaringen på at intet virker... Mange tak for oplysningen..

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Jesper Harder (19-04-2004)
Kommentar
Fra : Jesper Harder


Dato : 19-04-04 21:31

Martin Jørgensen <unoder.spam@jay.spam.net> writes:

> Jesper Harder wrote:
>
> Jeg har nu tilføjet den linje du skrev. Jeg troede at alle
> Laserprintere forstod PostScript. Jeg har forsøgt mig med min
> private laserprinter, en HP 5L uden held.

Jeg har aldrig brugt andet end Postscriptprintere -- så det ved jeg
ikke rigtig noget om.

>> Jeg ville bruge Emacs. Gem nedenstående i filen 'pnum.el' og skriv
>> noget i stil med dette fra kommandolinjen:
>>
>> emacs -q --batch -l pnum.el -f pnum tekst.pdf
>
> Her er outputtet:
>
> Loading /etc/emacs/site-start.d/gettext.el (source)...
> Loading /etc/emacs/site-start.d/python.el (source)...
> Loading /etc/emacs/site-start.d/rpm.el (source)...
> Symbol's value as variable is void:   
>
> -snip resten-

Du klippede alt det interessante; men prøv i stedet:

emacs -q --batch --no-site-file -l pnum.el -f pnum tekst.pdf

--
Jesper Harder <http://purl.org/harder/>

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste