ตั้งค่า LibreOffice ให้รู้จัก Java Runtime ของคุณ
ติดตั้ง Java runtime ที่เข้ากันได้ เปิดใช้งานใน LibreOffice และแก้ไขปัญหาเมื่อรายการ JRE ว่างเปล่า โดยไม่ต้องเปลี่ยนแปลงการตั้งค่าที่ไม่เกี่ยวข้อง
ใช่แล้ว สำหรับการแปลงเอกสารแบบครั้งเดียว ให้สร้างอิมเมจ Docker ขนาดเล็กที่มี LibreOffice ติดตั้งอยู่ แล้วเรียก ใช้ soffice --headlessด้วย คำสั่ง `docker --convert-torun`ตั้งค่าไดเร็กทอรีอินพุตเป็นแบบอ่านอย่างเดียว และตั้งค่าไดเร็กทอรีเอาต์พุตแยกต่างหากให้มีสิทธิ์เขียน เพื่อให้ไฟล์ PDF ปรากฏบนโฮสต์ของคุณ ตัวอย่างนี้ใช้ภาพอิมเมจที่ใช้ Debian และแปลงไฟล์ DOCX หนึ่งไฟล์เป็น PDF โดยไม่ได้เปิดเผย LibreOffice เป็นบริการเครือข่าย

โหมดไร้หัว (Headless mode) จะเริ่มต้น LibreOffice โดยไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก เอกสารของ LibreOffice ระบุโหมดนี้สำหรับการใช้งานผ่านบรรทัดคำสั่งและ API และตัวเลือกบรรทัดคำสั่งรองรับการแปลงไฟล์พร้อมไดเร็กทอรีเอาต์พุต Docker บรรจุแอปพลิเคชันและส่วนประกอบที่จำเป็นเพื่อให้สคริปต์หรือเวิร์กสเตชันสามารถเรียกใช้ภาพคอนเทนเนอร์เดียวกันได้โดยไม่ต้องติดตั้งชุดโปรแกรมเดสก์ท็อปบนโฮสต์
รูปแบบนี้เหมาะสำหรับงานแบตช์ในเครื่อง งาน CI หรือเวิร์กเกอร์แบ็กเอนด์ที่รับไฟล์และบันทึกผลลัพธ์ที่แปลงแล้ว คอนเทนเนอร์แบบไร้ส่วนหัวนั้นไม่ใช่ API สำหรับการแปลง HTTP โดยตัวมันเอง: มันไม่รับฟังพอร์ตใด ๆ และไม่รับการอัปโหลดผ่านเว็บ หากคุณต้องการบริการแบบถาวร ให้สร้าง API และคิวงานครอบกระบวนการแปลง และเพิ่มการตรวจสอบคำขอ การหมดเวลา ข้อจำกัดขนาดไฟล์ และการแยกส่วน
บนระบบ Linux หรือ macOS ที่ใช้ Bash หรือเชลล์ที่คล้ายกัน ให้สร้างโฟลเดอร์โปรเจ็กต์ที่มีไดเร็กทอรีแยกต่างหาก ใส่เอกสารต้นฉบับไว้ในไดเร็กทอรีแรกinputและเว้นoutputว่างไว้ในไดเร็กทอรีถัดไปสำหรับการรันครั้งแรก:
mkdir -p lo-work/input lo-work/output
cp report.docx lo-work/input/
cd lo-work
คำสั่ง Docker ด้านล่างนี้ใช้เส้นทางแบบ Unix และไวยากรณ์เชลล์ บน Windows ให้ปรับไวยากรณ์เส้นทางโฮสต์สำหรับ PowerShell หรือ Command Prompt และตรวจสอบให้แน่ใจว่า Docker Desktop ได้รับอนุญาตให้แชร์ไดรฟ์ที่มีโฟลเดอร์เหล่านี้อยู่
สร้างไฟล์ชื่อDockerfileinside lo-workโดยใส่เนื้อหาดังนี้:
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
libreoffice-writer fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["soffice"]
libreoffice-writerโปรแกรมนี้จัดเตรียม Writer และตัวกรองการแปลงที่จำเป็นสำหรับรูปแบบไฟล์ประมวลผลคำทั่วไป เพิ่มlibreoffice-calcหรือlibreoffice-impressหากคอนเทนเนอร์ต้องแปลงสเปรดชีตหรืองานนำเสนอ ชุดฟอนต์เป็นเพียงพื้นฐานเท่านั้น ติดตั้งฟอนต์ที่เอกสารของคุณต้องการและมีสิทธิ์ใช้งาน เนื่องจากฟอนต์ที่ขาดหายไปอาจส่งผลต่อการขึ้นบรรทัดใหม่และการแบ่งหน้า
สร้างอิมเมจจากไดเร็กทอรีที่มีไฟล์ Dockerfile:
docker build -t lo-headless .
ตัวอย่างนี้ใช้ชื่อแพ็กเกจ Debian Bookworm แท็กของอิมเมจพื้นฐานและแพ็กเกจจากที่เก็บอาจเปลี่ยนแปลงไปตามเวลา สำหรับการสร้างเวอร์ชันใช้งานจริง ควรเลือกอิมเมจพื้นฐานที่ได้รับการดูแลรักษาอย่างสม่ำเสมอ สร้างใหม่เป็นประจำเพื่อรับการอัปเดตด้านความปลอดภัย และตรึงอิมเมจพื้นฐานด้วยไดเจสต์หากคุณต้องการสร้างเวอร์ชันที่สามารถทำซ้ำได้ หลีกเลี่ยงการติดตั้งแพ็กเกจจากที่เก็บที่ไม่เกี่ยวข้องเพียงเพื่อให้ตรงกับตัวอย่าง

