旋转PDF小于90度

时间:2015-04-11 01:58:09

标签: pdf

我正在使用一堆PDF文件,其中一些已经过一定程度的扫描。 Adobe Acrobat允许我将PDF文件旋转90度或180度。但有没有办法将PDF旋转几度 - 刚好足以让它更直?

我可以截取屏幕截图,在Photoshop中打开它并旋转它,然后以某种方式将Photoshop文件转换为PDF。然而,这似乎是一个非常笨拙的过程。

4 个答案:

答案 0 :(得分:3)

PDF仅支持90度的完整 /Rotate值,因为这当然是简单的。您需要做的是旋转内容,而不是页面。因此,您需要使用可以为您重制PDF文件的内容。

您可以使用Ghostscript或MuPDF来执行此操作。要么需要一些编码:

  • MuPDF需要用C编码,
  • Ghostscript将要求您进行一些PostScript编程。

使用Ghostscript你需要定义一个BeginPage程序,它将内容旋转一小部分并稍微移动内容的原点(因为旋转围绕原点旋转,因为它位于左下角,而不是中心)。

答案 1 :(得分:2)

这是一个用于旋转页面的简短实用程序脚本(用Perl编写)。它将输入PDF的每个页面转换为PDF XObject表单,旋转表单,然后输出旋转的页面。

#! /usr/bin/perl                                                                                                                      
use warnings; use strict;
use PDF::API2;
use Getopt::Long;

my $degrees = 3;
my $scale = 1.0;
my $x = 0;
my $y = 0;
GetOptions ("rotate=i" => \$degrees, "scale=f" => \$scale, "x=f" => \$x, "y=f" => \$y)
    or die "usage: $0 IN_PDF OUT_PDF --rotate=DEG --scale=ALPHA --x=POINTS --y=POINTS";

my $infile = shift (@ARGV);
my $outfile = shift (@ARGV);

my $pdf_in = PDF::API2->open($infile);
my $pdf_out = PDF::API2->new;

foreach my $pagenum (1 .. $pdf_in->pages) {

    my $page_in = $pdf_in->openpage($pagenum);
    #                                                                                                                                 
    # create a new page                                                                                                               
    #                                                                                                                                 
    my $page_out = $pdf_out->page(0);

    my @mbox = $page_in->get_mediabox;
    $page_out->mediabox(@mbox);

    my $xo = $pdf_out->importPageIntoForm($pdf_in, $pagenum);
    #                                                                                                                                 
    # lay up the input page in the output page                                                                                        
    # note that you can adjust the position and scale, if required                                                                    
    #                                                                                                                                 
    my $gfx = $page_out->gfx;
    $gfx->rotate($degrees);                                                                                                               
    $gfx->formimage($xo,  $x, $y, $scale);
}

$pdf_out->saveas($outfile);

您需要确保从CPAN安装PDF::API2Geopt::Long模块。

默认情况下,脚本逆时针旋转3度,这可以通过--rotate选项进行配置。

还有-x-y--scale个选项,可以微调输出页面的位置和比例。

答案 2 :(得分:0)

unix.stackexchange.com也曾问过这个问题。

另一个选择是使用LaTeX:

\documentclass{standalone}
\usepackage{graphicx}

\begin{document}
\includegraphics[angle=-1.5]{odd-scan}
\end{document}

在这种情况下,我将文件odd-scan.pdf(稍作旋转的一页扫描)与具有上面内容的LaTeX文件rotated.tex放在同一文件夹中,然后运行pdflatex rotated.tex 。输出为文件rotated.pdf,PDF顺时针旋转1.5度。

答案 3 :(得分:-1)

我曾经有过这个。我不知道你有多少页。 我所做的是打印磨损的页面,使用切纸机对它们进行平方并重新扫描它们。希望这可以帮助。 是的,我试图找到一些类型的程序来解决这个问题,我仍然没有找到一个。

相关问题