# Crop a single page PDF document. # This is specifically designed for the letter size UPS shipping label that needs to be cropped for printing. import base64 import io from cropper import AutoSettings, ManualSettings, argument_default, auto_crop, manual_crop, messages from typing import Dict, Any def lambda_handler(event: Dict[str, Any], context: Any) -> Dict[str, Any]: messages.clear() content = io.BytesIO(base64.b64decode(event['b64_content'])) mode = argument_default(event, 'mode', 'manual', 'string') messages.append(f"Log stream name is {context.log_stream_name}") if mode == 'auto': settings = AutoSettings() settings.event_argument(event, 'width') settings.event_argument(event, 'height') settings.event_argument(event, 'margin') try: buffer = auto_crop(content, settings) except Exception as e: return { 'statusCode': 400, 'error': str(e), 'messages': messages, } elif mode == 'manual': settings = ManualSettings() settings.event_argument(event, 'start_x') settings.event_argument(event, 'start_y') settings.event_argument(event, 'width') settings.event_argument(event, 'height') settings.event_argument(event, 'scale_x') settings.event_argument(event, 'scale_y') settings.event_argument(event, 'rotate') buffer = manual_crop(content, settings) else: return { 'statusCode': 400, 'error': 'Invalid mode: (manual|auto)', 'messages': messages, } data = base64.b64encode(buffer.getvalue()) return { 'statusCode': 200, 'body': data, 'messages': messages, }