Toon posts:

MS Word -> PDF onder Unix

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heeft er iemand ervaring met het omzetten van MS Word documenten naar PDF of Postscript onder Linux?

Het is de bedoelding dat dit in een scrippie gebeurt, en dus zonder tussenkomst van de gebruiker. Printen met OpenOffice.org naar een PS file of PDF is dus geen optie, al doet OO.org het verder prima.

Ik heb al gekeken naar diverse pakketten. De beste die ik kon vinden was wvware, maar die breekt de layout. Plaatjes blijven niet op de plek etc.

Heeft er iemand anders nog suggesties? Liefst GPL of BSD licentie, maar ook betaald valt over te denken.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 22:16

voodooless

Sound is no voodoo!

De beta's van OO 1.1 kunnen rechtstreeks naar PDF, en dat werkt super! Misschien dat je via scripting het een en ander kunt automatiseren..

maar vraagje? hoezo word documenten. Probeer lyx eens, kun je ook prima mee typen als je het eenmaal gewend bent..

[ Voor 68% gewijzigd door voodooless op 01-09-2003 14:34 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik zou niet anders willen dan alternatieven, maar de systeemeisen zijn nou eenmaal msword, en daar kom ik niet onder uit. :(

Ook ben ik op de hoogte van de opties met OO.org, maar dat kan niet 100% automatisch, voor zover ik weet. Toch bedankt voor de suggestie.

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 01-05 19:46
Ik heb wel een keer een computerblad gelezen waar ze dieper ingingen over de "verborgen" mogelijkheden van OpenOffice.
Daar zeiden ze dat je OO als server kon installeren en dan met een commando automatisch documenten kon laten converteren. Misschien kun je daar naar zoeken?

let the past be the past.


Verwijderd

Topicstarter
SPee schreef op 01 september 2003 @ 14:42:
Ik heb wel een keer een computerblad gelezen waar ze dieper ingingen over de "verborgen" mogelijkheden van OpenOffice.
Daar zeiden ze dat je OO als server kon installeren en dan met een commando automatisch documenten kon laten converteren. Misschien kun je daar naar zoeken?
hmmz, interessant. Heb je enig idee welk blad dat was?

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 25-04 22:13
misschien heb je wat aan deze link

ach...in een volgend leven lach je er om!


  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 01-05 15:00
Waar je eventueel aan kunt denken is het volgende: Maak een pc klaar met OOo en samba. Maak een macro (of hoe heet het onder OOo) die kijk of er in een bepaalde directory een bestand staat, zo ja openen en converteren en die weer in een andere dir opslaan. Die twee dirs zijn dan shares en voila. Is misschien simpel (te?) maar wel effectief.

Verwijderd

Topicstarter
0siris schreef op 01 September 2003 @ 14:54:
misschien heb je wat aan deze link
op het eerste gezicht denk ik het niet,maar ik ga het zeker even proberen als het openoffice macro verhaal niet werkt. Thanx :D

Verwijderd

Wat ook een optie is ( een netwerk optie ) :

Ghostscript + tools installen als dat nog niet op je systeem draait...

Een printer queue aanmaken onder linux ( man lpd , man printcap )
Het printfiter wat je bijvoorbeeld kunt gebruiken :

--cut--
#!/bin/bash

DATE=$(date +%d-%b-%H-%M-%S)
ps2pdf - /samba_share/outputfile-${DATE}.pdf
--cut--

Dan configureer je Samba zodat de printers over het netwerk beschikbaar zijn.
Ook configureer je samba zo zodat ook de samba_share beschikbaar is voor je windows clients ( denk ook aan alle rechten van je share etc ). Op www.tldp.org staat geloof ik ook wel een Samba HOWTO en ook nog een Linux Printing HOWTO.

Dan maak je onder Windows een netwerkprinter aan en je selecteerd voor bij de printerdriver de Apple Laserwriter III ( of II, of zo iets... Ik heb geen windows hier... :) ). Deze driver maakt goede postscript data.

Als alles goed is geconfigureerd, zullen in de samba_share je pdf bestanden geplaatst worden ( met datum en tijd ). Dus gewoon simpel vanuit een windows applicatie printen, et voila uw pdf staat klaar in de share.

Op deze variant bestaan veel variaties, je kunt bijvoorbeeld de iText java class gebruiken om pdf bestanden te encrypten etc. Deze plaats je dan ook in het printfilter. Dus met een beetje scripting en de juiste tools kun je een heel eind komen, zonder veel centjes uit te geven aan dure acrobat tools en dergelijke...

[ Voor 10% gewijzigd door Verwijderd op 01-09-2003 22:29 ]


Verwijderd

Topicstarter
Verwijderd schreef op 01 September 2003 @ 22:15:
Wat ook een optie is ( een netwerk optie ) :

Ghostscript + tools installen als dat nog niet op je systeem draait...

Een printer queue aanmaken onder linux ( man lpd , man printcap )
Het printfiter wat je bijvoorbeeld kunt gebruiken :

--cut--
#!/bin/bash

DATE=$(date +%d-%b-%H-%M-%S)
ps2pdf - /samba_share/outputfile-${DATE}.pdf
--cut--

Dan configureer je Samba zodat de printers over het netwerk beschikbaar zijn.
Ook configureer je samba zo zodat ook de samba_share beschikbaar is voor je windows clients ( denk ook aan alle rechten van je share etc ). Op www.tldp.org staat geloof ik ook wel een Samba HOWTO en ook nog een Linux Printing HOWTO.

Dan maak je onder Windows een netwerkprinter aan en je selecteerd voor bij de printerdriver de Apple Laserwriter III ( of II, of zo iets... Ik heb geen windows hier... :) ). Deze driver maakt goede postscript data.

Als alles goed is geconfigureerd, zullen in de samba_share je pdf bestanden geplaatst worden ( met datum en tijd ). Dus gewoon simpel vanuit een windows applicatie printen, et voila uw pdf staat klaar in de share.

Op deze variant bestaan veel variaties, je kunt bijvoorbeeld de iText java class gebruiken om pdf bestanden te encrypten etc. Deze plaats je dan ook in het printfilter. Dus met een beetje scripting en de juiste tools kun je een heel eind komen, zonder veel centjes uit te geven aan dure acrobat tools en dergelijke...
Dat is geen optie, de gebruiker moet het dan namelijk nog zelf printen. In dit geval wel naar een alternatieve printer, maar toch.

Ik moet echt een .doc bestanden om kunnen zetten, niet een of andere vorm van stream waar dezelfde data instaat als het .doc bestand. Ik moet echt het bestand kunnen openen op de bash prompt en converteren naar ander formaat.

Thanx voor de moeite anyway.

  • akoster
  • Registratie: Januari 2001
  • Laatst online: 01-05 09:13
Je kan, als je het graag via de prompt wil doen, toch gewoon via de prompt dat bestandje laten printen dan ?

I can see clearly now, the brain is gone...


Verwijderd

Topicstarter
_Arnie_ schreef op 02 September 2003 @ 09:33:
Je kan, als je het graag via de prompt wil doen, toch gewoon via de prompt dat bestandje laten printen dan ?
goed idee, daar had ik ook al aan gedacht. Maar dan moet ik dus wel een programma hebben wat word documenten kan inlezen en kan printen, zonder dat dit interactie van de user vereist. En tot nu toe heb ik geen programma gevonden wat dat goed doet, en dat is dus ook de hele vraag....

Verwijderd

moet wel kunnen, weet niet precies. maar vanuit de verkenner kun je ook rechtreeks een bestand printen. dan moet je wel dde commando's sturen.
dit is dus met ms Word

Afbeeldingslocatie: http://www.theforumisdown.com/uploadfiles/0103/options.JPG

[ Voor 8% gewijzigd door Verwijderd op 02-09-2003 09:55 ]


Verwijderd

Topicstarter
Verwijderd schreef op 02 september 2003 @ 09:54:
moet wel kunnen, weet niet precies. maar vanuit de verkenner kun je ook rechtreeks een bestand printen. dan moet je wel dde commando's sturen.

[afbeelding]
En onder Unix?

Verwijderd

