För txt använder jag libreoffice. Räcker för mitt ändamål, texten kommer ut som den ska.
Så här ser scriptet ut just nu, den delen som skriver ut.
Den tar just nu följande format:
jpg, png, svg, gif, txt, ods, stc, xls, xlsx, odp, pot, pps, ppt, sti, sxi, otg, sxd, odf, doc, odt, rtf, sxw, ots, sxc, xlt, odg, otp, potm, ppsx, pptx, std, sxm, docx, ott, stw, pdf, htm, tif, bmp.
Återstår att lägga till mht (message/rfc822 innehållande en hel hemsida), eml (antingen en message/rfc822 eller en multipart/mixed), samt ps (application/postscript).
Det uppladdade dokumentet ligger sparat i /tmp/$randomtext där $randomtext är en slumpmässig sträng på 20 bokstäver:
Kod:
open(PIPE, "/usr/bin/file /tmp/$randomtext --mime-type -b|");
$data = <PIPE>;
close(PIPE);
$data =~ s/\r//sgi;
$data =~ s/\t//sgi;
$data =~ s/\n//sgi;
($maintype, $subtype) = split("/", lc($data));
$res = $data;
if ($maintype eq "image") {
$image = Image::Magick->new;
$image->Read("/tmp/$randomtext");
open(TMP, ">/tmp/$randomtext");
flock(TMP,2);
$image->Write(file=>\*TMP, filename=>"/tmp/$randomtext.png");
close(TMP);
$image = undef;
system("lpr /tmp/$randomtext");
$res = "Image File";
}
if ($maintype eq "application") {
if ($subtype eq "pdf") {
system("lpr /tmp/$randomtext");
$res = "PDF File";
}
else
{
system("/usr/lib/libreoffice/program/soffice.bin -headless -invisible -norestore -nolockcheck -p /tmp/$randomtext");
$res = "Document file";
}
}
if ($maintype eq "text") {
system("/usr/lib/libreoffice/program/soffice.bin -headless -invisible -norestore -nolockcheck -p /tmp/$randomtext");
$res = "Text file";
}
if ($maintype eq "message") {
system("muttprint -f /tmp/$randomfile -e local -P A4 -nod");
$res = "Single Email file";
}
if ($maintype eq "multipart") {
system("muttprint -f /tmp/$randomfile -e local -P A4 -nod");
$res = "Multiple Email file";
}
Dock lyckas jag inte med muttprint. Skrev ut ett HTML-email på 1 sida (.eml-fil), blev 60 sidor med HTML-kod på papper.
Någon som vet ett program för kommandoraden för att skriva ut filer med mime-typen message/* och multipart/*? Eller som kan omvandla dem till pdf/ps med all grafik och liknande intakt?