Konversi PDF ke format PDF/A
Aspose.PDF untuk C++ memungkinkan Anda untuk mengonversi file PDF ke file PDF yang sesuai dengan PDF/A. Sebelum melakukannya, file harus divalidasi. Topik ini menjelaskan caranya.
Konversi file menggunakan metode Convert dari kelas Document. Sebelum mengonversi PDF ke file yang sesuai dengan PDF/A, validasi PDF menggunakan metode Validasi. Hasil validasi disimpan dalam file XML dan kemudian hasil ini juga diteruskan ke metode Konversi. Anda juga dapat menentukan tindakan untuk elemen-elemen yang tidak dapat dikonversi menggunakan enumerasi ConvertErrorAction.
Konversi file PDF ke PDF/A-1b
Cuplikan kode berikut menunjukkan cara mengonversi file PDF ke PDF yang sesuai dengan PDF/A-1b.
void ConverttoPDFA_1b()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama path
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file output
String outfilename("PDFToPDFA_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Konversi ke dokumen yang sesuai dengan PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_1B, ConvertErrorAction::Delete);
// Simpan dokumen keluaran
document->Save(_dataDir + outfilename);
std::clog << __func__ << ": Selesai" << std::endl;
}
Untuk melakukan validasi saja, gunakan baris kode berikut:
void ConverttoPDFA_1b_Validation()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama jalur
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Konversi ke dokumen yang sesuai dengan PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Validate(_dataDir + logfilename, PdfFormat::PDF_A_1B);
std::clog << __func__ << ": Selesai" << std::endl;
}
Mengonversi file PDF ke PDF/A-3b
Aspose.PDF untuk C++ juga mendukung fitur untuk mengonversi file PDF ke format PDF/A-3b.
void ConverttoPDFA_3b()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama jalur
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file input
String outfilename("PDFToPDFA3b_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Konversi ke dokumen yang sesuai dengan PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_3B, ConvertErrorAction::Delete);
// Simpan dokumen keluaran
document->Save(_dataDir + outfilename);
std::clog << __func__ << ": Selesai" << std::endl;
}
Mengkonversi file PDF ke PDF/A-2u
Aspose.PDF untuk C++ juga mendukung fitur untuk mengkonversi file PDF ke format PDF/A-2u.
void ConverttoPDFA_2u()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama path
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file output
String outfilename("PDFToPDFA3b_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Konversi ke dokumen yang sesuai dengan PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_2U, ConvertErrorAction::Delete);
// Simpan dokumen output
document->Save(_dataDir + outfilename);
std::clog << __func__ << ": Selesai" << std::endl;
}
Mengkonversi file PDF ke PDF/A-3u
Aspose.PDF untuk C++ juga mendukung fitur untuk mengkonversi file PDF ke format PDF/A-3u.
void ConverttoPDFA_3u()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama path
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file output
String outfilename("PDFToPDFA3b_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Konversi ke dokumen sesuai PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_2U, ConvertErrorAction::Delete);
// Simpan dokumen output
document->Save(_dataDir + outfilename);
std::clog << __func__ << ": Selesai" << std::endl;
}
Tambahkan Lampiran ke file PDF/A
Jika Anda memiliki kebutuhan untuk melampirkan file ke format kepatuhan PDF/A, maka kami merekomendasikan menggunakan nilai PDF_A_3A dari enumerasi Aspose.PDF.PdfFormat.
PDF/A_3a adalah format yang menyediakan fitur untuk melampirkan format file apapun sebagai lampiran ke file sesuai PDF/A.
void ConverttoPDFA_AddAttachment()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama jalur
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file output
String outfilename("PDFToPDFA3b_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
// Siapkan file baru untuk ditambahkan sebagai lampiran
auto fileSpecification = MakeObject<FileSpecification>(_dataDir + String("aspose-logo.jpg"), String("File Gambar Besar"));
// Tambahkan lampiran ke koleksi lampiran dokumen
document->get_EmbeddedFiles()->Add(fileSpecification);
// Konversi ke dokumen sesuai PDF/A
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_3A, ConvertErrorAction::Delete);
// Simpan dokumen output
document->Save(_dataDir + outfilename);
std::clog << __func__ << ": Selesai" << std::endl;
}
Gantikan font yang hilang dengan font alternatif
Sesuai standar PDFA, font harus disematkan dalam dokumen PDFA. Namun, jika font tidak disematkan dalam dokumen sumber atau tidak ada di mesin maka PDFA gagal validasi. Dalam hal ini, kami memiliki persyaratan untuk mengganti font yang hilang dengan beberapa font alternatif dari mesin. Kita dapat menggantikan font yang hilang menggunakan metode SimpleFontSubsituation seperti berikut selama konversi PDF ke PDFA.
void ConverttoPDFA_ReplaceFont()
{
std::clog << __func__ << ": Mulai" << std::endl;
// String untuk nama jalur
String _dataDir("C:\\Samples\\Conversion\\");
// String untuk nama file input
String infilename("sample.pdf");
// String untuk nama file log
String logfilename("log.xml");
// String untuk nama file input
String outfilename("PDFToPDFA3b_out.pdf");
// Buka dokumen
auto document = new Document(_dataDir + infilename);
System::SharedPtr<Aspose::Pdf::Text::Font> originalFont;
try
{
originalFont = FontRepository::FindFont(String("AgencyFB"));
}
catch (Exception)
{
// Font tidak ada di mesin tujuan
auto substitutions = FontRepository::get_Substitutions();
auto substitution = MakeObject<SimpleFontSubstitution>(String("AgencyFB"), String("Helvetica"));
substitutions->Add(substitution);
}
// Konversi ke dokumen yang sesuai PDF/A
try {
// Selama proses konversi, validasi juga dilakukan
document->Convert(_dataDir + logfilename, PdfFormat::PDF_A_1B, ConvertErrorAction::Delete);
// Simpan dokumen keluaran
document->Save(_dataDir + outfilename);
}
catch (Exception ex) {
std::cerr << ex->get_Message();
}
std::clog << __func__ << ": Selesai" << std::endl;
}
Cobalah mengonversi PDF ke PDF/A secara online
Aspose.PDF untuk C++ menghadirkan aplikasi online gratis “PDF ke PDF/A-1A”, di mana Anda dapat mencoba menyelidiki fungsionalitas dan kualitasnya.