Pemformatan Teks di dalam PDF menggunakan C++
Cara menambahkan Indentasi Baris ke PDF
Untuk menambahkan indentasi baris ke PDF Aspose.PDF untuk C++ menggunakan properti SubsequentLinesIndent dalam kelas TextFormattingOptions dan juga membantu koleksi TextFragment dan Paragraphs.
Silakan gunakan potongan kode berikut untuk menggunakan properti:
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;
void AddLineIndent() {
String _dataDir("C:\\Samples\\");
// String untuk nama file keluaran
String outputFileName("SubsequentIndent_out.pdf");
// Buat objek dokumen baru
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto text = MakeObject<TextFragment>("Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas. Seekor rubah coklat cepat melompati anjing malas.");
// Inisialisasi TextFormattingOptions untuk fragmen teks dan tentukan nilai SubsequentLinesIndent
text->get_TextState()->set_FormattingOptions(MakeObject<Aspose::Pdf::Text::TextFormattingOptions>());
text->get_TextState()->get_FormattingOptions()->set_SubsequentLinesIndent(20);
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Baris2");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Baris3");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Baris4");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"Baris5");
page->get_Paragraphs()->Add(text);
document->Save(_dataDir + outputFileName);
}
Cara Menambahkan Batas Teks
Cuplikan kode berikut menunjukkan, bagaimana menambahkan batas ke teks menggunakan TextBuilder dan mengatur properti DrawTextRectangleBorder dari TextState
void AddTextBorder() {
String _dataDir("C:\\Samples\\");
// String untuk nama file keluaran
String outputFileName("PDFWithTextBorder_out.pdf");
// Buat objek dokumen baru
auto document = MakeObject<Document>();
// Dapatkan halaman tertentu
auto page = document->get_Pages()->Add();
// Buat fragmen teks
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Atur properti teks
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Atur properti StrokingColor untuk menggambar batas (stroking) di sekitar teks
// persegi panjang
textFragment->get_TextState()->set_StrokingColor(Color::get_DarkRed());
// Atur nilai properti DrawTextRectangleBorder menjadi true
textFragment->get_TextState()->set_DrawTextRectangleBorder(true);
auto tb = MakeObject<TextBuilder>(page);
tb->AppendText(textFragment);
// Simpan dokumen
document->Save(_dataDir + outputFileName);
}
Cara Menambahkan Teks Garis Bawah
Cuplikan kode berikut menunjukkan cara menambahkan teks garis bawah saat membuat file PDF baru.
void AddUnderlineText() {
String _dataDir("C:\\Samples\\");
// String untuk nama file output
String outputFileName("AddUnderlineText_out.pdf");
// Buat objek dokumen baru
auto document = MakeObject<Document>();
// Dapatkan halaman tertentu
auto page = document->get_Pages()->Add();
// TextFragment dengan teks contoh
auto fragment = MakeObject<TextFragment>("Teks dengan dekorasi garis bawah");
// Atur font untuk TextFragment
fragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
fragment->get_TextState()->set_FontSize(10);
// Atur pemformatan teks sebagai Garis Bawah
fragment->get_TextState()->set_Underline(true);
// Tentukan posisi di mana TextFragment perlu ditempatkan
fragment->set_Position(MakeObject<Position>(10, 800));
auto tb = MakeObject<TextBuilder>(page);
// Tambahkan TextFragment ke file PDF
tb->AppendText(fragment);
// Simpan dokumen PDF yang dihasilkan.
document->Save(_dataDir + outputFileName);
}
Cara Menambahkan Batas di Sekitar Teks yang Ditambahkan
Anda memiliki kendali atas tampilan dan nuansa teks yang Anda tambahkan. Contoh di bawah ini menunjukkan cara menambahkan batas di sekitar sepotong teks yang Anda tambahkan dengan menggambar persegi panjang di sekitarnya. Cari tahu lebih lanjut tentang kelas PdfContentEditor.
void AddBorderAroundAddedText() {
String _dataDir("C:\\Samples\\");
// String untuk nama file input
String inputFileName("sample.pdf");
// String untuk nama file output
String outputFileName("AddingBorderAroundAddedText_out.pdf");
auto editor = MakeObject<Aspose::Pdf::Facades::PdfContentEditor>();
editor->BindPdf(_dataDir + inputFileName);
auto lineInfo = MakeObject<Aspose::Pdf::Facades::LineInfo>();
lineInfo->set_LineWidth(2);
lineInfo->set_VerticeCoordinate(MakeArray<float>({ 0, 0, 100, 100, 50, 100 }));
lineInfo->set_Visibility(true);
auto rect = MakeObject<System::Drawing::Rectangle>(0, 0, 0, 0);
editor->CreatePolygon(lineInfo, 1, System::Drawing::Rectangle(0, 0, 0, 0), String::Empty);
// Simpan dokumen PDF yang dihasilkan.
editor->Save(_dataDir + outputFileName);
}
Cara Menambahkan NewLine Feed
Untuk menambahkan teks dengan line feed, silakan gunakan TextFragment dengan TextParagraph.
Cuplikan kode berikut menunjukkan cara menambahkan NewLine feed dalam file PDF Anda:
void AddNewLineFeed() {
String _dataDir("C:\\Samples\\");
// String untuk nama file output
String outputFileName("AddNewLineFeed_out.pdf");
// Buat objek dokumen baru
auto document = MakeObject<Document>();
// Dapatkan halaman tertentu
auto page = document->get_Pages()->Add();
// Inisialisasi TextFragment baru dengan teks yang berisi penanda newline yang diperlukan
auto textFragment = MakeObject<TextFragment>("Nama Pemohon: \r\n Joe Smoe");
// Atur properti teks fragment jika perlu
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Buat objek TextParagraph
auto par = MakeObject<TextParagraph>();
// Tambahkan TextFragment baru ke paragraf
par->AppendLine(textFragment);
// Atur posisi paragraf
par->set_Position(MakeObject<Position>(100, 600));
// Buat objek TextBuilder
auto textBuilder = new TextBuilder(page);
// Tambahkan TextParagraph menggunakan TextBuilder
textBuilder->AppendParagraph(par);
// Simpan dokumen PDF yang dihasilkan.
document->Save(_dataDir + outputFileName);
}
Cara Menambahkan Teks Coret
Anda dapat menggunakan kelas TextState untuk mengatur pemformatan teks seperti Bold, Italic, Underline, dan juga, API telah menyediakan kemampuan untuk menandai pemformatan teks sebagai Coret.
Silakan coba gunakan potongan kode berikut untuk menambahkan TextFragment dengan pemformatan Coret.
void AddStrikeOutText() {
String _dataDir("C:\\Samples\\");
// String untuk nama file keluaran
String outputFileName("AddStrikeOutText_out.pdf");
// Buka dokumen
auto document = MakeObject<Document>();
// Dapatkan halaman tertentu
auto page = document->get_Pages()->Add();
// Buat fragmen teks
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Atur properti teks
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Atur properti Coret
textFragment->get_TextState()->set_StrikeOut(true);
// Tandai teks sebagai Bold
textFragment->get_TextState()->set_FontStyle(FontStyles::Bold);
// Buat objek TextBuilder
auto textBuilder = MakeObject<TextBuilder>(page);
// Tambahkan fragmen teks ke halaman PDF
textBuilder->AppendText(textFragment);
// Simpan dokumen PDF yang dihasilkan.
document->Save(_dataDir + outputFileName);
}
Terapkan Gradasi Bayangan pada Teks
Kelas Aspose.Pdf.Color telah ditingkatkan lebih lanjut dengan memperkenalkan properti baru dari PatternColorSpace, yang dapat digunakan untuk menentukan warna gradasi untuk teks. Properti baru ini menambahkan berbagai Gradasi Bayangan pada teks seperti Axial Shading, Radial (Type 3) Shading seperti yang ditunjukkan dalam cuplikan kode berikut:
void ApplyGradientShading() {
String _dataDir("C:\\Samples\\");
// String untuk nama file input
String inputFileName("sample.pdf");
// String untuk nama file output
String outputFileName("ApplyGradientShading_out.pdf");
// Buka dokumen
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>("always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientAxialShading>(Color::get_Red(), Color::get_Blue()));
// Buat warna baru dengan pola colorspace
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}
Untuk menerapkan Gradien Radial, Anda dapat mengatur properti ‘PatternColorSpace’ sama dengan ‘Aspose.Pdf.Drawing.GradientRadialShading(startingColor, endingColor)’ dalam cuplikan kode di atas.
Cara menyelaraskan teks ke konten mengambang
Aspose.PDF mendukung pengaturan penjajaran teks untuk konten di dalam elemen Floating Box. Properti penjajaran dari instance Aspose.Pdf.FloatingBox dapat digunakan untuk mencapai ini seperti yang ditunjukkan dalam contoh kode berikut.
void ApplyGradientShadingRadial() {
String _dataDir("C:\\Samples\\");
// String untuk nama file input
String inputFileName("sample.pdf");
// String untuk nama file output
String outputFileName("ApplyGradientShadingRadial_out.pdf");
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>(u"always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientRadialShading>(Color::get_Red(), Color::get_Blue()));
// Buat warna baru dengan ruang warna pola
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}