reportlab:如何设置 initial/default 视图?

reportlab: how to set initial/default view?

我成功地生成了一个空的 PDF,但它没有设置初始视图。我想将初始视图设置为 "full view",即最终用户看到一页适合 PDF reader(= A4 页面适合屏幕)。

def render_to_response(self, context, **response_kwargs):

    response = HttpResponse(content_type='application/pdf; charset=utf-8')
    response['Content-Disposition'] = 'attachment; filename=""'

    p = canvas.Canvas(response, pagesize=A4, )
    p.showPage()
    p.save()

    return response

如何使用 reportlab 设置默认缩放视图(如果可能)?

简而言之

添加这一行:

p.setViewerPreference("FitWindow", "true")

解释一下

设置观众偏好:

def setViewerPreference(self,pref,value):
    set one of the allowed enbtries in the documents viewer preferences

可用的 prefvalue 是:

class ViewerPreferencesPDFDictionary(CheckedPDFDictionary):
    validate=dict(
        HideToolbar=checkPDFBoolean,
        HideMenubar=checkPDFBoolean,
        HideWindowUI=checkPDFBoolean,
        FitWindow=checkPDFBoolean,
        CenterWindow=checkPDFBoolean,
        DisplayDocTitle=checkPDFBoolean,    #contributed by mark Erbaugh
        NonFullScreenPageMode=checkPDFNames(*'UseNone UseOutlines UseThumbs UseOC'.split()),
        Direction=checkPDFNames(*'L2R R2L'.split()),
        ViewArea=checkPDFNames(*'MediaBox CropBox BleedBox TrimBox ArtBox'.split()),
        ViewClip=checkPDFNames(*'MediaBox CropBox BleedBox TrimBox ArtBox'.split()),
        PrintArea=checkPDFNames(*'MediaBox CropBox BleedBox TrimBox ArtBox'.split()),
        PrintClip=checkPDFNames(*'MediaBox CropBox BleedBox TrimBox ArtBox'.split()),
        PrintScaling=checkPDFNames(*'None AppDefault'.split()),
        )

参考