Dat zou ik niet zo snel weten, maar als je een samba printer share opzet dan kan het alsnog. maar dat het niet de schoonheids prijs wint, is duidelijk

Verwijderd

Topicstarter
Verwijderd schreef op 02 September 2003 @ 09:58:
[...]


Dat zou ik niet zo snel weten, maar als je een samba printer share opzet dan kan het alsnog. maar dat het niet de schoonheids prijs wint, is duidelijk
zoals eerder gesteld is dat geen optie, dit vereist nog steeds user interactie... iemand moet dan nog steeds op het knoppie 'print' klikken

  • Wilke
  • Registratie: December 2000
  • Laatst online: 20:22
Okee, ik heb hier een OpenOffice 1.1 beta (ik geloof beta 2, er is inmiddels al een RC3 dus ik zou die nemen).

Je kunt gewoon macro's opnemen, en dan kijken wat voor soort code het genereert. Met de hulp van onderstaande pagina's moet je dan denk ik wel iets kunnen bereiken:
OpenOffice Macro Page met stapels links naar andere resources en lijst van dispatch commando's

Ik kom met 'macro opnemen' in 5 minuten al tot zoiets, maar heb geen tijd en zin om het verder voor je uit te zoeken helaas :P
sub PrintDoc
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to current document
rem ** Hier moet je dus eigenlijk zorgen dat een bepaald document geladen wordt, i.p.v.
rem huidige doc gebruiken!! **
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Open", "", 0, Array())

rem ----------------------------------------------------------------------
rem Met onderstaand stukje wordt het document geprint naar file (ps in dit geval, PDF kan
rem vast ook, probeer met macro recorder!)

dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "FileName"
args2(0).Value = "/home/wilke/test.ps"
args2(1).Name = "Copies"
args2(1).Value = 1
args2(2).Name = "Collate"
args2(2).Value = false

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())

rem Daarna wil je het document/openoffice graag sluiten. Alleen dat gaat nog niet goed,
rem omdat de printjob nog niet klaar is. Je zult dus nog een blocking call naar 'executeDispatch'
rem moeten vinden ofzoiets

dispatcher.executeDispatch(document, ".uno:Quit", "", 0, Array())
end sub
Succes ermee, het lijkt me in ieder geval dat het mogelijk moet zijn met OO macro's, maar dat het makkelijk zal zijn hoor je mij niet zeggen :)

Verwijderd

Verwijderd schreef op 02 September 2003 @ 10:07:
[...]


zoals eerder gesteld is dat geen optie, dit vereist nog steeds user interactie... iemand moet dan nog steeds op het knoppie 'print' klikken
Ik denk dat de optie van in oo beter is. maar je hebt niet begrepen wat ik bedoel, het is mogelijk om ms word aan te roepen van de command line, en dan kan je met de parameters die je op http://support.microsoft....0/5/65.ASP&NoWebContent=1 kunt vinden, zien dat je ook een macro kan starten.

in die macro kun je dan zetten Print en daarna Close.

dan kan je alle bestanden aanroepen via een simpel programma of via een Batch file.

voordeel hiervan is, dat hij waarschijnlijk beter om kan gaan met word bestanden als dat oo dat kan.

  • Wilke
  • Registratie: December 2000
  • Laatst online: 20:22
Ja, ik heb wel gewerkt bij een bedrijf dat een soortgelijke setup had. Hier komt dus wel een Windows-PC met Word aan te pas. Het geheel was hopeloos instabiel (duhh...) omdat af en toe die DDE verbinding at random niet meer werkte, en dan stonden er ineens tig Word vensters open enzo. Najah, na flink tweaken en prutsen en gewoon een dagelijkse reboot instellen voor de zekerheid, werkte het redelijk.

Die setup was ongeveer zo:
  • Webserver zet documenten die geupload worden en geconverteerd moeten worden naar PDF in een of andere dir.
  • Simpel java-progje kijkt af en toe of er iets in die dir staat
  • Indien ja, roept via een java-libje dat (windows-specifiek) DDE-commando's kan sturen naar een gestart winword proces, de commando's aan voor 'print' en 'quit'
  • Geconverteerde PDF wordt weggezet op plek waar hij moet staan
  • Terug naar start :)
