在这个脚本中,bbox指的是什么?

bt365官网哪个真的 2025-07-18 07:28:47 admin 6758 599
在这个脚本中,bbox指的是什么?

我对Python很陌生,并试图掌握现有的脚本。这个例子来自pdfrw如下所示:http://code.google.com/p/pdfrw/wiki/ExampleTools

一台印表机和/或一本完整的Acrobat可以很容易地将你的小PDF变成一本小小册子(例如,在一个11英寸x17上打印4字母大小的页面)。

但这需要一些条件,包括人员知道如何操作硬件和软件。booklet.py允许您将PDF转换为预先格式化的小册子,以减少他们将其搞砸的机会:“

据我所知,这些步骤如下:

该函数开始遍历页面。变量"shift_right“被声明为?(我认为是元数据吗?)声明了一个只对元数据有用的变量"stuff“(我认为)X由BBox列表的第三个索引递增(这个列表是什么,它是什么时候建立的?)Y被分配到y与Bbox列表的第三个索引之间的较大值(同样,这个列表所指的是什么?)

我认为我的核心困惑是关于这两行与BBox,以及它们如何相互作用,以创建一个11x17小册子PDF。谢谢你能澄清这件事。

代码语言:javascript运行复制 import sys

import os

import find_pdfrw

from pdfrw import PdfReader, PdfWriter, PdfDict, PdfArray, PdfName, IndirectPdfDict

from pdfrw.buildxobj import pagexobj

def fixpage(*pages):

pages = [pagexobj(x) for x in pages]

class PageStuff(tuple):

pass

x = y = 0

for i, page in enumerate(pages):

index = '/P%s' % i

shift_right = x and '1 0 0 1 %s 0 cm ' % x or ''

stuff = PageStuff((index, page))

stuff.stream = 'q %s%s Do Q\n' % (shift_right, index)

x += page.BBox[2]

y = max(y, page.BBox[3])

pages[i] = stuff

# Multiple copies of first page used as a placeholder to

# get blank page on back.

for p1, p2 in zip(pages, pages[1:]):

if p1[1] is p2[1]:

pages.remove(p1)

return IndirectPdfDict(

Type = PdfName.Page,

Contents = PdfDict(stream=''.join(page.stream for page in pages)),

MediaBox = PdfArray([0, 0, x, y]),

Resources = PdfDict(

XObject = PdfDict(pages),

),

)

inpfn, = sys.argv[1:]

outfn = 'booklet.' + os.path.basename(inpfn)

pages = PdfReader(inpfn).pages

# Use page1 as a marker to print a blank at the end

if len(pages) & 1:

pages.append(pages[0])

bigpages = []

while len(pages) > 2:

bigpages.append(fixpage(pages.pop(), pages.pop(0)))

bigpages.append(fixpage(pages.pop(0), pages.pop()))

bigpages += pages

PdfWriter().addpages(bigpages).write(outfn)

相关推荐

网络电视软件推荐哪个 免费网络电视软件排行
和365差不多的平台有哪些

网络电视软件推荐哪个 免费网络电视软件排行

06-30 993
快贷芝麻分需要多少?看完这篇你就明白了!
和365差不多的平台有哪些

快贷芝麻分需要多少?看完这篇你就明白了!

07-14 756