Tentukan Opsi Rendering Saat Mengonversi ke PDF

Format PDF merupakan format halaman tetap yang sangat populer di kalangan pengguna dan banyak didukung oleh berbagai aplikasi, karena dokumen PDF terlihat sama di perangkat apa pun. Oleh karena itu, mengonversi ke PDF adalah fitur penting Aspose.Words.

PDF adalah format yang kompleks. Ada beberapa tahapan perhitungan yang diperlukan dalam proses konversi suatu dokumen ke PDF, termasuk perhitungan layout. Karena tahapan ini mencakup perhitungan yang rumit, maka memakan waktu. Selain itu, format PDF itu sendiri agak rumit. Ini memiliki struktur file tertentu, model grafik, dan penyematan font. Selain itu, ia menampilkan beberapa fungsi keluaran yang kompleks, seperti tag struktur dokumen, enkripsi, tanda tangan digital, dan formulir yang dapat diedit.

Mesin tata letak Aspose.Words meniru cara kerja mesin tata letak halaman Microsoft Word. Oleh karena itu, Aspose.Words membuat dokumen keluaran PDF terlihat sedekat mungkin dengan apa yang Anda lihat di Microsoft Word. Terkadang perlu menentukan opsi tambahan, yang dapat memengaruhi hasil penyimpanan dokumen ke format PDF. Pilihan ini dapat ditentukan dengan menggunakan kelas PdfSaveOptions, yang berisi properti yang menentukan bagaimana keluaran PDF akan ditampilkan.

Beberapa contoh penggunaan PdfSaveOptions disediakan di bawah ini.

Membuat Dokumen PDF dengan Formulir yang Dapat Diisi

Dimungkinkan juga untuk mengekspor formulir yang dapat diisi dari dokumen Microsoft Word ke PDF keluaran, yang memiliki formulir yang dapat diisi dan bukan teks biasa. Gunakan properti PreserveFormFields untuk menyimpan dokumen sebagai PDF dengan formulir yang dapat diisi.

Perhatikan bahwa berbeda dengan Microsoft Word, format PDF memiliki sejumlah opsi terbatas untuk formulir yang dapat diedit, seperti kotak teks, kotak kombo, dan kotak centang. Microsoft Word memiliki lebih banyak jenis formulir, misalnya pemilih tanggal kalender. Secara umum, tidak mungkin meniru sepenuhnya perilaku Microsoft Word di PDF. Oleh karena itu, dalam beberapa kasus kompleks, keluaran PDF mungkin berbeda dari apa yang Anda lihat di Microsoft Word.

