web-dev-qa-db-fra.com

Comment puis-je combiner deux PDF pages apparaissent sur la même page?

Je recherche un outil gratuit permettant de réorganiser les pages d'un document PDF et de combiner plusieurs pages par feuille. La première partie (réorganisation) est facilement résolue par de nombreux outils (j'utilise PyPDF ). 

Le problème vient de la deuxième condition: combiner deux pages (ou plus) en une seule page. Par exemple, prenez deux pages (A et B), faites-les pivoter, redimensionnez-les et combinez-les en une seule page comme celle-ci.

------       ------            ------
|     |      |      |          |     |
|  A  |      |  B   |          | a   |
|     |      |      |          |     |
|     |      |      |  --->    ------
|     |      |      |          |     |        
|     |      |      |          | b   |        
|     |      |      |          |     |        
------       ------            ------

La solution doit fonctionner sous Linux, et de préférence sous Windows également. Je cherche une application console ou une bibliothèque avec des liaisons Python ou Perl.

Edit il y a pdfnup bibliothèque qui est supposée effectuer exactement ce type de transformation, et est multi-plateforme, mais je ne peux pas l'utiliser à cause d'un bogue similaire à this .

24
Boris Gorelik

Découvrez cette réponse qui utilise Multivalent pour imposer des pages PDF

2
danio

Ceci est un résumé des outils que j'ai trouvés pour PDF (je voulais trouver l'équivalent de psup et psbook).

  • Créer des brochures: pdfbook, pdf-tools (commande: pdfbklt)
  • Fusionner PDF fichiers: pdfmerge, pdfjam (commande: pdfjoin)
  • Tourner les pages: pdfjam (commande: pdf90)
  • Plusieurs pages par feuille: pdfjam (commande: pdfnup)
  • Créez des affiches (plusieurs feuilles par page): pdfposter

De mon gestionnaire de paquets:

Créer un livret A6:

pdfbook -2 -p a5 infile.pdf outfile.pdf

pdf-tools contient:

  • pdfbklt: créer des brochures
  • pdfrevert: supprime une couche de modifications dans un fichier PDF, en essayant de maximiser la taille du fichier de sortie (pour tenir compte du PDF linéarisé).
  • pdfstamp: Ajoute la chaîne donnée au fichier .pdf infile à l'emplacement, la police et la taille donnés.

Il existe également multivalent: http://multivalent.sourceforge.net/Tools/index.html

23
Mildred

Sous Linux, vous pouvez convertir les fichiers PDF en Postscript et utiliser psnup. La façon exacte de l'invoquer dépend de la manière dont vous souhaitez assembler les pages, de la rotation de leur contenu, du format de papier que vous souhaitez utiliser, etc., mais cela ressemblera à ceci:

pdf2ps infile.pdf infile.ps
psnup -2 infile.ps outfile.ps
ps2pdf outfile.ps outfile.pdf

Selon les outils disponibles, vous aurez peut-être un moyen plus efficace de le faire - psnup n'est certainement pas le seul moyen, mais c'est un programme relativement connu (de toute façon sur Linux).

9
David Z

Si vous utilisez Linux, vous pouvez utiliser BookletImposer pour placer plusieurs pages PDF sur une seule page.

Pour les utilisateurs Ubuntu, cet outil est disponible sur le Centre de logiciel Ubuntu.

2

En réponse à votre question, vous aurez besoin d'un outil PDF 'Imposition', qui est une manière élégante de dire un outil qui organise les images de page PDF sur un tableau particulier afin de créer un NOUVEAU single PDF page. Imaginez que cela ressemble à la composition d'un journal. Vous définissez un tableau d'emplacements d'un certain nombre de colonnes, d'une largeur d'un certain nombre de lignes, sur une page d'une certaine dimension fixe (en cm). Ensuite, vous remplissez ces emplacements vides de haut en bas et de gauche à droite avec des pages d'un fichier source pdf. Dans le cas de l'OP, ils veulent créer une seule page, composée de deux pages 8,5x11 disposées dans un tableau 1x2 (1 colonne, 2 lignes). Leurs pages seront placées dans le tableau dans l'ordre suivant: 1,2. Donc, vous déposez la première page (page 1 du pdf) dans le premier emplacement de votre tableau (colonne 1, rangée 1), et vous déposez la deuxième page (page 2) dans le deuxième emplacement (colonne 1, rangée 2). ).

Comment utiliser l'outil pour y arriver: Téléchargez l'ancienne version de Multivalent. Notez que l'auteur a supprimé les bonnes classes d'outils de la dernière édition sans explication, vous devez donc utiliser une ancienne. Voici un lien fonctionnel en date du 02/12: http://code.google.com/p/pdfsizeopt/downloads/detail?name=Multivalent20060102.jar Par souci de simplicité, j'ai renommé le fichier jar. file to m.jar . Il va sans dire que vous devez installer JRE pour que cela fonctionne, mais je vais le mettre là-bas . Ajoutez m.jar à votre variable de classe Java Variables d'environnement ( pour les scripts) ou exécutez la syntaxe de ligne de commande avec l’option -cp et le chemin relatif (indiqué ci-dessous). Remarque, je l'ai exécuté à partir de la ligne de commande dans le répertoire d'installation de mon exemple ci-dessous. Sinon, fournissez un chemin absolu à partir de la racine (comme c:\1\bin\m.jar).