เริ่มต้นคอนเทนเนอร์แบบใช้แล้วทิ้งและส่งตัวเลือกการแปลงหลังจากชื่อไฟล์ภาพ ไดเร็กทอรีอินพุตเป็นแบบอ่านอย่างเดียว เฉพาะไดเร็กทอรีเอาต์พุตเท่านั้นที่สามารถเขียนได้--userตัวเลือกนี้จะเรียกใช้กระบวนการด้วยผู้ใช้และกลุ่ม ID ของโฮสต์บน Linux ในขณะที่HOME=/tmpให้ LibreOffice มีโฮมที่สามารถเขียนได้ ปรับสิทธิ์การเข้าถึงโฟลเดอร์หากผู้ใช้โฮสต์ไม่สามารถเขียนoutputได้
docker run --rm \
--user "$(id -u):$(id -g)" \
--env HOME=/tmp \
-v "$PWD/input:/input:ro" \
-v "$PWD/output:/output" \
lo-headless \
--headless --nologo \
-env:UserInstallation=file:///tmp/lo-profile \
--convert-to pdf:writer_pdf_Export \
--outdir /output \
/input/report.docx
--headlessคำสั่ง นี้จะปิดใช้งาน GUI --convert-to pdf:writer_pdf_Exportเลือกตัวกรองการส่งออก PDF และ--outdirส่งผลลัพธ์ไปยังโฟลเดอร์เอาต์พุตที่เชื่อมต่อไว้ เส้นทางโปรไฟล์ผู้ใช้ที่ไม่ซ้ำกันจะทำให้กระบวนการนี้มีไดเร็กทอรีการกำหนดค่า LibreOffice ที่สามารถเขียนได้ หากคุณเรียกใช้การแปลงหลายรายการพร้อมกันในคอนเทนเนอร์ที่มีอายุการใช้งานยาวนาน ให้ใช้เส้นทางโปรไฟล์ที่แตกต่างกันสำหรับแต่ละกระบวนการ
ใช้ `@mount_converter` --mountแทน-v`@mount_converter` หากคุณต้องการใช้ไวยากรณ์การ mount ที่ชัดเจนกว่าของ Docker การ mount แบบ bind จะผูกกับพาธบนโฮสต์ของ Docker daemon และการ mount แบบ read-write จะอนุญาตให้กระบวนการคอนเทนเนอร์เปลี่ยนแปลงไฟล์บนโฮสต์ได้ ควรจำกัดการ mount ให้แคบ หลีกเลี่ยงการ mount ไดเร็กทอรีโฮมหรือซ็อกเก็ต Docker ของคุณ และอย่าเรียกใช้ worker สำหรับการแปลงเอกสารด้วยสิทธิ์ที่ไม่จำเป็น

ตรวจสอบไดเร็กทอรีเอาต์พุตของโฮสต์หลังจาก Docker ปิดตัวลง:
ls -l output/
file output/report.pdf
test -s output/report.pdf
ไฟล์ PDF ต้องมีอยู่และไม่ว่างเปล่า เปิดไฟล์นั้นด้วยโปรแกรมอ่าน PDF และตรวจสอบจำนวนหน้า ตาราง รูปภาพ การแบ่งหน้า และแบบอักษร ก่อนที่จะนำไปใช้ การที่กระบวนการเสร็จสิ้นอย่างสำเร็จไม่ได้หมายความว่าทุกองค์ประกอบแสดงผลได้ตามที่ต้องการ โดยเฉพาะอย่างยิ่งเมื่อเอกสารใช้แบบอักษรหรือคุณสมบัติที่ไม่มีอยู่ในคอนเทนเนอร์ ใช้ไดเร็กทอรีเอาต์พุตที่สะอาดหรือชื่อไฟล์เอาต์พุตใหม่ทุกครั้งที่ทำการเรียกใช้ เพื่อป้องกันไม่ให้ไฟล์ PDF เก่าถูกเข้าใจผิดว่าเป็นไฟล์ที่แปลงล่าสุด

