Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -5,10 +5,10 @@ import img2pdf
|
|
5 |
import tempfile
|
6 |
import os
|
7 |
|
8 |
-
def downscale_pdf(pdf_file, max_width=3000,
|
9 |
with tempfile.TemporaryDirectory() as tmpdir:
|
10 |
-
#
|
11 |
-
images = convert_from_path(pdf_file.name, dpi=
|
12 |
|
13 |
downscaled_images = []
|
14 |
for i, img in enumerate(images):
|
@@ -28,22 +28,32 @@ def downscale_pdf(pdf_file, max_width=3000, target_dpi=150):
|
|
28 |
|
29 |
tmp_image_path = os.path.join(tmpdir, f"page_{i+1}.jpg")
|
30 |
img.save(tmp_image_path, "JPEG", quality=90)
|
31 |
-
downscaled_images.append(tmp_image_path)
|
32 |
|
33 |
-
#
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
-
# ✅ Gradio返却用に一時ファイルにコピー
|
40 |
final_pdf_file = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf")
|
41 |
-
with open(
|
42 |
dst.write(src.read())
|
43 |
|
44 |
return final_pdf_file.name
|
45 |
|
46 |
|
|
|
47 |
with gr.Blocks() as demo:
|
48 |
gr.Markdown("## PDFダウンサイザー for Audiveris")
|
49 |
gr.Markdown(
|
|
|
5 |
import tempfile
|
6 |
import os
|
7 |
|
8 |
+
def downscale_pdf(pdf_file, max_width=3000, input_dpi=150):
|
9 |
with tempfile.TemporaryDirectory() as tmpdir:
|
10 |
+
# 1. dpiを下げて読み込み(元が300なら150に半減)
|
11 |
+
images = convert_from_path(pdf_file.name, dpi=input_dpi, fmt='jpeg', output_folder=tmpdir)
|
12 |
|
13 |
downscaled_images = []
|
14 |
for i, img in enumerate(images):
|
|
|
28 |
|
29 |
tmp_image_path = os.path.join(tmpdir, f"page_{i+1}.jpg")
|
30 |
img.save(tmp_image_path, "JPEG", quality=90)
|
31 |
+
downscaled_images.append((tmp_image_path, (new_w, new_h)))
|
32 |
|
33 |
+
# 2. img2pdfのdpiを画像サイズから計算する
|
34 |
+
# dpi = (元画像のdpi) * (縮小率)
|
35 |
+
# 今回は画像のピクセル数が縮小されているので、それに対応するdpiを設定する
|
36 |
+
# ここでは単純に input_dpi をそのまま使うことも可
|
37 |
+
|
38 |
+
pdf_bytes = b""
|
39 |
+
layout_fun = img2pdf.get_layout_fun(pagesize=None) # デフォルトページサイズ
|
40 |
+
|
41 |
+
with open(os.path.join(tmpdir, "downscaled.pdf"), "wb") as f:
|
42 |
+
f.write(
|
43 |
+
img2pdf.convert(
|
44 |
+
[path for path, size in downscaled_images],
|
45 |
+
dpi=input_dpi,
|
46 |
+
)
|
47 |
+
)
|
48 |
|
|
|
49 |
final_pdf_file = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf")
|
50 |
+
with open(os.path.join(tmpdir, "downscaled.pdf"), "rb") as src, open(final_pdf_file.name, "wb") as dst:
|
51 |
dst.write(src.read())
|
52 |
|
53 |
return final_pdf_file.name
|
54 |
|
55 |
|
56 |
+
|
57 |
with gr.Blocks() as demo:
|
58 |
gr.Markdown("## PDFダウンサイザー for Audiveris")
|
59 |
gr.Markdown(
|