Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: kamara - 28.02.16 - klo:16.16
-
Minulla on kaksipuoleista tulostusta tukeva tulostin, ja tiedosto, jossa on liitteen mukainen sivujärjestys.
Kuinka saisi järjestyksen muutettua siten, että siitä saisi muodostettua vihkon s.e. laittaa niitit keskelle ?
Mitä tarvitsee tehdä ?
Joutuuko imagemagick:iä käyttää, vai onko jokin oikopolku ?
Edit - psbook , mutta kuinka ?
-
Esimerkissäsi on valmiiksi kaksi sivua yhdellä PDF-sivulla. Hankaloittaa muunnosta turhaan, kun sivut pitäisi ensin erotella toisistaan ja sitten järjestellä uudelleen ja yhdistää.
Onko valmis PDF ainoa mahdollinen syöte muunnokselle? Jos kyseessä on tekstidokumentti, voisit tulostaa sen LibreOfficella suoraan vihkoksi (brochure): Tiedosto -> Tulosta... -> Sivun asettelu -> Esite
-
Onko valmis PDF ainoa mahdollinen syöte muunnokselle? Jos kyseessä on tekstidokumentti, voisit tulostaa sen LibreOfficella suoraan vihkoksi (brochure): Tiedosto -> Tulosta... -> Sivun asettelu -> Esite
Valitettavasti syötteenä voin antaa vai pdf:ää tai lisäksi tietenkin ps:ää. Onko helpointa imagemagick:n convertilla jakaa sivut kahdeksi ?
Se on hivenen hidasta, lisäksi scriptin tekemiseen, joutuu hivenen miettimään.
-
Kuinkas tehdä conver:lla A4 Portrait, kun näyttää tekevän väkisinkin Landskapea.
(Siis tämä on saman ongelman osaongelmaa...)
Tällaista olen yrittänyt:
echo "TULI !!!!!!"
convert -density 600 -crop 3508x4958+0+0 $f -density 600 page.png
convert -density 600 page.png -auto-orient book.pdf
-
Jaahas... Tuli tehtyä purkkaratkaisu...
Kuvien pilkkominen bash:lla...
#!/bin/bash
declare -i nro
nro="0"
for f in kirja*.png
do
nro="$nro+1"
echo "$nro"
echo $f
if [[ $nro = 1 ]]
then
echo "TULI !!!!!!"
convert -density 600 -crop 3508x4958+0+0 $f -density 600 page$nro.png
#convert -density 600 page.png -auto-orient book.pdf
else
echo convert -density 600 -crop 3508x4958+0+0 $f -density 600 page$nro.png
convert -density 600 -crop 3508x4958+0+0 $f -density 600 page$nro.png
#convert -crop 3508x4958+0+0 $f page$nro.png
fi
nro="$nro+1"
echo "$nro"
echo $f
echo convert -density 600 -crop 3508x4958+3508+0 $f -density 600 page$nro.png
convert -density 600 -crop 3508x4958+3508+0 $f -density 600 page$nro.png
#convert -crop 3508x4958+3508+0 $f page$nro.png
done
Png portrateksi php:llä.
<?php
require_once('tcpdf_include.php');
$imgfile="kuva.png";
$ext="";
if(isset($argv[1])) {
if(isset($argv[2])) {
$ext=$argv[2];
}
$imgfile=$argv[1];
}
if ($ext!="") {
$i=0;
while (file_exists($imgfile.($i+1).$ext)) {
$a[$i]=$imgfile.($i+1).$ext;
$i++;
}
//print (count($a))
$imagefiles=$a;
} else $imagefiles[0]=$imgfile;
$imgfile=$imagefiles[0];
$image=imagecreatefrompng($imgfile);
if (substr($imgfile,-4)==".png") {
$image=imagecreatefrompng($imgfile);
} else if(substr($imgfile,-4)=='.jpg') {
$image=imagecreatefromjpeg($imgfile);
}/**/
$imagesy=imagesy($image);
$imagesx=imagesx($image);
imagedestroy($image);
// $portrate="L";
// $xmax=280;
// $ymax=190;
//echo "$imagesx,$imagesy";
if($imagesx>$imagesy) {
$portrate="L";
$xmax=280;
$ymax=190;
} else {
$portrate="P";
$xmax=190;
$ymax=280;
}
$pdf=new TCPDF($portrate, "mm", "A4", true, 'UTF-8', false); //FPDF('P','mm','A4');
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Sami Ojanen');
$pdf->SetTitle('Printing');
$pdf->SetSubject('Printing');
$pdf->SetKeywords('TCPDF, PDF, print');
$pdf->SetTopMargin(0);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(false, PDF_MARGIN_BOTTOM);
for($i=0;$i<count($imagefiles);$i++) {
$imgfile=$imagefiles[$i];
$pdf->addPage();
$marginx=10;
$marginy=10;
$pdf->SetMargins($marginx,$marginy);
$k=$imagesy/$imagesx;
$width=$ymax/$k;
$height=$ymax;
if($width>$xmax) {
$width=$xmax;
$height=$xmax*$k;
}
$x=$marginx+($xmax-$width)/2;
$y=$marginy;
$pdf->Image($imgfile,$x,$y,$width,$height); /* */
}
//$pdf->AddPage();
//$pdf->SetFont('Arial','B',16);
//$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>
png:t pdf:ksi
php phppdf/png2pdf.php page .png >book.pdf
pdf:stä ps:ksi...
pdf2ps book.pdf book.ps
ps vihkoksi...
psbook book.ps bookVihko.ps
cat bookVihko.ps|psnup -s1 -2 |ps2pdf - Valmiskirja.pdf
Tekee töitä edelleen, mutta saattaa onnistua.
-
ps vihkoksi...
psbook book.ps bookVihko.ps
cat bookVihko.ps|psnup -s1 -2 |ps2pdf - Valmiskirja.pdf
Tekee töitä edelleen, mutta saattaa onnistua.
Eipä siitä tullut haluamani lainen. :P
Joutui tekemään uuden psbook:in.
Tässä PHP-sorsaa.
<?php
require_once('tcpdf_include.php');
$debug=false;
//$debug=true; //false;
$imgfile="kuva.png";
$ext="";
if(isset($argv[1])) {
if(isset($argv[2])) {
$ext=$argv[2];
}
$imgfile=$argv[1];
}
if ($ext!="") {
$i=0;
while (file_exists($imgfile.($i+1).$ext)) {
$a[$i]=$imgfile.($i+1).$ext;
$i++;
}
//print (count($a))
$imagefiles=$a;
} else $imagefiles[0]=$imgfile;
$imgfile=$imagefiles[0];
$count=count($imagefiles)+3-((count($imagefiles)-1) % 4);
if ($debug) print "count:$count\n";
$pageEnd=$count-1;
$pageStart=0;
$pageStartRight=true;
$image=imagecreatefrompng($imgfile);
if (substr($imgfile,-4)==".png") {
$image=imagecreatefrompng($imgfile);
} else if(substr($imgfile,-4)=='.jpg') {
$image=imagecreatefromjpeg($imgfile);
}/**/
$imagesy=imagesy($image);
$imagesx=imagesx($image);
imagedestroy($image);
// $portrate="L";
// $xmax=280;
// $ymax=190;
//echo "$imagesx,$imagesy";
if($imagesx>$imagesy) {
$portrate="L";
$xmax=280;
$ymax=190;
} else {
$portrate="L"; // Vanha Portrate (P)
$ymax=190;
$xmax=140; // Vanha 280
}
$pdf=new TCPDF($portrate, "mm", "A4", true, 'UTF-8', false); //FPDF('P','mm','A4');
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Sami Ojanen');
$pdf->SetTitle('Printing');
$pdf->SetSubject('Printing');
$pdf->SetKeywords('TCPDF, PDF, print');
$pdf->SetTopMargin(0);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(false, PDF_MARGIN_BOTTOM);
for($i=0;$i<$pageEnd;$i++,$pageEnd--) {
$imgfile=$imagefiles[0];
$pdf->addPage();
$marginx=10;
$marginy=10;
$pdf->SetMargins($marginx,$marginy);
$k=$imagesy/$imagesx;
$width=$ymax/$k;
$height=$ymax;
if($width>$xmax) {
$width=$xmax;
$height=$xmax*$k;
}
$x=$marginx+($xmax-$width)/2;
$y=$marginy;
if(($i&1)==1) {
if(isset($imagefiles[$i])) $imgfile=$imagefiles[$i];
else $imgfile="";
if(isset($imagefiles[$pageEnd])) $imgfile2=$imagefiles[$pageEnd];
else $imgfile2="";
} else {
if(isset($imagefiles[$i])) $imgfile2=$imagefiles[$i];
else $imgfile="";
if(isset($imagefiles[$pageEnd])) $imgfile=$imagefiles[$pageEnd];
else $imgfile="";
}
if($debug) { print "[$imgfile,$imgfile2],"; }
else {
if(file_exists($imgfile)) $pdf->Image($imgfile,$x,$y,$width,$height); /* */
if(file_exists($imgfile2)) $pdf->Image($imgfile2,$x+$xmax,$y,$width,$height); /* */
}
}
//$pdf->AddPage();
//$pdf->SetFont('Arial','B',16);
//$pdf->Cell(40,10,'Hello World!');
if(!$debug) $pdf->Output();
?>
-
Hip! Tämä keskustelu osoittautuikin minulle erittäin hyödylliseksi: vaikuttaa siltä, että opin vihdoin tekemään pdf-tiedostoista vihkoja:
$ pdf2ps input.pdf koe.ps
$ cat koe.ps | psbook -s4 | psnup -2 | ps2pdf - koe.pdf
[4] [1] [2] [3] [8] [5] [6] [7] [12] [9] [10] [11] [*] [13] [*] [*]
Wrote 16 pages, 767767 bytes
[1] [2] [3] [4] [5] [6] [7] [8] Wrote 8 pages, 774737 bytes
ari@ari:~$ evince koe.pdf
-taitaa näyttää toimivan...
Nyt ei enää varmaan ole pitkä matka siihen, että oppisin tekemään kirjoja, koska nehän koostuvat useista vihkoista. Varmaan tämänkin ongelman on jo joku maailmassa ratkaissut - eli sanotaan nyt vaikka, että 304 -sivuinen pdf-dokumentti pitäisi tulostaa 32 sivun vihkoiksi (jotka siis koostuvat kahdeksasta A4-kokoisesta arkista). Kirjaan tulisi siis 10 kpl niitä 32 sivua käsittäviä vihkoja. Hmm?
T. Ari
-
Hip! Tämä keskustelu osoittautuikin minulle erittäin hyödylliseksi: vaikuttaa siltä, että opin vihdoin tekemään pdf-tiedostoista vihkoja:
Täytyy hivenen lannistaa onnistumisen riemuasi..
Teeppäs kokeilu jollakin tekstillä, joka on esimerkiksi tasattu molemmilta puolilta. Ainakin itselläni tekstiä marginaalien yli. Toisin sanoen sivut eivät sisältäneet kaikkia tekstejä, vaan teksti meni yli sivun.
No, ratkaisin asian brutaalilla tavalla, ja tein php-ohjelman, joka tekee kuvista A5-kokoa olevan vihkon, vaikkakin omanikin saattaa sisältää bugeja.
PHP-ohjelmaani saa vapaasti käyttää, ja korjata bugeja ...
Se tosin tarvitsee tcpdf:n ja php:n asennuksen, ja ehkä vähän muutakin.