web-dev-qa-db-ja.com

1ページの横向きのPDFを再スケーリングされた2ページの縦向きのpdfに変換します

convertを使用して次の操作を行うのに問題があります。

ジオメトリが横向きのA4シートに対応する単一ページのPDFファイルがたくさんあります。実際のコンテンツは視覚的に2ページに分割されています。私がこれらの各ファイルでやろうとしていることは、基本的には次のとおりです。A3にサイズ変更し、実際には中央で垂直に分割して2ページを取得します(convertcropを試しましたが失敗しました) 、次に、2つのA4縦向きページで構成される2ページのpdfファイルとして再アセンブルします。

最終的なコンテンツは、係数sqrt(2)でサイズ変更された元のコンテンツである必要があります。

[  ] -> [    ]  ->  [ | ]
        [    ]      [ | ]
 A4       A3         2xA4
lands.   lands.     portrait

これの全体的な目的は、サイズ変更されたコンテンツを1つの横向きA4ではなく2つの縦向きA4シートとして印刷できるようにすることですが、実際に新しいpdfファイルを作成する方が、直接印刷するよりも優れています。いつでも再印刷して他の人と共有できるからです。その後、意図したとおりに直接印刷できるようになります。

5
Dalker

これが un2up 、Python with pyPdf library を使用します。少なくともバージョン1.13が必要です(以前のバージョンはスケーリングをサポートしていませんでした)。 )。テストされていません。

#!/usr/bin/env python
import copy, math, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    p.scaleBy(math.sqrt(2))
    q = copy.copy(p)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h)
    q.mediaBox.upperLeft = (w/2, h)
    output.addPage(p)
    output.addPage(q)
output.write(sys.stdout)
2
Stone

@Stoneの回答で参照されている別のQ/A内のリンクをたどって見つかった、 superuser.comのこの質問 への回答に基づいてgsソリューションを使用して元の問題を解決することができました。現在の質問に。

スクリプトに入れる方法は次のとおりです。

#!/bin/bash
################################################################
# Make two portrait A4 sheets out of one landscape A4 sheet, by
# splitting and resizing adequately
################################################################
# solution based on: 
# https://superuser.com/questions/235074/freeware-to-split-a-pdfs-pages-down-the-middle/235401#235401
################################################################
IN=$1
OUT=$2
TMPLEFT=/tmp/left.pdf
TMPRIGHT=/tmp/right.pdf

# left side
gs -o $TMPLEFT -sDEVICE=pdfwrite -g5955x8420 -c "<</PageOffset [0 0]>>" setpagedevice -f $IN
# right side
gs -o $TMPRIGHT -sDEVICE=pdfwrite -g5955x8420 -c "<</PageOffset [-595.5 0]>>" setpagedevice -f $IN
# join
pdfunite $TMPLEFT $TMPRIGHT $OUT

もっと簡単な方法があるはずだと思いますが、これは機能し、ImageMagick convertの欠点を回避します。

2
Dalker

11x17から8.5x11の数ページの場合、Adobe AcrobatProツールを使用すると簡単です。

開く元のファイル、
設定横向きに。
保存別の名前のファイル(「元のv2p1.pdf」のように言う)
選択 [詳細設定]タブ
選択 "印刷物の作成"
選択 "クロップページ"
切り抜きページの右側または左側の半分。
保存ファイル( "元のv2p1.pdf)。これでページ1ができました。
Open "Original.pdf、オリジナル。
保存別の名前が関連付けられたファイル(2ページ目は「元のv2p2.pdf」の場合があります)
Crop反対側からページの半分。
保存ファイル( "元のv2p2.pdf)。これで2ページ目です。

0
Brian Felker

私はpsutilsの一部であるpsnupが好きです。これがあなたが探していることを達成するための方法です:

http://www.peppertop.com/blog/?p=35

0
klapaucius