inputถูกเมานต์ไว้ที่/inputและตรวจสอบว่าไดเร็กทอรีโฮสต์นั้นoutputสามารถเขียนได้โดยผู้ใช้ที่เลือกไว้-env:UserInstallationเส้นทางนั้นสามารถเขียนได้ ใช้ไดเร็กทอรีโปรไฟล์แยกต่างหากสำหรับแต่ละกระบวนการ LibreOffice ที่ทำงานพร้อมกัน-vหรือ--mountตรวจสอบว่าเดมอนสามารถเข้าถึงไดเร็กทอรีเหล่านั้นได้สำหรับรายละเอียดเกี่ยวกับพฤติกรรมของตัวเลือกต่างๆ โปรดดูเอกสารอ้างอิงพารามิเตอร์บรรทัดคำสั่งของ LibreOfficeสามารถตรวจสอบชื่อแพ็กเกจได้ในรายการแพ็กเกจของ Debian Bookworm สำหรับ LibreOffice Writerเอกสารอย่างเป็นทางการของ Docker อธิบายเกี่ยว กับ bind mountsและคำแนะนำใน Dockerfile
ติดตั้ง Java runtime ที่เข้ากันได้ เปิดใช้งานใน LibreOffice และแก้ไขปัญหาเมื่อรายการ JRE ว่างเปล่า โดยไม่ต้องเปลี่ยนแปลงการตั้งค่าที่ไม่เกี่ยวข้อง
สร้างคอนเทนเนอร์ LibreOffice ขนาดเล็ก แปลงเอกสารสำนักงานโดยไม่ต้องใช้ GUI และตรวจสอบความถูกต้องของไฟล์ PDF ที่ส่งออก พร้อมทั้งจำกัดการเข้าถึงไฟล์จากเครื่องโฮสต์
ลดขนาดไฟล์งานนำเสนอ LibreOffice ที่มีขนาดใหญ่เกินไป โดยการบีบอัดรูปภาพที่ฝังอยู่ เลือกการตั้งค่าภาพที่เหมาะสม และตรวจสอบคุณภาพของสไลด์ก่อนแชร์
ตรวจสอบขนาดหน้ากระดาษของ LibreOffice ให้ตรงกับเครื่องพิมพ์ของคุณ ตรวจสอบระยะขอบที่พิมพ์ได้ และปรับมาตราส่วนให้ถูกต้องก่อนพิมพ์เอกสารขนาดกำหนดเอง
แทนที่การเข้าถึงเซลล์ซ้ำๆ ด้วยการอ่านและเขียนช่วงข้อมูลจำนวนมาก จากนั้นทำการวัดประสิทธิภาพผลลัพธ์และปกป้องสูตรในเวิร์กบุ๊ก Calc ขนาดใหญ่
แบ่งต้นฉบับยาวๆ ออกเป็นบทๆ รวบรวมบทเหล่านั้นในโปรแกรม Writer และรักษาความสม่ำเสมอของรูปแบบ เนื้อหา และการตรวจสอบการส่งออก
ใช้ตัวเลือกการเชื่อมต่อ PostgreSQL โดยตรงของ Base เพื่อป้อนรายละเอียดเซิร์ฟเวอร์ เข้าสู่ระบบ บันทึกไฟล์การเชื่อมต่อ ODB และแก้ไขปัญหาข้อผิดพลาดในการเข้าถึงทั่วไป
ติดตั้งฟอนต์ในโฟลเดอร์ฟอนต์ของผู้ใช้ Linux รีสตาร์ท LibreOffice Flatpak และตรวจสอบว่าฟอนต์ปรากฏใน Writer โดยไม่ลดระดับการรักษาความปลอดภัยแอป
ปกป้องงานของคุณและแยกปัญหาการบันทึกข้อมูลผิดพลาดบนไดรฟ์เครือข่ายใน LibreOffice บน macOS Sonoma ด้วยเวิร์กโฟลว์ที่เน้นการบันทึกในเครื่องเป็นหลัก การตรวจสอบสิทธิ์ และการทดสอบแบบเจาะจง
รักษาเลขศูนย์นำหน้าใน Calc โดยการตั้งค่าคอลัมน์ ID เป็นข้อความระหว่างการนำเข้า CSV ตรวจสอบการแสดงตัวอย่าง และตรวจสอบข้อมูลที่บันทึกไว้