Membuat file PDF dalam Java
Aspose.PDF for Java mendukung baik pembuatan dokumen sederhana maupun alur kerja PDF yang dapat dicari dengan bantuan OCR.
Membuat dokumen PDF baru
Gunakan pendekatan ini ketika Anda perlu membuat file PDF sederhana dari awal.
- Buat PDF baru
Document. - Tambahkan
Pageke dokumen. - Buat sebuah
TextFragmentdan tambahkan ke halaman. - Simpan PDF output
Document.
public static void createNewDocument(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
page.getParagraphs().add(new TextFragment("Hello World!"));
document.save(outputFile.toString());
}
}
Membuat PDF yang dapat dicari
{“translatedText”:""} createSearchablePdf contoh penggunaan Document.convert(...) dengan a CallBackGetHocr implementasi. Callback menulis gambar sumber ke file sementara, memanggil Tesseract dengan hocr opsi, membaca markup HOCR yang dihasilkan, dan mengembalikannya ke Aspose.PDF.
- Buka PDF sumber
Document. - Buat
CallBackGetHocrpanggilan balik dan mengonversi dokumen sumber menjadi konten PDF yang dapat dicari. - Simpan PDF yang diperbarui
Document.
public static void createSearchablePdf(Path inputFile, Path outputFile) {
Path tempDir = outputFile.getParent().resolve("ocr-temp");
CallBackGetHocr cbgh = new CallBackGetHocr() {
@Override
public String invoke(java.awt.image.BufferedImage img) {
// save the image, run Tesseract with "hocr", and return the HOCR text
return fileContents.toString();
}
};
try (Document document = new Document(inputFile.toString())) {
document.convert(cbgh);
document.save(outputFile.toString());
}
}
Mendapatkan pengaturan jendela dokumen
Gunakan contoh ini untuk memeriksa preferensi penampil saat ini yang disimpan dalam dokumen PDF yang ada.
- Buka PDF sumber
Document. - Baca properti jendela dan tampilan yang diperlukan dari dokumen.
- Keluarkan pengaturan saat ini untuk inspeksi atau debugging.
public static void getDocumentWindow(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
System.out.println("CenterWindow: " + document.isCenterWindow());
System.out.println("Direction: " + document.getDirection());
System.out.println("DisplayDocTitle: " + document.isDisplayDocTitle());
System.out.println("FitWindow: " + document.isFitWindow());
System.out.println("HideMenuBar: " + document.isHideMenubar());
System.out.println("HideToolBar: " + document.isHideToolBar());
System.out.println("HideWindowUI: " + document.isHideWindowUI());
System.out.println("NonFullScreenPageMode: " + document.getNonFullScreenPageMode());
System.out.println("PageLayout: " + document.getPageLayout());
System.out.println("PageMode: " + document.getPageMode());
}
}
Mengatur preferensi jendela dokumen
Contoh ini memperbarui cara PDF harus ditampilkan ketika dibuka di penampil yang kompatibel.
- Buka PDF sumber
Document. - Atur preferensi jendela, tata letak, dan mode halaman yang diperlukan.
- Simpan PDF yang diperbarui
Document.
public static void setDocumentWindow(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setCenterWindow(true);
document.setDirection(Direction.R2L);
document.setDisplayDocTitle(true);
document.setFitWindow(true);
document.setHideMenubar(true);
document.setHideToolBar(true);
document.setHideWindowUI(true);
document.setNonFullScreenPageMode(PageMode.UseOC);
document.setPageLayout(PageLayout.TwoColumnLeft);
document.setPageMode(PageMode.UseThumbs);
document.save(outputFile.toString());
}
}
Menyematkan font dalam PDF yang ada
Gunakan pendekatan ini ketika sebuah dokumen harus membawa font yang diperlukan untuk rendering yang lebih andal pada sistem lain.
- Buka PDF sumber
Document. - Aktifkan penyematan font standar dan iterasi melalui font yang digunakan oleh masing-masing
Page. - Tandai semua yang tidak tertanam objek
Fontuntuk disematkan. - Simpan dokumen yang diperbarui.
public static void embeddedFonts(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setEmbedStandardFonts(true);
for (Page page : document.getPages()) {
for (Font pageFont : page.getResources().getFonts()) {
if (!pageFont.isEmbedded()) {
pageFont.setEmbedded(true);
}
}
}
document.save(outputFile.toString());
}
}
Menyematkan font saat membuat PDF baru
Contoh ini membuat PDF baru dan menetapkan font yang disematkan ke konten teks sejak awal.
- Buat PDF baru
Documentdan tambahkan aPage. - Buat yang diperlukan
TextFragment,TextSegment, danTextState. - Selesaikan
Fonttarget dari repositori dan tandai sebagai tersemat. - Tambahkan konten teks ke halaman dan simpan dokumen output.
public static void embeddedFontsInNewDocument(Path outputFile) {
try (Document document = new Document()) {
try (Page page = document.getPages().add()) {
TextFragment fragment = new TextFragment("");
TextSegment segment = new TextSegment(" This is a sample text using Custom font.");
TextState textState = new TextState();
Font font = FontRepository.findFont("Arial");
font.setEmbedded(true);
textState.setFont(font);
segment.setTextState(textState);
fragment.getSegments().add(segment);
page.getParagraphs().add(fragment);
}
document.save(outputFile.toString());
}
}
Menetapkan font default untuk output PDF
Gunakan pola ini ketika dokumen yang disimpan harus kembali ke font tertentu selama pembuatan output.
- Buka PDF sumber
Document. - Buat
PdfSaveOptionsdan tetapkan nama font default. - Simpan dokumen dengan opsi penyimpanan yang dikonfigurasi.
public static void setDefaultFont(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.setDefaultFontName("Arial");
document.save(outputFile.toString(), saveOptions);
}
}
Mendapatkan semua font yang digunakan dalam PDF
Contoh ini menampilkan semua font yang terdeteksi dalam dokumen sehingga Anda dapat memeriksa penggunaan font sebelum mengekspor atau memperbarui file.
- Buka PDF sumber
Document. - Enumerasikan font yang dikembalikan oleh utilitas font dokumen.
- Keluarkan nama masing-masing yang terdeteksi
Font.
public static void getAllFonts(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Font font : document.getFontUtilities().getAllFonts()) {
System.out.println(font.getFontName());
}
}
}
Meningkatkan penyematan font dengan melakukan subset font
Gunakan pendekatan ini ketika Anda ingin mengurangi beban font sambil mempertahankan data font yang disematkan tetap selaras dengan penggunaan dokumen.
- Buka PDF sumber
Document. - Jalankan subsetting font melalui utilitas font dokumen dengan yang diperlukan
FontSubsetStrategynilai. - Simpan dokumen yang dioptimalkan.
public static void improveFontsEmbedding(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetAllFonts);
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetEmbeddedFontsOnly);
document.save(outputFile.toString());
}
}
Mengatur faktor zoom saat membuka dokumen
Contoh ini mengonfigurasi tingkat zoom awal yang harus diterapkan saat PDF dibuka.
- Buka PDF sumber
Document. - Buat sebuah
GoToActiondengan sebuahXYZExplicitDestination. - Tetapkan tindakan sebagai tindakan pembukaan dokumen dan simpan hasilnya.
public static void setZoomFactor(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GoToAction action = new GoToAction(new XYZExplicitDestination(1, 0.0, 0.0, 0.5));
document.setOpenAction(action);
document.save(outputFile.toString());
}
}
Mendapatkan faktor zoom saat dokumen dibuka
Gunakan contoh ini untuk memeriksa apakah PDF sudah mendefinisikan tingkat zoom eksplisit untuk aksi buka-nya.
- Buka PDF sumber
Document. - Periksa apakah aksi buka adalah
GoToActiondengan sebuahXYZExplicitDestination. - Keluarkan nilai zoom yang dikonfigurasi atau laporkan bahwa tidak ada zoom yang disetel.
public static void getZoomFactor(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
if (document.getOpenAction() instanceof GoToAction action
&& action.getDestination() instanceof XYZExplicitDestination destination) {
System.out.println("Zoom: " + destination.getZoom());
} else {
System.out.println("Zoom: not set");
}
}
}