Voici un exemple qui accomplira exactement ce que l’opérateur a publié sur: C:\1\bin> Java -cp m.jar tool.pdf.Impose -dim 1x2 -verbose -papersize "21.59x55.88cm" -layout " 1,2 "yourfilename.pdf

Notez que l'option -dim crée le tableau dans Columns x Rows. La taille du papier est spécifiée en centimètres ici, mais si vous avez besoin de pouces, il vous suffit de multiplier pouces par 2,54 pour obtenir les centimètres. L'option -layout vous donne l'ordre dans lequel vous souhaitez remplir les emplacements vides de votre tableau, de haut en bas et de gauche à droite. Dans ce cas, nous voulons la page un du pdf en haut et la page deux en bas, notre argument est donc "1,2". Le dernier argument est votre fichier source actuel. Lorsque vous aurez terminé, l’outil produira un fichier appelé nomfichier_fichier-up.pdf.

J'espère que cela pourra aider.

-Matt Zweil

1
Matt Zweil

Voici un script pour répéter des pages (comme A5, paysage) deux fois sur une feuille double de cette taille (A4, portrait):

#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2  | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT1=`basename ${INPUTFILE} .pdf`.dup.pdf
OUTPUT2=`basename ${INPUTFILE} .pdf`.double.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT1}
pdfjam --nup 1x2 ${OUTPUT1} --outfile ${OUTPUT2}

Ce n'est pas vraiment élégant cela pourrait se faire sans le deuxième appel à pdftk, et cela ne fonctionne pas avec les fichiers contenant des espaces. Mais cela fonctionne avec des fichiers PDF multi-pages.

0
Seegras

Vérifiez le code source de PyPDF, en particulier la méthode rotateClockwise (). Il doit y avoir un endroit où le contenu d'une page est écrit. Insérez un opérateur "q" (état de sauvegarde) et "cm" (avec les paramètres corrects pour une matrice de mise à l'échelle) avant le contenu, puis un opérateur "Q" (état de restauration).

Voir la documentation PDF pour une explication des opérateurs et de la structure d'une page (faites défiler vers le bas pour trouver des liens utiles).

N'oubliez pas d'envoyer un correctif à PyPDF :)

[EDIT] Vous pouvez également vouloir vérifier les sources pdfjam qui incluent une commande pdfnup.

0
Aaron Digulla

C’est une fonction Perl que j’utilise pour récupérer un répertoire de fichiers prn à partir d’une application tierce et créer un seul fichier PDF fusionné.

sub runMerged($)
{
    my($path) = @_;

    print "Generating merged PDFs for $path\n";

    my @files = sort(getFiles($path, ".prn\$"));
    if (scalar(@files))
    {
        open(MERGE, ">$path/merged.prn");
        for (my $i = 0; $i < scalar(@files); $i++)
        {
            print MERGE "^L\n" if ($i > 0);

            open(FN, "$path/" . $files[$i]);
            while (my $line = <FN>)
            {
                print MERGE $line;
            }
            close(FN);
        }

        chdir("$BASE_PATH/txt2pdf");
        print `./txt2pdf.pl $path/merged.prn`;
    }
}
0
user44585

J'ai eu le même problème que vous et voici ce que j'ai fait:

  1. Extrait toutes les pages du fichier pdf en tant que fichier séparé
  2. Dans irfanView (avec les plugins), j'ai créé une image "Panoramique" verticale
  3. Faites glisser les fichiers pdf vers la section images
  4. Cliqué créé
  5. "L'image" est créée avec toutes les pages qui se suivent sous la forme d'une très longue image verticale
  6. Vous pouvez exporter vers PDF presque sans perte de qualité.
  7. Prendre plaisir 
0
J. Fernando N

Avec Adobe Acrobat XI Pro, ouvrez le 1er document . Édition, sélectionnez "Prendre un instantané", puis cliquez dans le coin supérieur de ce que vous voulez copier et faites glisser vers le coin opposé . dans Paint . Cliquez sur la nouvelle feuille dans Paint et contrôle V pour coller le premier document dans la nouvelle feuille . Répétez l'opération pour le deuxième élément que vous souhaitez combiner sur la même page, à l'exception du deuxième élément SOUS le 1er élément temporairement dans votre feuille de peinture . Ensuite, faites glisser le 2e élément pour le positionner là où vous en avez besoin dans la feuille de peinture . Enregistrez le fichier de feuille de peinture et le tour est joué!

0
Mouse1999

J'avais un besoin similaire cette semaine… .. Mais je devais répéter chaque page A4 (paysage) «deux fois» dans la feuille A3 (portrait), pour ensuite la couper en deux.

J'ai trouvé un plugin Acrobat avec une multitude de fonctionnalités d'imposition qui répondait parfaitement à mes besoins et avec un essai entièrement fonctionnel de 30 jours.

J'espère que ça pourrait être utile pour quelqu'un d'autre.
http://www.pdfsnake.com/

0
Putuko