Files
docker/remarkable/Dockerfile
Borgal 88d947e2ac Fix: Text-Highlights (GlyphRange) in annotierten PDFs sichtbar machen
- merge-annotations.py: rmscene GlyphRange-Blöcke auslesen und als SVG-Rects rendern
- Koordinaten: rmscene screen-px × 72/226 → SVG-Punkte (identisch mit rmc-Skalierung)
- Farben: fill='rgb(...)' + fill-opacity statt rgba() (Inkscape-Kompatibilität)
- Highlights werden VOR Stift-Annotationen eingefügt (korrekte Z-Order)
- Dockerfile: rmscene==0.6.1 (rmrl+rmscene>=0.7.0 waren inkompatibel mit rmc)
2026-03-25 01:33:11 +01:00

52 lines
2.1 KiB
Docker
Executable File

FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
rsync curl unzip python3 python3-pip \
inkscape poppler-utils cron \
php-cli \
&& rm -rf /var/lib/apt/lists/*
# rmc + Farb-Patch
RUN pip3 install "rmc==0.3.0" "rmscene==0.6.1" "pypdf" --break-system-packages --ignore-installed packaging \
&& python3 - <<'EOF'
import pathlib
import rmc.exporters.writing_tools as m
f = pathlib.Path(m.__file__)
src = f.read_text()
src = src.replace(
"self.base_color = RM_PALETTE[base_color_id]",
"self.base_color = RM_PALETTE.get(base_color_id, (255, 235, 0) if base_color_id == 9 else (128, 128, 128))"
)
old = ' segment_color = [min(int(abs(intensity - 1) * 255), 60)] * 3\n return "rgb" + str(tuple(segment_color))'
new = ' r = min(int(self.base_color[0] * intensity), 255)\n g = min(int(self.base_color[1] * intensity), 255)\n b = min(int(self.base_color[2] * intensity), 255)\n return "rgb" + str((r, g, b))'
src = src.replace(old, new)
old_b = ' segment_color = [int(rev_intensity * (255 - self.base_color[0])),\n int(rev_intensity * (255 - self.base_color[1])),\n int(rev_intensity * (255 - self.base_color[2]))]\n return "rgb" + str(tuple(segment_color))'
new_b = ' segment_color = [int(255 - intensity * (255 - c)) for c in self.base_color]\n return "rgb" + str(tuple(segment_color))'
src = src.replace(old_b, new_b)
src = src.replace("self.base_opacity = 0.1", "self.base_opacity = 0.3")
f.write_text(src)
EOF
# rmapi binary
COPY backup/rmapi /usr/local/bin/rmapi
RUN chmod +x /usr/local/bin/rmapi
# Skripte
COPY scripts/backup-official-cloud.sh /usr/local/bin/remarkable-backup.sh
COPY scripts/convert-to-pdf.sh /usr/local/bin/remarkable-convert.sh
COPY scripts/merge-annotations.py /usr/local/bin/remarkable-merge.py
RUN chmod +x /usr/local/bin/remarkable-merge.py
RUN chmod +x /usr/local/bin/remarkable-backup.sh /usr/local/bin/remarkable-convert.sh
# Web-UI
COPY web/ /app/
# Entrypoint
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 8080
ENTRYPOINT ["/entrypoint.sh"]