Dies ist ein Memo eines Skripts, das PyPDF2 verwendet, um eine PDF-Datei wie ein in einem Spread gescanntes Dokument in zwei Teile links und rechts zu unterteilen.
from PyPDF2 import PdfFileWriter, PdfFileReader
import copy
def split_pdf(input_pdf, output_filename):
pdf_file = PdfFileReader(open(input_pdf, 'rb'))
marged = PdfFileWriter()
page_num = pdf_file.getNumPages()
for i in range(0, page_num):
page_L = pdf_file.getPage(i)
page_R = copy.copy(page_L)
(w, h) = page_L.mediaBox.upperRight
page_L.mediaBox.upperRight = (w/2, h)
marged.addPage(page_L)
page_R.mediaBox.upperLeft = (w/2, h)
marged.addPage(page_R)
outputStream = open(output_filename, "wb")
marged.write(outputStream)
outputStream.close()
def sample():
input_pdf = "input.pdf"
output_filename = "output.pdf"
split_pdf(input_pdf, output_filename)
if __name__ == "__main__":
sample()
Teilen Sie für split_pdf () die PDF-Datei in zwei Teile, indem Sie die zu teilende PDF-Datei und den Dateinamen für die Ausgabe angeben.
Bereiten Sie zwei Seiten vor, eine für die linke Seite und eine für die rechte Seite. (Seite_L, Seite_R)
Da die Seite unten links beginnt, werden Breite und Höhe aus den Koordinaten oben rechts ermittelt. (w, h)
Durch Angabe der Koordinaten auf der rechten Seite für die linke Seite und der Koordinaten auf der linken Seite für die rechte Seite wird jede auf dieser Grundlage geschnitten.
Dieses Mal wird die obere rechte Koordinate auf der linken Seite als (w / 2, h) und die obere linke Koordinate auf der rechten Seite als (w / 2, h) angegeben und links und rechts in zwei Teile unterteilt.
Es ist möglicherweise einfacher zu verstehen, wenn Sie für die richtige Seite "page_R.mediaBox.lowerLeft = (w / 2, 0)" festlegen.
Ich benutze es wie folgt. Schreiben Sie nur die Ergänzungen und Änderungen.
import sys, os
def main():
argv = [sys.argv[i] for i in range(1,len(sys.argv))]
for input_pdf in argv:
basename_without_ext = os.path.splitext(os.path.basename(input_pdf))[0]
output_filename = "split_{}.pdf".format(basename_without_ext)
print("{}Ist zweigeteilt.".format(os.path.basename(input_pdf)))
split_pdf(input_pdf, output_filename)
if __name__ == '__main__':
main()
Holen Sie sich das Argument, drehen Sie es mit einer for-Anweisung um und übergeben Sie es an split_pdf. Der Name der Ausgabedatei ist der Name der Eingabedatei mit split_ am Anfang.
Teilen Sie das gescannte PDF des mittig gebundenen Materials in Seiten auf (Qiita: @hrb23m)
[So teilen Sie ein Spread-Scan-PDF mit Fehlausrichtung in zwei Seiten auf (Python, pypdf) (Sammlung technischer Memos)](https://www.robotech-note.com/entry/2018/04/28/ Fehlausrichtung der Mitte Teilen Sie das Spread-Scan-PDF in zwei Seiten.
Recommended Posts