Files
2025-11-30 08:30:14 +08:00

215 lines
7.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Poster PDF Quality Check Script
# Usage: ./review_poster.sh poster.pdf
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Check if file argument provided
if [ $# -eq 0 ]; then
echo -e "${RED}Error: No file specified${NC}"
echo "Usage: $0 <poster.pdf>"
exit 1
fi
POSTER_FILE="$1"
# Check if file exists
if [ ! -f "$POSTER_FILE" ]; then
echo -e "${RED}Error: File '$POSTER_FILE' not found${NC}"
exit 1
fi
echo -e "${BLUE}═══════════════════════════════════════════════${NC}"
echo -e "${BLUE} Poster PDF Quality Check${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════${NC}"
echo ""
echo -e "${GREEN}File:${NC} $POSTER_FILE"
echo ""
# Function to check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# 1. Page Size Check
echo -e "${YELLOW}[1] Page Dimensions:${NC}"
if command_exists pdfinfo; then
PAGE_SIZE=$(pdfinfo "$POSTER_FILE" 2>/dev/null | grep "Page size")
if [ -n "$PAGE_SIZE" ]; then
echo " $PAGE_SIZE"
# Extract dimensions and check common sizes
WIDTH=$(echo "$PAGE_SIZE" | awk '{print $3}')
HEIGHT=$(echo "$PAGE_SIZE" | awk '{print $5}')
# Check against common poster sizes (approximate)
if [ "$WIDTH" = "2384" ] && [ "$HEIGHT" = "3370" ]; then
echo -e " ${GREEN}✓ Detected: A0 Portrait${NC}"
elif [ "$WIDTH" = "3370" ] && [ "$HEIGHT" = "2384" ]; then
echo -e " ${GREEN}✓ Detected: A0 Landscape${NC}"
elif [ "$WIDTH" = "1684" ] && [ "$HEIGHT" = "2384" ]; then
echo -e " ${GREEN}✓ Detected: A1 Portrait${NC}"
elif [ "$WIDTH" = "2592" ] && [ "$HEIGHT" = "3456" ]; then
echo -e " ${GREEN}✓ Detected: 36×48 inches Portrait${NC}"
else
echo -e " ${YELLOW}⚠ Non-standard size detected${NC}"
fi
else
echo -e " ${RED}✗ Could not extract page size${NC}"
fi
else
echo -e " ${YELLOW}⚠ pdfinfo not installed (install: brew install poppler or apt-get install poppler-utils)${NC}"
fi
echo ""
# 2. Page Count
echo -e "${YELLOW}[2] Page Count:${NC}"
if command_exists pdfinfo; then
PAGE_COUNT=$(pdfinfo "$POSTER_FILE" 2>/dev/null | grep "Pages" | awk '{print $2}')
if [ "$PAGE_COUNT" = "1" ]; then
echo -e " ${GREEN}✓ Single page (correct for poster)${NC}"
else
echo -e " ${RED}✗ Multiple pages detected: $PAGE_COUNT${NC}"
echo -e " ${YELLOW} Posters should be single page${NC}"
fi
else
echo -e " ${YELLOW}⚠ pdfinfo not installed${NC}"
fi
echo ""
# 3. File Size
echo -e "${YELLOW}[3] File Size:${NC}"
if command_exists ls; then
FILE_SIZE=$(ls -lh "$POSTER_FILE" | awk '{print $5}')
FILE_SIZE_BYTES=$(ls -l "$POSTER_FILE" | awk '{print $5}')
echo " Size: $FILE_SIZE"
# Check if file is too large for email
if [ "$FILE_SIZE_BYTES" -gt 52428800 ]; then # 50MB
echo -e " ${YELLOW}⚠ Large file (>50MB) - may need compression for email${NC}"
echo -e " ${BLUE} Compress with: gs -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf $POSTER_FILE${NC}"
elif [ "$FILE_SIZE_BYTES" -lt 1048576 ]; then # 1MB
echo -e " ${YELLOW}⚠ Small file - check image quality${NC}"
else
echo -e " ${GREEN}✓ Reasonable file size${NC}"
fi
fi
echo ""
# 4. Font Embedding Check
echo -e "${YELLOW}[4] Font Embedding:${NC}"
if command_exists pdffonts; then
echo " Checking first 20 fonts..."
FONT_OUTPUT=$(pdffonts "$POSTER_FILE" 2>/dev/null | head -21)
echo "$FONT_OUTPUT" | tail -20 | while IFS= read -r line; do
echo " $line"
done
# Check for non-embedded fonts
NON_EMBEDDED=$(echo "$FONT_OUTPUT" | tail -n +3 | awk '{if ($4 == "no") print $0}')
if [ -n "$NON_EMBEDDED" ]; then
echo -e " ${RED}✗ Some fonts are NOT embedded (printing may fail)${NC}"
echo -e " ${BLUE} Fix: Recompile with 'pdflatex -dEmbedAllFonts=true poster.tex'${NC}"
else
echo -e " ${GREEN}✓ All fonts appear to be embedded${NC}"
fi
else
echo -e " ${YELLOW}⚠ pdffonts not installed (install: brew install poppler or apt-get install poppler-utils)${NC}"
fi
echo ""
# 5. Image Quality Check
echo -e "${YELLOW}[5] Image Quality:${NC}"
if command_exists pdfimages; then
IMAGE_COUNT=$(pdfimages -list "$POSTER_FILE" 2>/dev/null | tail -n +3 | wc -l | tr -d ' ')
if [ "$IMAGE_COUNT" -gt 0 ]; then
echo " Found $IMAGE_COUNT image(s)"
echo " Image details:"
pdfimages -list "$POSTER_FILE" 2>/dev/null | head -20
# Note: DPI calculation would require page size knowledge
echo -e " ${BLUE} Verify images are at least 300 DPI for printing${NC}"
echo -e " ${BLUE} Formula: DPI = pixels / (inches in poster)${NC}"
else
echo -e " ${YELLOW}⚠ No images found${NC}"
fi
else
echo -e " ${YELLOW}⚠ pdfimages not installed (install: brew install poppler or apt-get install poppler-utils)${NC}"
fi
echo ""
# 6. Manual Checks Required
echo -e "${YELLOW}[6] Manual Visual Inspection Required:${NC}"
echo ""
echo -e "${BLUE}Layout and Spacing:${NC}"
echo " [ ] Content fills entire page (no large white margins)"
echo " [ ] Consistent spacing between columns"
echo " [ ] Consistent spacing between blocks/sections"
echo " [ ] All elements aligned properly"
echo " [ ] No overlapping text or figures"
echo ""
echo -e "${BLUE}Typography:${NC}"
echo " [ ] Title visible and large (72pt+)"
echo " [ ] Section headers readable (48-72pt)"
echo " [ ] Body text readable (24-36pt minimum)"
echo " [ ] No text cutoff or running off edges"
echo " [ ] Consistent font usage"
echo ""
echo -e "${BLUE}Visual Elements:${NC}"
echo " [ ] All figures display correctly"
echo " [ ] No pixelated or blurry images"
echo " [ ] Figure captions present and readable"
echo " [ ] Colors render as expected"
echo " [ ] Logos display clearly"
echo " [ ] QR codes visible and scannable"
echo ""
echo -e "${BLUE}Content:${NC}"
echo " [ ] All sections present (Intro, Methods, Results, Conclusions)"
echo " [ ] References included"
echo " [ ] Contact information visible"
echo " [ ] No placeholder text (Lorem ipsum, TODO, etc.)"
echo ""
# 7. Recommended Tests
echo -e "${YELLOW}[7] Recommended Next Steps:${NC}"
echo ""
echo -e "${BLUE}Test Print:${NC}"
echo " • Print at 25% scale (A0→A4, 36×48→Letter)"
echo " • Check readability from 2-3 feet"
echo " • Verify colors printed accurately"
echo ""
echo -e "${BLUE}Digital Checks:${NC}"
echo " • View at 100% zoom in PDF viewer"
echo " • Test on different screens/devices"
echo " • Verify QR codes work with scanner app"
echo ""
echo -e "${BLUE}Proofreading:${NC}"
echo " • Spell-check all text"
echo " • Verify author names and affiliations"
echo " • Confirm all statistics and numbers"
echo " • Ask colleague to review"
echo ""
# 8. Summary
echo -e "${BLUE}═══════════════════════════════════════════════${NC}"
echo -e "${BLUE} Quality Check Complete${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════${NC}"
echo ""
echo -e "Review the checks above and complete manual verification."
echo -e "For full checklist, see: ${BLUE}assets/poster_quality_checklist.md${NC}"
echo ""
exit 0