- Вопрос или проблема
- Когда я генерирую PDF из iText7 Pdf.Net, я сначала генерирую файл pdf демо01, а затем второй файл демо02 в одном и том же приложении, изменяя raw_header (50 символов) в метаданных обоих файлов pdf.
- raw_header (50 символов) не должен изменяться при генерации каждого файла pdf, что нужно сделать для этого???
- Ответ или решение
- Заключение
Вопрос или проблема
демо01
‘”7″: {
“raw_header”: {
“editable”: false,
“key_formatted”: “raw_header”,
“value”: “25 50 44 46 2D 31 2E 34 0A 25 E2 E3 CF D3 0A 35 20 30 20 6F 62 6A 0A 3C 3C 2F 46 69 6C 74 65 72 2F 46 6C 61 74 65 44 65 63 6F 64 65 2F 4C 65 6E 67 74 68 20 32 36 38 32 3E 3E 73 74 72 65 61 6D 0A 78 9C B5 9B DB 72 DB 38 12 86 EF F5 14 B8 D9 AA 4C 95 42 E2 4C D0 77 3A F8 A0 72 24 65 24 39 5B D9 4A 55 4A B1 15 47 3B 91 94 D8 4A 65 E7 ED 17 24 D1 04 98 B1 9A 22 39 93 B9 09 C6 F8 D0 C0”
}’
демо02
‘”7″: {
“raw_header”: {
“editable”: false,
“key_formatted”: “raw_header”,
“value”: “25 50 44 46 2D 31 2E 34 0A 25 E2 E3 CF D3 0A 35 20 30 20 6F 62 6A 0A 3C 3C 2F 46 69 6C 74 65 72 2F 46 6C 61 74 65 44 65 63 6F 64 65 2F 4C 65 6E 67 74 68 20 32 37 37 31 3E 3E 73 74 72 65 61 6D 0A 78 9C B5 9B DB 6E DB 3A 16 86 EF F3 14 BC 19 A0 1B 70 25 1E 75 C8 9D 0F 39 18 A9 ED 6C DB E9 A0 83 02 85 6A AB 89 A7 B1 DD DA CE CE F4 ED 87 92 B8 44 AA 13 2F 59 F2 9E F4 A6 4C F8 71 91 3F”
}’
Когда я генерирую PDF из iText7 Pdf.Net, я сначала генерирую файл pdf демо01, а затем второй файл демо02 в одном и том же приложении, изменяя raw_header (50 символов) в метаданных обоих файлов pdf.
raw_header (50 символов) не должен изменяться при генерации каждого файла pdf, что нужно сделать для этого???
Ответ или решение
Для решения проблемы, связанной с генерацией PDF файлов с использованием iText7 Pdf .NET, и предотвращения изменения поля raw_header
в метаданных, необходимо использовать единый экземпляр, который можно переиспользовать для создания PDF-файлов.
Вот шаги, которые помогут вам сохранить значение raw_header
, даже если вы создаете несколько PDF-файлов в одном приложении:
-
Создание общего объекта метаданных: Вместо того чтобы каждый раз устанавливать метаданные заново для каждого PDF, создайте объект, который можно передать между вызовами создания PDF.
-
Использование шаблонов: Вы можете создать шаблон PDF с уже установленными метаданными и использовать его как основу для создания новых PDF. Это позволит избежать изменения
raw_header
, так как он уже будет предустановлен. - Настройка метаданных перед созданием PDF: Убедитесь, что вы устанавливаете метаданные один раз в начале процесса, а затем используете их для всех PDF файлов, которые вы будете генерировать.
Пример кода на C#, демонстрирующий данный подход:
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Extgstate;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Canvas.Draw;
public class PdfGenerator
{
private string sharedRawHeader = "Значение для raw_header"; // Установите ваше фиксированное значение здесь
public void GeneratePdf(string filePath, string content)
{
PdfWriter writer = new PdfWriter(filePath);
PdfDocument pdfDocument = new PdfDocument(writer);
// Установите метаданные один раз для всех PDF документов
pdfDocument.GetDocumentInfo().SetMoreInfo("raw_header", sharedRawHeader);
// Добавление страницы и содержание
pdfDocument.AddNewPage();
PdfCanvas canvas = new PdfCanvas(pdfDocument.GetPage(1));
canvas.BeginText();
canvas.SetFontAndSize(iText.Kernel.Font.PdfFontFactory.CreateFont(), 12);
canvas.ShowText(content);
canvas.EndText();
// Закрытие документа
pdfDocument.Close();
}
}
// Пример использования
class Program
{
static void Main(string[] args)
{
PdfGenerator pdfGenerator = new PdfGenerator();
pdfGenerator.GeneratePdf("demo01.pdf", "Содержимое первого PDF");
pdfGenerator.GeneratePdf("demo02.pdf", "Содержимое второго PDF");
}
}
Заключение
Следуя вышеуказанным шагам, вы сможете сохранить значение raw_header
неизменным при генерации нескольких PDF файлов. Важно иметь единый объект метаданных и перекрывать его значения только при необходимости, что обеспечит консистентность данных в ваших PDF документах.