我能否创建始终以 100% 缩放级别打开的 PDF?
Can I create a PDF which will always opens at zoom level 100%?
我 运行 遇到 PNG 到 PDF 转换的问题。
实际上我有很多 PNG 文件,不是大小而是内容。
在 PDF 转换中,它会创建一个大的 PDF 文件。我对它的质量没有任何问题,但每当我尝试在 PDF 查看器中打开此 PDF 时,它都会以 "Fit to Page" 模式打开。
因此,我在初始视图中看不到创建的 PDF,但我需要将其放大到 100%。
我的问题是:我可以创建一个始终以 100% 缩放比例打开的 PDF 吗?
PDF 规范以这种方式支持此功能:创建转到第一页并将缩放级别设置为 100% 的 GoTo 操作,然后将该操作设置为文档打开操作。
如何在现实生活中具体实施它在很大程度上取决于您用来创建 PDF 文件的工具。我不知道ImageMagick是否可以创建这样的动作。
您可以借助 Ghostscript 实现您想要的。
Ghostscript 支持通过 -c "...[PostScript code here]..."
.
将 PostScript 片段插入其命令行参数
PostScript 有一个名为 pdfmark
的特殊运算符。大多数 PostScript 解释器不理解此运算符,但 Acrobat Distiller 和生成 PDF 时(对于其大部分参数)Ghostscript 也能理解。
所以你可以尝试插入
-c "[ /PageMode /UseNone /Page 1 /View [/XYZ null null 1] \
/PageLayout /SinglePage /DOCVIEW pdfmark"
进入PDF->PDF转换Ghostscript命令行。
请注意有关此代码段的各种基本事项:
关于 [
和 ]
operators/keywords,命令行片段的内容似乎是 'unbalanced'。但事实并非如此!初始 [ 由最终 pdfmark
关键字平衡。 (别问——我没有定义这个语法...)
'inner'[ ... ]
括号分隔了一个 数组,代表您想要的页面 /View
设置。
并非所有 PDF 查看器都尊重 PDF 文件中嵌入的视图设置(Acrobat 软件支持!)。
大多数 PDF 查看器允许用户覆盖嵌入在 PDF 文件中的视图设置(Acrobat 软件也这样做)。也就是说,您可以告诉您的查看器永远不要尊重它打开的 PDF 文件中的任何设置,而是 f.e。始终使用 "fit to width".
打开它
关于这个片段的一些具体事情:
- 页面模式
/UseNone
表示:文档显示时没有书签或缩略图。它可以被替换为
/UseOutlines
(也显示书签,而不仅仅是页面)
/UseThumbs
(显示页面的缩略图,而不仅仅是页面
/FullScreen
(以全屏模式打开文档)
- 构造为
[/XYZ <left> <top> <zoom>]
的视图模式数组表示:缩放系数为1(=100%),页面原点左侧距离为特殊的'null'值,表示保持先前用户设定的值;距页面原点的顶部距离也是 'null'。该数组可以替换为
/Fit
(使页面适应当前 window 大小)
/FitB
(使可见页面内容适应当前window大小)
/FitH <top>' (to adapt the page width to the current window width);
`表示页面原点到window. 上边缘所需的距离
- ...加上其他几个我现在记不起来了。
因此,要更改现有 PDF 文件的设置,您可以执行以下操作:
gs \
-o out.pdf \
-sDEVICE=pdfwrite \
-c "[ /PageMode /UseNone /Page 1 /View [ /XYZ null null 1 ] " \
-c " /PageLayout /SinglePage /DOCVIEW pdfmark" \
-f in.pdf
要检查 Ghostscript 命令是否有效,请在能够处理二进制文件的文本编辑器中打开 PDF。搜索 /View
或 /PageMode
关键字并检查它们是否存在,并作为值插入到 PDF 根对象中。
如果有效,请检查您的 PDF 查看器是否支持这些设置。如果它不尊重他们,请查看观众偏好设置中是否有覆盖设置。
我对我的示例 PDF 进行了快速测试 运行。这是 PDF 根对象的字典现在的样子,在 pdf-parser.py
:
的帮助下检查过
pdf-parser-beta.py -s Catalog a.pdf
obj 1 0
Type: /Catalog
Referencing: 3 0 R, 9 0 R
<<
/Type /Catalog
/Pages 3 0 R
/PageMode /UseNone
/Page 1
/View [/XYZ null null 1]
/PageLayout /SinglePage
/Metadata 9 0 R
>>
要了解有关 pdfmark 运算符的更多信息,google for 'pdfmark reference filetype:pdf'。您应该能够在 Adobe 网站和其他地方找到它:
为了让 ImageMagick 根据需要创建 PDF,您可以破解定义 delegate 设置的文件。有关此主题的更多帮助,请参见此处的示例:
我 运行 遇到 PNG 到 PDF 转换的问题。
实际上我有很多 PNG 文件,不是大小而是内容。
在 PDF 转换中,它会创建一个大的 PDF 文件。我对它的质量没有任何问题,但每当我尝试在 PDF 查看器中打开此 PDF 时,它都会以 "Fit to Page" 模式打开。
因此,我在初始视图中看不到创建的 PDF,但我需要将其放大到 100%。
我的问题是:我可以创建一个始终以 100% 缩放比例打开的 PDF 吗?
PDF 规范以这种方式支持此功能:创建转到第一页并将缩放级别设置为 100% 的 GoTo 操作,然后将该操作设置为文档打开操作。
如何在现实生活中具体实施它在很大程度上取决于您用来创建 PDF 文件的工具。我不知道ImageMagick是否可以创建这样的动作。
您可以借助 Ghostscript 实现您想要的。
Ghostscript 支持通过 -c "...[PostScript code here]..."
.
PostScript 有一个名为 pdfmark
的特殊运算符。大多数 PostScript 解释器不理解此运算符,但 Acrobat Distiller 和生成 PDF 时(对于其大部分参数)Ghostscript 也能理解。
所以你可以尝试插入
-c "[ /PageMode /UseNone /Page 1 /View [/XYZ null null 1] \
/PageLayout /SinglePage /DOCVIEW pdfmark"
进入PDF->PDF转换Ghostscript命令行。
请注意有关此代码段的各种基本事项:
关于
[
和]
operators/keywords,命令行片段的内容似乎是 'unbalanced'。但事实并非如此!初始 [ 由最终pdfmark
关键字平衡。 (别问——我没有定义这个语法...)'inner'
[ ... ]
括号分隔了一个 数组,代表您想要的页面/View
设置。并非所有 PDF 查看器都尊重 PDF 文件中嵌入的视图设置(Acrobat 软件支持!)。
大多数 PDF 查看器允许用户覆盖嵌入在 PDF 文件中的视图设置(Acrobat 软件也这样做)。也就是说,您可以告诉您的查看器永远不要尊重它打开的 PDF 文件中的任何设置,而是 f.e。始终使用 "fit to width".
打开它
关于这个片段的一些具体事情:
- 页面模式
/UseNone
表示:文档显示时没有书签或缩略图。它可以被替换为/UseOutlines
(也显示书签,而不仅仅是页面)/UseThumbs
(显示页面的缩略图,而不仅仅是页面/FullScreen
(以全屏模式打开文档)
- 构造为
[/XYZ <left> <top> <zoom>]
的视图模式数组表示:缩放系数为1(=100%),页面原点左侧距离为特殊的'null'值,表示保持先前用户设定的值;距页面原点的顶部距离也是 'null'。该数组可以替换为/Fit
(使页面适应当前 window 大小)/FitB
(使可见页面内容适应当前window大小)/FitH <top>' (to adapt the page width to the current window width);
`表示页面原点到window. 上边缘所需的距离
- ...加上其他几个我现在记不起来了。
因此,要更改现有 PDF 文件的设置,您可以执行以下操作:
gs \
-o out.pdf \
-sDEVICE=pdfwrite \
-c "[ /PageMode /UseNone /Page 1 /View [ /XYZ null null 1 ] " \
-c " /PageLayout /SinglePage /DOCVIEW pdfmark" \
-f in.pdf
要检查 Ghostscript 命令是否有效,请在能够处理二进制文件的文本编辑器中打开 PDF。搜索 /View
或 /PageMode
关键字并检查它们是否存在,并作为值插入到 PDF 根对象中。
如果有效,请检查您的 PDF 查看器是否支持这些设置。如果它不尊重他们,请查看观众偏好设置中是否有覆盖设置。
我对我的示例 PDF 进行了快速测试 运行。这是 PDF 根对象的字典现在的样子,在 pdf-parser.py
:
pdf-parser-beta.py -s Catalog a.pdf
obj 1 0
Type: /Catalog
Referencing: 3 0 R, 9 0 R
<<
/Type /Catalog
/Pages 3 0 R
/PageMode /UseNone
/Page 1
/View [/XYZ null null 1]
/PageLayout /SinglePage
/Metadata 9 0 R
>>
要了解有关 pdfmark 运算符的更多信息,google for 'pdfmark reference filetype:pdf'。您应该能够在 Adobe 网站和其他地方找到它:
为了让 ImageMagick 根据需要创建 PDF,您可以破解定义 delegate 设置的文件。有关此主题的更多帮助,请参见此处的示例: