旋转PDF';It’不到90度

旋转PDF';It’不到90度,pdf,Pdf,我正在处理一堆PDF文件,其中一些文件已经从一个角度进行了扫描。Adobe Acrobat允许我将PDF文件旋转90或180度。但是有没有一种方法可以将PDF旋转几度,使其变得更直 我也许可以拍摄一张截图,在Photoshop中打开并旋转它,然后以某种方式将Photoshop文件转换为PDF。然而,这似乎是一个非常笨拙的过程。我曾经有过这样的经历。我不知道你有多少页。 我所做的是打印磨损的页面,使用切纸机将其对齐并重新扫描。希望这有帮助。 是的,我试图找到某种类型的程序来解决这个问题,但我仍然没

我正在处理一堆PDF文件,其中一些文件已经从一个角度进行了扫描。Adobe Acrobat允许我将PDF文件旋转90或180度。但是有没有一种方法可以将PDF旋转几度,使其变得更直


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

我曾经有过这样的经历。我不知道你有多少页。 我所做的是打印磨损的页面,使用切纸机将其对齐并重新扫描。希望这有帮助。 是的,我试图找到某种类型的程序来解决这个问题,但我仍然没有找到

PDF仅支持90度的完整页面
/Rotate
值,因为这(当然)很简单。您需要做的是旋转内容,而不是页面。所以你需要使用一些可以为你重新制作PDF文件的东西

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

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

使用Ghostscript,您需要定义一个
BeginPage
过程,该过程将少量旋转内容并稍微移动内容的原点(因为旋转是围绕原点旋转的,原点位于左下角,而不是中心)。

下面是一个用于旋转页面的简短实用程序脚本(用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::API2
Geopt::Long
模块

默认情况下,脚本逆时针旋转3度,这在
--rotate
选项中是可配置的


还有
-x
-y
--scale
选项,允许对输出页面的位置和比例进行微调。

上也提出了此问题

另一种选择是使用乳胶:

\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度。

是的,如果我能找到原件,我可以重新扫描它们。然而,我确实有数千个PDF文件要处理,所以我希望找到一个更快的过程。令人惊讶的是,据我所知,没有软件程序能做到这一点。