Hoe dan ook, in Windows kun je iets doen met die DDE commando's. In OO zul je het moeten doen met macro's. Ik denk dat het wel kan, maar het zal veel werk zijn en waarschijnlijk ook niet in alle gevallen perfect werken.

  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 03-04 22:46

jvhaarst

Eendracht maakt macht

Op http://api.openoffice.org staat een SDK, kun je daar niet redelijk eenvoudig dit mee oplossen ?
Het hele probleem is toch niet meer dan :
Open wordfile.
Sla file op als PDF.

En waarom moet het onder *nix ? Als het allemaal veel handiger werkt onder Windows, waarom dat dan niet gepakt ?
Volgens http://api.openoffice.org...m#1+4+4+Automation+Bridge is het wel te doen.

[ Voor 40% gewijzigd door jvhaarst op 03-09-2003 13:16 ]

If you don’t have enough time, stop watching TV.


  • dupke30
  • Registratie: Oktober 2002
  • Laatst online: 04-09-2023

dupke30

You Like That!!!

zoek eens het progje Win2PDF. Werkt super je selecteert de printer Win2PDF( dit is het tooltje) en dan kun je al invullen waar je de pdf file wilt opslaan!!!

signature


Verwijderd

Verwijderd schreef op 01 September 2003 @ 14:37:
Ik zou niet anders willen dan alternatieven, maar de systeemeisen zijn nou eenmaal msword, en daar kom ik niet onder uit. :(

Ook ben ik op de hoogte van de opties met OO.org, maar dat kan niet 100% automatisch, voor zover ik weet. Toch bedankt voor de suggestie.
Als je even de moeite (google) had genomen om te gaan zoeken had je een leuke macro kunnen vinden die dit automatisch doet.

Maar omdat OOO een pracht software pakket is, en het iedereen aanraad, geef zou ik onderstaande code maar eens gebruiken.

(Code werkt sowieso in de laatste beta van OOO)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
sub createpdfs
rem takes all .sxw files from chosen directory and writes .pdf files to anotyher chosen directory
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
dim sInDir as string
dim sOutDir as string
dim sFile as string
dim sUrl as string
dim spdf as string
dim doct as object   
dim args1(1) as new com.sun.star.beans.PropertyValue
dim mNoArgs() ' supplies empty arg list
' get the input and output directories for the document source and pdf output
sInDir = InputBox("Input Directory","Macro Dialog","file:///c|/Temp/pdftest/")
sOutDir = InputBox("Output Directory","Macro Dialog","file:///C|/Temp/pdftest/")
' DIR basic runtime sets directory and returns first filename
sFile = Dir(sInDir+"*.doc")  ' can be any valid selection for file namesnnnn
' set up interfaces required
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDesktop = createUnoService("com.sun.star.frame.Desktop")
While sFile <> ""  ' loop while there are files to process in input directory
   sUrl = sIndir+sfile
   ' load doc by name
   doct=oDesktop.loadComponentFromURL(sURL,"_blank",0,mNoArgs())
   rem ----------------------------------------------------------------------
   rem get access to the document so can send commands to it
   document   = doct.CurrentController.Frame
   ' output file name  replace the .xxx with .pdf
   spdf =sOutDir+ left(sfile,len(sfile)-4)+".pdf"
   rem ----------------------------------------------------------------------
    'set properties
   args1(0).Name = "URL"
   args1(0).Value = spdf
   args1(1).Name = "FilterName"
   args1(1).Value = "writer_pdf_Export"
   ' ask document controller to create the pdf
   dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())
   ' unload the document object
   doct.dispose()
   ' get next filename  null when none left
   sfile = dir
wend
end sub

Verwijderd

Topicstarter
Verwijderd schreef op 04 September 2003 @ 09:46:
[...]
Als je even de moeite (google) had genomen om te gaan zoeken had je een leuke macro kunnen vinden die dit automatisch doet.
[...]
Ik heb 'maar' 3 uur zitten zoeken op internet naar diverse oplossingen...

Verwijderd

Topicstarter
ik ga er naar kijken
andere oplossingen ben ik nog niet helemaal tevreden mee

Thanx
Pagina: 1