Я пытаюсь установить некоторые атрибуты в HTML -> PDF-файле, используя EVOPDF.Настройка имени и автора документа PDF с помощью EVOPDF в файле, совместимом с PDF/A-1b
Кажется довольно простым установить свойства PdfDocumentInfo. Как указано в документации: http://www.evopdf.com/help/azure-html-to-pdf/html/T_EvoPdf_HtmlToPdfClient_PdfDocumentInfo.htm
Однако Adobe Acrobat Reader показывает пустые поля при просмотре File-> Properties. И редактор Hex не находит ни одной из данных.
Я попробовал решение «EvoHtmlToPdfDemo_VS2013» v6.4, которое я скачал здесь http://www.evopdf.com/download.aspx, но PdfDocumentInfo не найден во всем решении. Таким образом, нет демонстрационного кода, чтобы показать, как должны быть установлены свойства документа.
Смотрите мой код ниже
var converter = new HtmlToPdfConverter();
converter.ConversionDelay = 0;
converter.ClipHtmlView = false;
var paperSize = PaperSizeToSizeF(pPaperSize);
var pdfPageOrientation = (pIsLandscape) ? PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;
converter.PdfDocumentOptions.PdfPageOrientation = pdfPageOrientation;
converter.PdfDocumentOptions.PdfStandardSubset = PdfStandardSubset.Pdf_A_1b;
//IMPORTANT FOR COMPLIANCE
converter.PdfDocumentInfo.AuthorName = "Mike de Klerk";
converter.PdfDocumentInfo.Title = "PDF/A-1b Test";
converter.PdfDocumentInfo.Subject = "Testing generation of PDF/A-1b compliant file by EVOPDF library.";
converter.PdfDocumentInfo.Keywords = "HTML, PDF, Converter, PDF/A-1b. compliance";
converter.PdfDocumentInfo.CreatedDate = DateTime.Now;
EDIT:
При использовании EvoPdf.Document
объекта я могу получить это сделать. Но я не могу сделать это, используя объект EvoPdf.HtmlToPdfConverter
. Я предпочитаю использовать последний объект, потому что большая часть документации относится к HtmlToPdfConverter
. См. Код ниже для использования объекта EvoPdf.Document
.
// Create the PDF document where to add the HTML documents
var pdfDocument = new Document();
// Set license key received after purchase to use the converter in licensed mode
// Leave it not set to use the converter in demo mode
pdfDocument.LicenseKey = LicenseKey;
pdfDocument.DocumentInformation.Author = "Mike de Klerk";
pdfDocument.DocumentInformation.Title = "PDF/A-1b Test";
pdfDocument.DocumentInformation.Subject = "Testing generation of PDF/A-1b compliant file by EVOPDF library.";
pdfDocument.DocumentInformation.Keywords = "HTML, PDF, Converter, PDF/A-1b. compliance";
pdfDocument.DocumentInformation.CreationDate = DateTime.Now;
EDIT 2:
Существует HtmlToPdfConverter.PdfDocumentOptions.DocumentObject.DocumentInformation
объект. Но DocumentObject
имеет значение null перед преобразованием. В документации сказано
ссылка на внутренний объект Document инициализирован преобразователем при преобразовании
DocumentObject
действительно существует после преобразования, и я могу подтвердить, что DocumentInformation
свойства не установлены после преобразования.
EDIT 3:
установка также DocumentInformation
в пре/пост преобразования, кажется, события не получить его работу.
converter.PrepareRenderPdfPageEvent += (eventParams) =>
{
converter.PdfDocumentOptions.DocumentObject.DocumentInformation.Author = "Mike de Klerk";
converter.PdfDocumentOptions.DocumentObject.DocumentInformation.Title = "PDF/A-1b Test";
converter.PdfDocumentOptions.DocumentObject.DocumentInformation.Subject = "Testing generation of PDF/A-1b compliant file by EVOPDF library.";
converter.PdfDocumentOptions.DocumentObject.DocumentInformation.Keywords = "HTML, PDF, Converter, PDF/A-1b. compliance";
converter.PdfDocumentOptions.DocumentObject.DocumentInformation.CreationDate = DateTime.Now;
};
converter.AfterRenderPdfPageEvent += (eventParams) =>
{
eventParams.Page.Document.DocumentInformation.Author = "Mike de Klerk";
eventParams.Page.Document.DocumentInformation.Title = "PDF/A-1b Test";
eventParams.Page.Document.DocumentInformation.Subject = "Testing generation of PDF/A-1b compliant file by EVOPDF library.";
eventParams.Page.Document.DocumentInformation.Keywords = "HTML, PDF, Converter, PDF/A-1b. compliance";
eventParams.Page.Document.DocumentInformation.CreationDate = DateTime.Now;
};
converter.ConvertHtmlFileToStream(pContentHtmlFile, pOutputStream);
РЕДАКТИРОВАТЬ 4:
даже не работает при преобразовании в Document
объекта во-первых, установка DocumentInformation
тогда, и записать Document
в выходной поток. Я чувствую, что я бегу из возможных способов решения здесь ...
var documentObject = converter.ConvertHtmlFileToPdfDocumentObject(pContentHtmlFile);
documentObject.DocumentInformation.Author = "Mike de Klerk";
documentObject.DocumentInformation.Title = "PDF/A-1b Test";
documentObject.DocumentInformation.Subject = "Testing generation of PDF/A-1b compliant file by EVOPDF library.";
documentObject.DocumentInformation.Keywords = "HTML, PDF, Converter, PDF/A-1b. compliance";
documentObject.DocumentInformation.CreationDate = DateTime.Now;
documentObject.Save(pOutputStream);
EDIT 5:
Я предположил, что, когда один делает documentObject.DocumentInformation.Author = "Value";
, и она имеет сеттера, он на самом деле множество. но это не так. Следовательно, не имеет значения, где я пытаюсь установить эти значения. Их просто не помнят. Это должно быть ошибка. Почему существует даже класс EvoPdf.DocumentInfo
и класс EvoPdf.PdfDocumentInfo
? Один использует AuthorName
, а другой Author
.И больше этих различий.
@EvoPdfHelpDesk Помогите мне пожалуйста :) –