63 votes

Comment convertir un PDF d'une page en un PDF de 2 pages par feuille ?

Je voudrais imprimer un PDF de manière à ce que les deux premières pages se trouvent au recto, la troisième et la quatrième au verso, et ainsi de suite.

-----------------          -----------------
|       |       |          |       |       |
|       |       |          |       |       |
|   1   |   2   |          |   3   |   4   |    . . .
|       |       |          |       |       |
|_______|_______|          |_______|_______|

 page 1 - front             page 1 - back

Comme mon imprimante sous Linux ne prend pas en charge l'impression recto-verso manuelle, je me suis dit que je pourrais peut-être éditer le fichier PDF de la même manière.

Mais comment ?

1voto

Loren Points 111

Vous pouvez le faire avec PyPDF2. Le code ci-dessous n'est pas une solution parfaite à votre problème, mais il aidera, je l'espère, les personnes qui viennent ici depuis Google.

#!/usr/bin/env python

# requires PyPdf2 library, version 1.26 or above -
# its homepage is https://pythonhosted.org/PyPDF2/index.html
# running: ./this-script-name output.pdf file-with-pdf-list

import copy, sys
from PyPDF2 import PdfFileWriter, PdfFileReader, pdf
output = PdfFileWriter()
output_page_number = 0
alignment = 6 # align on 6 pages for printing 6 up
for filename in sys.argv[2:]:

    page = pdf.PageObject.createBlankPage(None, 850, 1100)
    input = PdfFileReader(open(filename, "rb"))

    position = 0
    for i in range(0, input.getNumPages()):
        x = 0
        # Two Up
        # if position == 0:
        #    position = 1
        #    page.mergeScaledTranslatedPage(input.getPage(i), 0.5, 100, 650)
        #else:
        #    page.mergeScaledTranslatedPage(input.getPage(i), 0.5, 100, 100)
        #    output.addPage(page)
        #    page = pdf.PageObject.createBlankPage(output)
        #    position = 0
        # 6 Up
        scale = 0.25
        col1 = 100
        col2 = 450
        sep = 130
        row3 = sep + 25
        row2 = row3 + sep + 215
        row1 = row2 + sep + 215
        if position == 0:
           position = 1
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col1, row1)
        elif position == 1:
           position = 2
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col2, row1)
        elif position == 2:
           position = 3
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col1, row2)
        elif position == 3:
           position = 4
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col2, row2)
        elif position == 4:
           position = 5
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col1, row3)
        else:
           page.mergeScaledTranslatedPage(input.getPage(i), scale, col2, row3)
           output.addPage(page)
           page = pdf.PageObject.createBlankPage(output)
           position = 0
    if position != 0:
        output.addPage(page)

output.write(open(sys.argv[1], "wb"))

1voto

Gruber Points 367

Si vous disposez du navigateur Google Chrome, vous pouvez utiliser l'imprimante/visualiseur PDF intégré et la fonction "Enregistrer en PDF".

  1. Ouvrez/déposez le PDF dans un onglet de Chrome (si une fenêtre d'enregistrement du fichier s'affiche, vous devez activer l'option de visualisation interne du PDF, allez sur cette page dans votre navigateur. chrome://settings/content/pdfDocuments )

  2. Cliquez à droite et sélectionnez "Imprimer".

  3. Dans le panneau d'impression, sélectionnez "Enregistrer en PDF".

  4. Sélectionnez le nombre de pages dans "Pages par feuille".

NOTE : il peut avoir quelques bizarreries si les pages ne sont pas égales ou si elles ont un rapport d'aspect différent, aussi, pour autant que je sache le format de page est A4 et I ne trouve pas de moyen évident de le changer.

De même, si vous avez installé Adobe Acrobat, vous pouvez utiliser l'imprimante Adobe PDF à la place. Dans ce cas, des options plus nombreuses et plus avancées seront disponibles.

0voto

gyosko Points 131

Si vous disposez de la fonction d'impression vers le fichier, imprimez vers le fichier avec un réglage de deux pages par page et avec les pages impaires, puis répétez le processus avec les pages paires. Maintenant, imprimez les pages impaires, inversez les papiers imprimés et imprimez le fichier des pages paires.

0voto

Kurt Pfeifle Points 11465

@mokasin : Vous n'avez pas dit quel lecteur PDF vous utilisez. Si vous utilisez la version Linux d'Acrobat/Adobe Reader : il y a une option pour imprimer "2-up" directement dans la boîte de dialogue d'impression. Vous pouvez également choisir de n'imprimer que les pages paires ou impaires, ce qui vous permettra d'obtenir le résultat souhaité.

0voto

Any Body Points 129

Ce logiciel, que j'ai testé sur le système d'exploitation Solaris 11.2, peut créer le schéma appelé 2-up, généralement utilisé pour les documents distribués dans les salles de classe ou les réunions. Il est possible de produire d'autres schémas, par exemple des documents de 3 ou 4 pages ou plus sur une feuille ou sur les deux faces d'une feuille. Il peut être exécuté à partir d'un terminal puisqu'il s'agit d'un fichier JAR ou simplement de l'interface graphique pour un accès plus facile. Outre Solaris, d'autres distributions Linux sont également compatibles, en exécutant le logiciel, comme "exécutable", avec les privilèges de super-utilisateur. Attention à ne pas utiliser "Ouvrir l'archive". Le logiciel fonctionne également sur tout Windows et Mac où un Java Runtime Environment (JRE) est déjà installé, comme c'est le cas la plupart du temps. Le logiciel est Imposition du Dysprosium et est gratuit à télécharger et à utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X