我正在尝试编写或多或少的PDF软件证明。
我想提取一些信息,但不知道怎么做。
我需要提取的内容:
Bleed: I got this somewhat working with pyPdf, given
that the document uses 72 dpi, which sadly isn't
always the case. I need to be able to calculate
the bleed in millimeters.
Print resolution (dpi): If I read the PDF spec[1] correctly this ought to
always be 72 dpi, unless a page has UserUnit set,
which was only introduced in PDF-1.6, but shouldn't
print documents always be at least 300 dpi? I'm
afraid that I misunderstood something…
I'd also need the print resolution for images, if
they can differ from the default page resolution,
that is.
Text color: I don't have the slightest clue on how to extract
this, the string 'text colour' only shows up once
in the whole spec, without any explanation how it
is set.
Image colormodel: If I understand it correctly I can read this out
in pyPdf with page['/Group']['/CS'] which can be:
- /DeviceRGB
- /DeviceCMY
- /DeviceCMYK
- /DeviceGray
- /DeviceRGBK
- /DeviceN
Font 'embeddedness': I read in another post on stackoverflow that I
can just iterate over the font resources and if a
resource has a '/FontFile'-key that means that
the font is embedded. Is this correct?
如果除了pyPdf之外的其他库更能够提取此信息(或组合 他们非常欢迎他们。到目前为止,我偶然发现了pyPdf,pdfrw 和pdfminer。所有这些都没有最全面的文档。
[1] http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
答案 0 :(得分:2)
如果我正确阅读PDF规范1,那么它应该始终是72 dpi, 除非页面设置了UserUnit,这仅在PDF-1.6中引入, 但不应该打印文件总是至少300 dpi?我耽心 我误解了一些事情......
你确实误解了一些事情。默认用户空间单位,默认为1/72英寸但可以在PDF-1.6之后在每页基础上更改,不定义打印分辨率,它只定义坐标中单位的长度默认情况下由用户给出(即,除非任何大小改变转换处于活动状态)对应于。
对于打印,所有数据都将转换为依赖于设备的空间,其分辨率与用户空间坐标无关。打印分辨率取决于打印设备及其驱动程序;由于安全设置允许低质量打印,它们可能会受到限制。
如果图像不同,我还需要图像的打印分辨率 默认的页面分辨率,即。
图像(嗯,位图图像,在PDF中也有矢量图形)各自具有它们各自的分辨率,然后可以在渲染之前被变换(例如放大)。因此,对于“图像打印分辨率”,您必须检查每个位图图像以及插入它的每个页面内容。如果图像旋转,倾斜和不对称拉伸,我想知道你将用什么数字作为分辨率......;)
文字颜色:我对如何提取这个字符串没有丝毫的线索 “文字颜色”仅在整个规格中出现一次,没有任何 解释如何设置。
请查看spec中的第9.2.3节:
用于绘制字形的颜色应为当前颜色 图形状态:非描边颜色或描边颜色 (或两者),取决于文本呈现模式(见9.3.6,“文本 渲染模式“)。默认颜色应为黑色(在DeviceGray中), 但是可以通过执行适当的方式获得其他颜色 颜色设置操作符或操作符(参见8.6.8,“颜色操作符”) 在绘制字形之前。
在那里你可以找到许多有趣的部分。但请注意,文字不仅仅是彩色的;它也可以呈现为应用于任何背景的剪辑路径。
我在stackoverflow上的另一篇文章中读到了我可以迭代的内容 字体资源,如果资源有'/ FontFile'键意味着 字体是嵌入的。这是对的吗?
我会建议更精确的分析。还有其他相关的密钥,例如'/ FontFile2'和'/ FontFile3',必须使用正确的。
不要低估你的任务......你应该开始定义你搜索的属性在旋转,拉伸和倾斜的字形,矢量图形和位图图像(如PDF)的混合环境中的含义。