Mengonversi dokumen ke gambar dengan GroupDocs.Watermark Java
Membuat pratinjau gambar ringan dari dokumen multi‑halaman adalah kebutuhan umum untuk portal, sistem manajemen konten, dan layanan penyimpanan cloud. Dengan convert document to image Anda memberikan pengguna akhir petunjuk visual cepat tanpa beban memuat file lengkap. Pustaka GroupDocs.Watermark Java tidak hanya menambahkan watermark tetapi juga menyediakan mesin pratinjau berperforma tinggi yang dapat java generate thumbnails untuk setiap halaman dalam satu kali proses.
Dalam tutorial ini Anda akan belajar cara menyiapkan pustaka, membuat aliran halaman khusus, melepaskan sumber daya dengan aman, dan akhirnya menghasilkan pratinjau gambar untuk setiap halaman dokumen sumber. Instruksi ditulis untuk pengembang yang familiar dengan Java dan konsep berorientasi objek, serta mencakup tip praktik terbaik untuk menangani batch file besar.
Jawaban cepat
- Apa langkah pertama? Tambahkan dependensi Maven GroupDocs.Watermark dan inisialisasi
Watermarkerdengan path file sumber. - Bagaimana gambar pratinjau dibuat? Implementasikan
ICreatePageStreamuntuk membuka output stream untuk setiap halaman, kemudian panggilgeneratePreview()dengan opsi yang sesuai. - Apakah saya memerlukan lisensi? Versi percobaan berfungsi untuk skenario dasar, tetapi lisensi penuh menghapus watermark dan membuka pemrosesan batch.
- Bisakah saya memproses PDF lebih besar dari 200 halaman? Ya – pustaka men‑stream halaman, sehingga penggunaan memori tetap rendah bahkan untuk file 500 halaman.
- Format gambar apa yang didukung? PNG, JPEG, BMP, dan TIFF tersedia secara langsung.
Apa itu convert document to image?
Frasa convert document to image menggambarkan proses merender setiap halaman file sumber (PDF, DOCX, PPTX, dll.) menjadi gambar raster seperti PNG atau JPEG. Konversi ini berguna untuk galeri thumbnail, panel pratinjau, dan penampil dokumen yang ramah seluler.
Mengapa menggunakan GroupDocs.Watermark untuk pembuatan pratinjau?
GroupDocs.Watermark mendukung lebih dari 30 format input dan dapat menghasilkan pratinjau untuk dokumen hingga 500 halaman tanpa memuat seluruh file ke memori. Secara internal ia memproses halaman secara berurutan, yang menjaga penggunaan heap Java di bawah 50 MB bahkan untuk PDF besar. Pustaka juga menawarkan optimasi gambar bawaan, memungkinkan Anda menentukan DPI, kedalaman warna, dan tingkat kompresi, yang menghasilkan thumbnail biasanya 70 % lebih kecil dibandingkan rasterisasi sederhana.
Prasyarat
Sebelum Anda memulai, pastikan Anda memiliki hal‑hal berikut:
- Java Development Kit (JDK) 11 atau lebih baru – pustaka dikompilasi untuk Java 8+, tetapi JDK 11 memberikan dukungan jangka panjang dan kinerja yang lebih baik.
- Maven 3.6+ – untuk manajemen dependensi.
- GroupDocs.Watermark for Java versi 24.11 – rilis stabil terbaru pada saat penulisan.
- Pengetahuan dasar tentang Java I/O streams – Anda akan membuat objek
FileOutputStreamuntuk setiap halaman pratinjau. - Kunci lisensi (opsional untuk produksi) – versi percobaan membatasi ukuran pratinjau hingga 5 MB per dokumen.
Cara menyiapkan GroupDocs.Watermark untuk Java
Untuk menyiapkan GroupDocs.Watermark, pertama tambahkan repositori Maven dan kemudian sertakan pustaka sebagai dependensi di pom.xml proyek Anda. Ini memastikan Maven dapat mengunduh artefak yang tepat dan membuat kelas tersedia di classpath untuk kompilasi dan runtime.
Tambahkan dependensi Maven
Pustaka didistribusikan melalui Maven Central. Tambahkan potongan kode berikut ke pom.xml Anda di dalam blok <dependencies>:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
Tip pro: Simpan nomor versi dalam properti (
<groupdocs.watermark.version>24.11</groupdocs.watermark.version>) sehingga Anda dapat memperbarui dengan mudah.
Unduhan langsung (alternatif)
Jika Anda lebih suka instalasi manual, Anda dapat mengunduh JAR dari halaman rilis resmi: GroupDocs.Watermark for Java releases.
Cara memperoleh dan menerapkan lisensi
Menerapkan lisensi ke GroupDocs.Watermark menghapus batasan percobaan dan menonaktifkan overlay watermark default. Tempatkan file lisensi di lokasi yang diketahui dan arahkan API ke sana, atau sematkan path lisensi langsung dalam kode sebelum panggilan lain. Setelah dimuat, semua operasi selanjutnya berjalan dalam mode fitur penuh.
Anda dapat:
- Minta percobaan gratis dari portal GroupDocs – menyediakan file lisensi 30‑hari.
- Buat lisensi sementara melalui generator lisensi online untuk lingkungan evaluasi.
- Beli lisensi komersial untuk penggunaan produksi tak terbatas dan dukungan prioritas.
Tempatkan file lisensi (GroupDocs.Watermark.lic) di root proyek Anda atau tentukan path‑nya secara programatis dengan Watermarker.setLicense("path/to/license.file").
Cara menginisialisasi Watermarker
Inisialisasi Watermarker dengan memberikan path ke dokumen sumber, opsional menyertakan password untuk file yang dilindungi. Konstruktor memvalidasi format dan menyiapkan parser internal, memungkinkan Anda langsung memanggil metode preview atau watermark. Setelah dibuat, simpan referensi untuk menggunakan kembali instance tersebut untuk beberapa operasi jika diperlukan.
Kelas Watermarker adalah objek inti GroupDocs.Watermark yang memuat dokumen dan mengekspos operasi seperti penyisipan watermark dan pembuatan pratinjau.
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/diagram.vdx");
inputDocumentPath– path absolut atau relatif ke file sumber.- Konstruktor memvalidasi format file dan menyiapkan parser internal.
Definisi anchor:
Watermarkeradalah titik masuk untuk semua aksi pemrosesan dokumen di GroupDocs.Watermark untuk Java.
Cara membuat aliran halaman untuk pembuatan pratinjau
Buat aliran halaman khusus dengan mengimplementasikan antarmuka ICreatePageStream, yang dipanggil pustaka untuk setiap halaman yang dirender. Implementasi Anda harus menghasilkan OutputStream baru—biasanya FileOutputStream—yang mengarah ke file dengan nama unik berdasarkan nomor halaman. Pendekatan ini memisahkan output setiap halaman dan mencegah tumpang tindih data.
Untuk java generate thumbnails, Anda harus menyediakan aliran untuk setiap halaman tempat gambar yang dirender akan ditulis. Implementasikan antarmuka ICreatePageStream; pustaka memanggil implementasi Anda untuk setiap halaman yang diproses.
public class FeatureCreatePageStream implements ICreatePageStream {
private final String outputDir;
private final String fileNameTemplate; // e.g. "preview_page_{0}.png"
public FeatureCreatePageStream(String outputDir, String fileNameTemplate) {
this.outputDir = outputDir;
this.fileNameTemplate = fileNameTemplate;
}
@Override
public OutputStream createPageStream(int pageNumber) throws IOException {
String fileName = fileNameTemplate.replace("{0}", String.valueOf(pageNumber));
return new FileOutputStream(Paths.get(outputDir, fileName).toFile());
}
}
fileNameTemplatememungkinkan Anda menyisipkan nomor halaman langsung ke nama file, memudahkan pemrosesan batch.- Metode mengembalikan
OutputStreambaru untuk setiap halaman, memastikan halaman sebelumnya tidak mengganggu penulisan selanjutnya.
Definisi anchor:
ICreatePageStreamadalah antarmuka callback yang memungkinkan Anda menentukan cara pembuatan output stream untuk setiap halaman pratinjau.
Cara melepaskan aliran halaman setelah pembuatan pratinjau
Setelah gambar halaman ditulis, pustaka memanggil IReleasePageStream untuk memungkinkan Anda menutup dan membersihkan output stream terkait. Implementasikan callback ini untuk melepaskan handle file dengan aman, mengosongkan buffer, dan melakukan logging tambahan bila diperlukan. Pembersihan yang tepat menghindari kebocoran descriptor dan memastikan halaman berikutnya dapat diproses tanpa gangguan.
Pembersihan sumber daya yang tepat mencegah kebocoran handle file dan menjaga JVM tidak kehabisan descriptor. Implementasikan IReleasePageStream untuk menutup stream setelah pustaka memberi sinyal bahwa halaman selesai.
public class FeatureReleasePageStream implements IReleasePageStream {
@Override
public void releasePageStream(OutputStream stream) throws IOException {
stream.close();
}
}
Definisi anchor:
IReleasePageStreamadalah antarmuka callback yang memungkinkan Anda mendefinisikan logika khusus untuk membuang sumber daya output spesifik halaman.
Cara menghasilkan pratinjau dokumen (convert document to image)
Hasilkan pratinjau dengan memanggil generatePreview() pada instance Watermarker, menyediakan objek PreviewOptions yang menentukan resolusi, format gambar, dan rentang halaman. Metode ini mengiterasi setiap halaman, menggunakan pembuat aliran Anda untuk menulis gambar raster, lalu melepaskan aliran. Proses ini menghasilkan sekumpulan file gambar yang mewakili halaman dokumen.
Dengan Watermarker, FeatureCreatePageStream, dan FeatureReleasePageStream siap, Anda dapat memanggil mesin pratinjau. Metode generatePreview() mengiterasi setiap halaman, memanggil pembuat aliran Anda, menulis gambar, dan akhirnya melepaskan aliran.
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/diagram.vdx");
ICreatePageStream createPageStream = new FeatureCreatePageStream("output/previews", "preview_page_{0}.png");
IReleasePageStream releasePageStream = new FeatureReleasePageStream();
PreviewOptions previewOptions = new PreviewOptions();
previewOptions.setResolution(150); // DPI, higher = sharper but larger files
previewOptions.setImageFormat(ImageFormat.Png); // PNG is lossless and web‑friendly
watermarker.generatePreview(previewOptions, createPageStream, releasePageStream);
Resolutionmengontrol DPI; 150 DPI adalah keseimbangan yang baik untuk thumbnail web.ImageFormatdapat berupa PNG, JPEG, BMP, atau TIFF tergantung pada kebutuhan downstream Anda.- Metode memproses halaman secara berurutan, sehingga konsumsi memori tetap rendah bahkan untuk dokumen dengan ratusan halaman.
Definisi anchor:
generatePreview()adalah panggilan API yang merender setiap halaman dokumen yang dimuat menjadi gambar menggunakan aliran yang Anda sediakan.
Aplikasi praktis dari convert document to image
Membuat pratinjau gambar membuka banyak kemungkinan:
- Penjelajah dokumen – Tampilkan grid thumbnail PNG sehingga pengguna dapat menelusuri PDF besar tanpa membukanya.
- Cuplikan hasil pencarian – Lampirkan gambar pratinjau ke entri indeks pencarian untuk UI yang lebih kaya.
- Lampiran email – Sisipkan pratinjau kecil PDF terlampir di badan email.
- Aplikasi seluler – Kurangi bandwidth dengan mengirim pratinjau PNG 200 KB alih‑alih PDF lengkap.
- Portal kepatuhan – Render versi kontrak berwatermark yang diwajibkan secara hukum sebagai gambar untuk jejak audit.
Pertimbangan kinerja saat Anda java generate thumbnails
Saat Anda menangani pemrosesan massal, ingatlah tip optimasi berikut:
- Buffering aliran – Bungkus
FileOutputStreamdalamBufferedOutputStreamuntuk meminimalkan I/O disk. - Eksekusi batch paralel – Gunakan
ForkJoinPoolJava untuk memproses beberapa dokumen secara bersamaan; setiap tugas harus membuat instanceWatermarkersendiri untuk menghindari masalah keamanan thread. - Batasi DPI untuk thumbnail – 72–150 DPI cukup untuk kebanyakan skenario UI; DPI lebih tinggi harus disiapkan untuk pratinjau siap cetak.
- Gunakan kembali objek lisensi – Memuat file lisensi sekali per JVM mengurangi overhead.
- Pantau memori – Pustaka hanya menyimpan halaman saat ini di memori. Untuk file yang sangat besar, pertimbangkan meningkatkan heap JVM secara moderat (mis.,
-Xmx512m) untuk mengakomodasi lonjakan sesekali.
Jebakan umum dan cara menghindarinya
| Gejala | Penyebab kemungkinan | Solusi |
|---|---|---|
OutOfMemoryError selama pembuatan pratinjau | Menggunakan ImageFormat.Jpeg dengan 300 DPI pada PDF 1000‑halaman | Kurangi DPI atau beralih ke PNG dengan kedalaman warna lebih rendah |
| File pratinjau kosong | FeatureCreatePageStream mengembalikan FileOutputStream yang sama untuk setiap halaman | Pastikan aliran baru dibuat per pageNumber |
| Gambar pratinjau terrotasi | PDF sumber berisi metadata rotasi yang tidak dipatuhi | Panggil previewOptions.setRotatePages(true) (jika tersedia) |
| Peringatan lisensi muncul | File lisensi tidak ditemukan atau path tidak benar | Verifikasi Watermarker.setLicense("path/to/license.file") dijalankan sebelum panggilan API lainnya |
Pertanyaan yang sering diajukan
T: Bisakah saya menghasilkan pratinjau untuk PDF yang dilindungi password?
J: Ya. Berikan password ke konstruktor Watermarker: new Watermarker("file.pdf", "password").
T: Format gambar apa yang didukung untuk output pratinjau?
J: PNG, JPEG, BMP, dan TIFF tersedia. PNG direkomendasikan untuk thumbnail lossless.
T: Berapa banyak halaman yang dapat diproses dalam satu panggilan?
J: Pustaka tidak memberlakukan batas keras; Anda dapat mempratinjau dokumen dengan ribuan halaman, terbatas hanya oleh ruang penyimpanan dan throughput I/O.
T: Apakah saya memerlukan lisensi terpisah untuk setiap instance server?
J: Satu file lisensi dapat digunakan kembali di beberapa instance selama total penggunaan mematuhi ketentuan lisensi.
T: Apakah ada cara untuk menghasilkan satu thumbnail gabungan (mis., hanya halaman pertama)?
J: Ya. Atur previewOptions.setPages(new int[]{1}) untuk membatasi pembuatan ke halaman pertama.
Kesimpulan
Anda kini memiliki alur kerja lengkap dan siap produksi untuk convert document to image dan java generate thumbnails menggunakan GroupDocs.Watermark. Dengan mengonfigurasi penangan aliran halaman khusus, Anda menjaga penggunaan memori tetap rendah, dan dengan menyesuaikan PreviewOptions Anda mengontrol kualitas gambar serta ukuran file. Teknik ini memungkinkan Anda menyematkan pratinjau cepat dan berkualitas tinggi ke dalam aplikasi berbasis Java apa pun—baik portal web, klien desktop, atau layanan mikro berbasis cloud.
Terakhir Diperbarui: 2026-09-26
Diuji Dengan: GroupDocs.Watermark 24.11 untuk Java
Penulis: GroupDocs
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/watermark/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
</dependencies>
import com.groupdocs.watermark.Watermarker;
public class FeatureInitializeWatermarker {
public static void main(String[] args) {
String inputDocumentPath = "YOUR_DOCUMENT_DIRECTORY/diagram.vdx";
// Initialize Watermarker with the specified document
Watermarker watermarker = new Watermarker(inputDocumentPath);
System.out.println("Watermarker initialized.");
}
}
import java.io.FileOutputStream;
import com.groupdocs.watermark.options.ICreatePageStream;
import java.io.OutputStream;
public class FeatureCreatePageStream implements ICreatePageStream {
private final String fileNameTemplate;
public FeatureCreatePageStream(String outputDirectory) {
this.fileNameTemplate = outputDirectory + "/page%s.png";
}
@Override
public OutputStream createPageStream(int pageNumber) {
String fileName = String.format(this.fileNameTemplate, pageNumber);
try {
return new FileOutputStream(fileName);
} catch (Exception ex)
{
throw new RuntimeException(ex);
}
}
}
import com.groupdocs.watermark.options.IReleasePageStream;
import java.io.OutputStream;
public class FeatureReleasePageStream implements IReleasePageStream {
@Override
public void releasePageStream(int pageNumber, OutputStream pageStream) {
try
{
pageStream.close();
} catch (Exception ex)
{
throw new RuntimeException(ex);
}
}
}
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.PreviewOptions;
public class FeatureGenerateDocumentPreview {
public static void main(String[] args) {
String inputDocumentPath = "YOUR_DOCUMENT_DIRECTORY/diagram.vdx";
Watermarker watermarker = new Watermarker(inputDocumentPath);
FeatureCreatePageStream createPageStream = new FeatureCreatePageStream("YOUR_OUTPUT_DIRECTORY");
FeatureReleasePageStream releasePageStream = new FeatureReleasePageStream();
PreviewOptions previewOptions = new PreviewOptions(createPageStream, releasePageStream);
watermarker.generatePreview(previewOptions);
watermarker.close();
}
}