繁体   English   中英

bbox在此脚本中指的是什么?

[英]What does bbox refer to in this script?

我是Python的新手,正在尝试掌握现有脚本。 pdfrw提供了此示例,如下所示: http : //code.google.com/p/pdfrw/wiki/ExampleTools

“带有精美打印机和/或Acrobat完整副本的打印机可以轻松地将您的小型PDF变成一本小册子(例如,在一个11“ x 17”的页面上打印4个字母大小的页面)。

但这假设了几件事,包括人员知道如何操作硬件和软件。 booklet.py可让您将PDF转换为预格式化的小册子,从而使他们有更少的机会弄乱它:

尽我所能告诉的步骤是:

  • 函数开始循环浏览页面
  • 声明了一个变量“ shift_right” (我认为这是用于元数据的?)
  • 声明了一个仅对元数据有用的变量“ stuff”(我认为)
  • x增加BBox列表的第三个索引(该列表是什么,什么时候建立的?)
  • y被分配给y和Bbox列表的第三个索引之间的较大值(同样,此列表指的是什么?)

我认为我的核心困惑是关于BBox的这两行,以及它们如何交互以创建11x17小册子PDF。 感谢您能解决此问题的任何人。

    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)

Bbox通常是“边界框”的简写:在这种情况下,矩形定义了页面的尺寸。 在这种情况下,它看起来像是一个由4个数字组成的数组,其中前两个是页面的左上角(0,0),第三个是页面右侧的x坐标(因为左侧为0,所以它也是宽度),而第四个是页面的底部/高度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM