如何更改PDF中的查看器首选项

时间:2013-04-25 06:06:12

标签: pdf pdf-generation

The PDF standard表示应该可以在PDF中设置“查看者偏好设置”,这样您就可以预设用户查看文档的方式。

是否有可用于执行此操作的免费命令行工具或完全开源的库(因此不受限制/许可的库如iText)?我发现的只是BeCyPDFMetaEdit,这是一个Windows工具。

2 个答案:

答案 0 :(得分:2)

我认为你没有得到这个问题的答案,因为在FAQ on StackOverflow的背景下,这不是一个真正的问题。关于SO的问题应该是关于你在尝试某些事情时遇到的技术问题。问“你能给我一个样品吗?”并不总是被接受。你可能会遇到一个反问题:“你有什么尝试?”

这就是说,回应你的评论:“当然这肯定已经做过了吗?”:当然,它有!我没有立即回答,因为我没有时间,也因为你的问题的答案是明智的。我以为你自己找到答案没有任何问题。

PdfReader reader = new PdfReader("test.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("test_changed.pdf"));
stamper.setViewerPreferences(PdfWriter.CenterWindow | PdfWriter.FitWindow);
stamper.addViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);
stamper.addViewerPreference(PdfName.NUMCOPIES, new PdfNumber(3));
stamper.close();
reader.close();

您使用PdfReader获取现有PDF,然后使用PdfStamper将其复制到已更改的PDF。在中间,您可以使用setViewerPreferences()方法或addViewerPreference()方法。如果您按照这些方法提供的链接,您将获得可能的查看者偏好的概述。

这是一个iText(Java)示例;将其更改为iTextSharp(C#)示例是将一些较小的案例更改为大写的问题。

免责声明:我是iText Software的首席执行官。我也是iText的原始开发者,也是“iText in Action”书籍的作者。

答案 1 :(得分:2)

以下是使用PDF::API2 Perl软件包(免费)的方法:

   
use PDF::API2;

$pdf = PDF::API2->open("old.pdf");

$pdf->preferences(
        -centerwindow => 1,
        -fitwindow => 1,
        -hidetoolbar => 1,
        -hidemenubar => 1,
        );

$pdf->saveas('new.pdf');