Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions render50
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ from pygments.formatters import HtmlFormatter
from pygments.lexers import get_lexer_for_filename, guess_lexer
from pygments.lexers.special import TextLexer
from pygments.styles import get_all_styles
from pypdf import PdfReader, PdfWriter, Transformation
from pypdf import PageObject, PdfReader, PdfWriter, Transformation
from requests.exceptions import RequestException
from tempfile import mkstemp
from textwrap import fill
Expand Down Expand Up @@ -266,7 +266,7 @@ def main():
height = int(document.pages[0].height)
size = "{}px {}px".format(width, height)

# temporary files
# Temporary files
temps = []

# Render first input
Expand Down Expand Up @@ -343,20 +343,17 @@ def concatenate(output, inputs):
# Read files
readers = list(map(PdfReader, inputs))

# Render blank page, inferring size from first input's first page
temp = mkstemp()
size = "{}pt {}pt".format(readers[0].pages[0].mediabox[2], readers[0].pages[0].mediabox[3])
write(temp[1], [blank(size)], False)
page = PdfReader(temp[1]).pages[0]

# Concatenate files side by side
writer = PdfWriter()

# Concatenate pages
for i in range(max(map(lambda r: len(r.pages), readers))):

# Leftmost page
left = copy(readers[0].pages[i]) if i < len(readers[0].pages) else copy(page)
if i < len(readers[0].pages):
left = copy(readers[0].pages[i])
else:
left = PageObject.create_blank_page(width=readers[0].pages[0].mediabox[2], height=readers[0].pages[0].mediabox[3])

# Rotate page
# https://github.com/py-pdf/pypdf/issues/2139#issuecomment-1702462468
Expand All @@ -365,7 +362,10 @@ def concatenate(output, inputs):

# Rightmost pages
for reader in readers[1:]:
right = copy(reader.pages[i]) if i < len(reader.pages) else copy(page)
if i < len(reader.pages):
right = copy(reader.pages[i])
else:
right = PageObject.create_blank_page(width=readers[0].pages[0].mediabox[2], height=readers[0].pages[0].mediabox[3])
left.merge_transformed_page(right, Transformation().translate(left.mediabox[2], 0), expand=True)

# Add pages to output
Expand All @@ -375,9 +375,6 @@ def concatenate(output, inputs):
with open(output, "wb") as file:
writer.write(file)

# Remove temporary files
os.close(temp[0]), os.remove(temp[1])


def cprint(text="", color=None, on_color=None, attrs=None, end="\n"):
"""Colorize text (and wraps to terminal's width)."""
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
python_requires=">=3.9",
scripts=["render50"],
url="https://github.com/cs50/render50",
version="9.2.8"
version="9.2.9"
)
Loading