Contoh kode di bawah ini menunjukkan cara menyimpan dokumen sebagai PDF dengan formulir yang dapat diisi dengan kompresi dan kualitas Jpeg tertentu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document(MyDir + "Rendering.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions
{
ImageCompression = PdfImageCompression.Jpeg, PreserveFormFields = true
};
doc.Save(ArtifactsDir + "WorkingWithPdfSaveOptions.PdfImageCompression.pdf", saveOptions);
PdfSaveOptions saveOptions17 = new PdfSaveOptions
{
Compliance = PdfCompliance.Pdf17,
ImageCompression = PdfImageCompression.Jpeg,
JpegQuality = 100, // Use JPEG compression at 50% quality to reduce file size.
ImageColorSpaceExportMode = PdfImageColorSpaceExportMode.SimpleCmyk
};
doc.Save(ArtifactsDir + "WorkingWithPdfSaveOptions.PdfImageCompression_17.pdf", saveOptions17);

Mengekspor Struktur Dokumen dan Properti Kustom

Properti [https://reference.aspose.com/words/net/aspose.words. saving/pdfsaveoptions/properties/exportdocumentstructure) memungkinkan Anda mengekspor struktur dokumen ke keluaran PDF.

Fasilitas struktur logis PDF menyediakan mekanisme untuk memasukkan informasi, mengenai struktur konten dokumen, ke dalam file PDF. Aspose.Words menyimpan informasi tentang struktur dari dokumen Microsoft Word, seperti paragraf, daftar, tabel, catatan kaki/catatan akhir, dll.

Contoh berikut menunjukkan cara menyimpan dokumen ke format PDF, sambil mempertahankan struktur dokumen:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Open a document
Document doc = new Document(dataDir + "Paragraphs.docx");
// Create a PdfSaveOptions object and configure it to preserve the logical structure that's in the input document
// The file size will be increased and the structure will be visible in the "Content" navigation pane
// of Adobe Acrobat Pro, while editing the .pdf
PdfSaveOptions options = new PdfSaveOptions();
options.ExportDocumentStructure = true;
doc.Save(dataDir + "PdfSaveOptions.ExportDocumentStructure.pdf", options);

Aspose.Words juga memungkinkan Anda mengekspor properti kustom dokumen ke PDF, yang ditunjukkan oleh contoh berikut:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Open a document
Document doc = new Document();
// Add a custom document property that doesn't use the name of some built in properties
doc.CustomDocumentProperties.Add("Company", "My value");
// Configure the PdfSaveOptions like this will display the properties
// in the "Document Properties" menu of Adobe Acrobat Pro
PdfSaveOptions options = new PdfSaveOptions();
options.CustomPropertiesExport = PdfCustomPropertiesExport.Standard;
doc.Save(dataDir + "PdfSaveOptions.CustomPropertiesExport.pdf", options);

Mengekspor Garis Besar dari Penanda dan Judul dalam Output PDF

Jika Anda ingin mengekspor bookmark sebagai kerangka dalam keluaran PDF, Anda dapat menggunakan properti DefaultBookmarksOutlineLevel. Properti ini menentukan tingkat default dalam kerangka dokumen, di mana bookmark Microsoft Word ditampilkan. Jika dokumen berisi bookmark di header/footer dokumen, Anda dapat mengatur properti HeaderFooterBookmarksExportMode ke First atau All untuk menentukan cara mengekspornya dalam PDF keluaran. Bookmark di header/footer tidak diekspor bila nilai HeaderFooterBookmarksExportMode adalah None.

Contoh kode di bawah ini menunjukkan cara mengekspor bookmark dari header/footer pertama suatu bagian:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// The path to the documents directory.
Document doc = new Document(dataDir + "TestFile.docx");
PdfSaveOptions options = new PdfSaveOptions();
options.OutlineOptions.DefaultBookmarksOutlineLevel = 1;
options.HeaderFooterBookmarksExportMode = HeaderFooterBookmarksExportMode.First;
dataDir = dataDir + "ExportHeaderFooterBookmarks_out.pdf";
doc.Save(dataDir, options);

Output PDF dari contoh ini ditunjukkan di bawah ini:

specify-rendering-options-when-converting-to-pdf_1

Ketika HeaderFooterBookmarksExportMode diatur ke First dan dokumen memiliki header/footer genap dan ganjil atau header/footer halaman pertama yang berbeda, bookmark diekspor untuk header/footer unik pertama di suatu bagian.

Anda juga dapat mengekspor judul dalam PDF keluaran, menggunakan properti HeadingsOutlineLevels. Properti ini menentukan berapa banyak tingkat judul yang disertakan dalam kerangka dokumen.

Contoh kode di bawah ini menunjukkan cara mengekspor judul dengan tiga level:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Open a document
Document doc = new Document(dataDir + "Rendering.doc");
PdfSaveOptions options = new PdfSaveOptions();
options.OutlineOptions.HeadingsOutlineLevels = 3;
options.OutlineOptions.ExpandedOutlineLevels = 1;
doc.Save(dataDir + "Rendering.SaveToPdfWithOutline.pdf", options);

PDF keluaran dari contoh ini digambarkan di bawah ini:

specify-rendering-options-when-converting-to-pdf_2

Downsampling Gambar untuk Mengurangi Ukuran Dokumen

Aspose.Words menyediakan kemampuan untuk melakukan downsample gambar untuk mengurangi ukuran PDF keluaran, menggunakan properti DownsampleOptions. Downsampling diaktifkan secara default di properti DownsampleImages.

Perhatikan bahwa dimungkinkan juga untuk menetapkan resolusi tertentu di properti Resolution, atau ambang resolusi di properti ResolutionThreshold. Dalam kasus kedua, jika resolusi gambar kurang dari nilai ambang batas, maka downsampling tidak akan diterapkan.

Contoh kode di bawah ini menampilkan cara mengubah resolusi gambar dalam dokumen PDF keluaran:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Open a document that contains images
Document doc = new Document(dataDir + "Rendering.doc");
// If we want to convert the document to .pdf, we can use a SaveOptions implementation to customize the saving process
PdfSaveOptions options = new PdfSaveOptions();
// We can set the output resolution to a different value
// The first two images in the input document will be affected by this
options.DownsampleOptions.Resolution = 36;
// We can set a minimum threshold for downsampling
// This value will prevent the second image in the input document from being downsampled
options.DownsampleOptions.ResolutionThreshold = 128;
doc.Save(dataDir + "PdfSaveOptions.DownsampleOptions.pdf", options);

Resolusi dihitung berdasarkan ukuran gambar sebenarnya pada halaman.

Menanamkan Font dalam Format Adobe PDF

Aspose.Words juga memungkinkan Anda mengontrol bagaimana font disematkan ke dalam dokumen PDF yang dihasilkan. Font harus disematkan ke dalam dokumen Adobe PDF apa pun untuk memastikan bahwa dokumen tersebut dapat dirender dengan benar di mesin mana pun (lihat detail lebih lanjut tentang rendering font di bagian Menggunakan Font TrueType). Secara default, Aspose.Words menyematkan subset font yang digunakan dalam dokumen ke dalam PDF yang dihasilkan. Dalam hal ini, hanya glyph (karakter) yang digunakan dalam dokumen yang disimpan ke PDF.

Kapan Menggunakan Font Penuh dan Kapan Menggunakan Subset

Ada cara untuk menentukan opsi bagi Aspose.Words untuk menyematkan font lengkap. Rincian lebih lanjut, beserta beberapa kelebihan dan kekurangan masing-masing pengaturan dijelaskan pada tabel di bawah ini.

Mode Sematkan Font Keuntungan Kekurangan
Full Berguna ketika Anda ingin mengedit PDF yang dihasilkan nanti dengan menambahkan atau memodifikasi teks. Semua font disertakan, maka semua glyph ada. Karena beberapa font berukuran besar (beberapa megabita), menyematkannya tanpa membuat subset dapat menghasilkan file output yang besar.
Subset Subsetting berguna jika Anda ingin memperkecil ukuran file keluaran.

Pengguna tidak dapat sepenuhnya menambahkan atau mengedit teks menggunakan font subset dalam dokumen PDF keluaran. Ini karena tidak semua glyph font tersebut ada.

Jika beberapa PDF disimpan dengan font subset dan dirangkai bersama, maka dokumen PDF gabungan mungkin memiliki font yang berisi banyak subset yang tidak diperlukan.

|

Menyematkan Font Lengkap dalam PDF

Properti EmbedFullFonts memungkinkan Anda menentukan bagaimana Aspose.Words menyematkan font ke dalam dokumen PDF keluaran.

  • Untuk menyematkan font lengkap ke dalam dokumen PDF keluaran, atur EmbedFullFonts ke true
  • Untuk mengelompokkan font saat menyimpan ke PDF, atur EmbedFullFonts ke false

Contoh berikut menunjukkan cara menyematkan font lengkap di dokumen PDF keluaran:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Load the document to render.
Document doc = new Document(dataDir + "Rendering.doc");
// Aspose.Words embeds full fonts by default when EmbedFullFonts is set to true. The property below can be changed
// Each time a document is rendered.
PdfSaveOptions options = new PdfSaveOptions();
options.EmbedFullFonts = true;
string outPath = dataDir + "Rendering.EmbedFullFonts_out.pdf";
// The output PDF will be embedded with all fonts found in the document.
doc.Save(outPath, options);

Contoh berikut menunjukkan cara mengatur Aspose.Words ke subset font di output PDF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Load the document to render.
Document doc = new Document(dataDir + "Rendering.doc");
// To subset fonts in the output PDF document, simply create new PdfSaveOptions and set EmbedFullFonts to false.
PdfSaveOptions options = new PdfSaveOptions();
options.EmbedFullFonts = false;
dataDir = dataDir + "Rendering.SubsetFonts_out.pdf";
// The output PDF will contain subsets of the fonts in the document. Only the glyphs used
// In the document are included in the PDF fonts.
doc.Save(dataDir, options);

Cara Mengontrol Penyematan Font Inti dan Font Standar Windows

Font inti dan font Standar Windows adalah kumpulan font “standar”, yang biasanya ada di mesin target atau disediakan oleh pembaca dokumen, oleh karena itu tidak perlu disematkan dalam output PDF. Dengan tidak menyematkan font ini, Anda dapat memperkecil ukuran dokumen PDF yang dirender namun tetap menjaga portabilitas.

Aspose.Words menyediakan opsi untuk memilih bagaimana font diekspor ke PDF. Anda dapat memilih untuk menyematkan font inti dan font standar ke dalam PDF keluaran atau melewatkan penyematannya dan menggunakan font PDF inti standar atau font sistem pada mesin target. Menggunakan salah satu opsi ini biasanya menghasilkan pengurangan ukuran file yang signifikan untuk dokumen PDF yang dihasilkan oleh Aspose.Words.

  • Karena opsi ini saling eksklusif, Anda sebaiknya memilih satu saja dalam satu waktu.
  • Saat menyimpan dengan kepatuhan PDF/A-1, semua font yang digunakan harus disematkan dengan dokumen PDF. Saat menyimpan dengan kepatuhan ini, properti UseCoreFonts harus disetel ke false dan properti FontEmbeddingMode harus disetel ke EmbedAll.

Menyematkan Font Inti

Opsi untuk menyematkan font Inti dapat diaktifkan atau dinonaktifkan dengan menggunakan properti UseCoreFonts. Jika diatur ke true, font “True Type” terpopuler berikut ini (font Basis 14) tidak disematkan dalam dokumen PDF keluaran:

  • Arial
  • Times New Roman
  • Courier New
  • Symbol

Font ini diganti dengan font inti Tipe 1 yang sesuai, yang disediakan oleh pembaca saat PDF dibuka.

Contoh yang diberikan di bawah ini menunjukkan cara mengatur Aspose.Words untuk menghindari penyematan font inti dan membiarkan pembaca menggantinya dengan font PDF Tipe 1:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting();
Document doc = new Document(dataDir + "Rendering.doc");
// To disable embedding of core fonts and subsuite PDF type 1 fonts set UseCoreFonts to true.
PdfSaveOptions options = new PdfSaveOptions();
options.UseCoreFonts = true;
string outPath = dataDir + "Rendering.DisableEmbedWindowsFonts_out.pdf";
// The output PDF will not be embedded with core fonts such as Arial, Times New Roman etc.
doc.Save(outPath);

Karena penampil PDF menyediakan font inti pada platform apa pun yang didukung, opsi ini juga berguna ketika diperlukan portabilitas dokumen yang lebih besar. Namun, font inti mungkin terlihat berbeda dari font sistem.

Menanamkan Font Sistem

Opsi ini dapat diaktifkan atau dinonaktifkan dengan menggunakan properti FontEmbeddingMode. Ketika properti ini diatur ke EmbedNonstandard, font jenis true “Arial” dan “Times New Roman” tidak disematkan ke dalam dokumen PDF. Dalam hal ini, penampil klien bergantung pada font yang diinstal pada sistem operasi klien. Ketika properti FontEmbeddingMode diatur ke EmbedNone, Aspose.Words tidak menyematkan font apa pun.

Contoh di bawah ini menunjukkan cara mengatur Aspose.Words agar tidak menyematkan font Arial dan Times New Roman ke dalam dokumen PDF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Load the document to render.
Document doc = new Document(dataDir + "Rendering.doc");
// To disable embedding standard windows font use the PdfSaveOptions and set the EmbedStandardWindowsFonts property to false.
PdfSaveOptions options = new PdfSaveOptions();
options.FontEmbeddingMode = PdfFontEmbeddingMode.EmbedNone;
// The output PDF will be saved without embedding standard windows fonts.
doc.Save(dataDir + "Rendering.DisableEmbedWindowsFonts.pdf");

Mode ini paling berguna ketika Anda ingin melihat dokumen Anda pada platform yang sama, menjaga tampilan font yang sama persis di PDF keluaran.