plan D fixed
This commit is contained in:
parent
afd7e9d941
commit
b500bfa6c1
2 changed files with 30 additions and 13 deletions
|
|
@ -51,6 +51,10 @@ class _ServicesAdapter:
|
|||
def workflow(self):
|
||||
return self._context.workflow
|
||||
|
||||
@workflow.setter
|
||||
def workflow(self, value):
|
||||
self._context.workflow = value
|
||||
|
||||
@property
|
||||
def chat(self):
|
||||
return self._get_service("chat")
|
||||
|
|
|
|||
|
|
@ -247,13 +247,28 @@ class RendererPdf(BaseRenderer):
|
|||
removed = False
|
||||
for idx, flowable in enumerate(story):
|
||||
fRepr = repr(flowable)
|
||||
if "Image" in fRepr and hasattr(flowable, 'drawWidth') and hasattr(flowable, 'drawHeight'):
|
||||
from reportlab.platypus import Image as ReportLabImage
|
||||
if isinstance(flowable, ReportLabImage):
|
||||
frameH = 650.0
|
||||
frameW = 450.0
|
||||
if flowable.drawHeight > frameH or flowable.drawWidth > frameW:
|
||||
scaleW = frameW / flowable.drawWidth if flowable.drawWidth > frameW else 1.0
|
||||
scaleH = frameH / flowable.drawHeight if flowable.drawHeight > frameH else 1.0
|
||||
s = min(scaleW, scaleH) * 0.9
|
||||
flowable.drawWidth = flowable.drawWidth * s
|
||||
flowable.drawHeight = flowable.drawHeight * s
|
||||
flowable._width = flowable.drawWidth
|
||||
flowable._height = flowable.drawHeight
|
||||
removed = True
|
||||
break
|
||||
if "Table" in fRepr and hasattr(flowable, '_cellvalues'):
|
||||
try:
|
||||
nRows = len(flowable._cellvalues)
|
||||
nCols = len(flowable._cellvalues[0]) if flowable._cellvalues else 0
|
||||
if nRows == 1 and nCols == 1:
|
||||
errPara = Paragraph(
|
||||
"[Code block omitted — content too large for PDF page]",
|
||||
"[Code block omitted - content too large for PDF page]",
|
||||
self._createNormalStyle({}),
|
||||
)
|
||||
story[idx] = errPara
|
||||
|
|
@ -1078,20 +1093,18 @@ class RendererPdf(BaseRenderer):
|
|||
pilImage = PILImage.open(imageStream)
|
||||
originalWidth, originalHeight = pilImage.size
|
||||
|
||||
# Calculate available page dimensions (A4 with margins: 72pt left/right, 72pt top, 18pt bottom)
|
||||
pageWidth = A4[0] # 595.27 points
|
||||
pageHeight = A4[1] # 841.89 points
|
||||
leftMargin = 72
|
||||
rightMargin = 72
|
||||
topMargin = 72
|
||||
bottomMargin = 18
|
||||
|
||||
# Use actual frame dimensions from SimpleDocTemplate
|
||||
# Frame is smaller than page minus margins due to internal spacing
|
||||
# From error message: frame is 439.27559055118115 x 739.8897637795277
|
||||
# Use conservative values with safety margin
|
||||
availableWidth = 430.0 # Slightly smaller than frame width for safety
|
||||
availableHeight = 730.0 # Slightly smaller than frame height for safety
|
||||
# Use page dimensions minus margins with generous safety buffer
|
||||
# A4 = 595.27 x 841.89 pt; frame = page - margins - internal padding
|
||||
_us = getattr(self, '_unifiedStyle', None) or {}
|
||||
_pageMgn = (_us.get('page') or {}).get('marginsPt') or {}
|
||||
marginTop = _pageMgn.get('top', 60)
|
||||
marginBottom = _pageMgn.get('bottom', 60)
|
||||
marginLeft = _pageMgn.get('left', 60)
|
||||
marginRight = _pageMgn.get('right', 60)
|
||||
availableWidth = pageWidth - marginLeft - marginRight - 20 # 20pt safety
|
||||
availableHeight = pageHeight - marginTop - marginBottom - 80 # 80pt safety for header/footer
|
||||
|
||||
# Convert original image size from pixels to points
|
||||
# PIL provides size in pixels, need to convert to points
|
||||
|
|
|
|||
Loading…
Reference in a new issue