Как создать один HTML-файл из PDF с несколькими страницами, используя Winnovative PDF to HTML Converter
Я запрограммировал в VS 2015, WPF и C# приложение, преобразующее PDF-файл в HTML-файл. Пакет NuGet Winnovative.PdfToHtml кажется лучшим решением, и результаты выглядят неплохо. Но, к сожалению, когда я конвертирую файл PDF с более чем одной страницей, конвертер создает файл HTML для каждой страницы.
Есть ли возможность создать один файл HTML?
Вот код моего приложения, в котором данный PDF-файл преобразуется в HTML:
/// <summary>
/// Sources:
/// http://www.winnovative-software.com/pdf-to-html-converter.aspx
/// </summary>
private void WnvPdfToHtml()
{
if (tbxPdfFilePath.Text.Trim().Equals(String.Empty))
{
MessageBox.Show("Please choose a source PDF file", "Choose PDF file", MessageBoxButton.OK);
return;
}
// The source pdf-file
string pdfFileName = tbxPdfFilePath.Text.Trim();
// The name of the html-file
string htmlFileName = System.IO.Path.GetFileNameWithoutExtension(pdfFileName); // + ".html"; // Muss ohne Extension sein!
var pdfReader = new iTextSharp.text.pdf.PdfReader(pdfFileName);
int pdfPageCount = pdfReader.NumberOfPages;
int startPageNumber = 1;
int endPageNumber = pdfPageCount;
// create the converter object and set the user options
PdfToHtmlConverter pdfToHtmlConverter = new PdfToHtmlConverter();
pdfToHtmlConverter.LicenseKey = "UtzN3cnM3c3dy9PN3c7M08zP08TExMTdzQ==";
string outputDirectory = System.IO.Directory.GetCurrentDirectory();
Cursor = Cursors.Wait;
try
{
// convert PDF pages to HTML files in a directory
pdfToHtmlConverter.CreateIndexFile = true;
pdfToHtmlConverter.ConvertPdfPagesToHtmlFile(pdfFileName, startPageNumber, endPageNumber, outputDirectory, htmlFileName);
// uncomment the lines below to raise the PageConvertedEvent event when a PDF page is converted
// the pdfToHtmlConverter_PageConvertedEvent handler below will be executed for each converted PDF page
// Do not forget to uninstall the handler when is not needed anymore
pdfToHtmlConverter.PageConvertedEvent += pdfToHtmlConverter_PageConvertedEvent;
pdfToHtmlConverter.ConvertPdfPagesToHtmlInEvent(pdfFileName, startPageNumber, endPageNumber);
// uncomment the line below to convert PDF pages in memory to an array of PdfPageHtml objects
//PdfPageHtml[] pdfPageHtmls = pdfToHtmlConverter.ConvertPdfPagesToHtml(pdfFileName, startPageNumber, endPageNumber);
}
catch (Exception ex)
{
// The conversion failed
MessageBox.Show(String.Format("An error occurred. {0}", ex.Message), "Error");
return;
}
finally
{
Cursor = Cursors.Arrow;
}
try
{
System.Diagnostics.Process.Start(outputDirectory);
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Cannot open output folder. {0}", ex.Message));
return;
}
}
/// <summary>
/// The PageConvertedEvent event handler called after when a PDF page was converted to HTML
/// The event is raised when the ConvertPdfPagesToHtmlInEvent() method is used
/// </summary>
/// <param name="args">The handler argument containing the PDF page HTML and page number</param>
void pdfToHtmlConverter_PageConvertedEvent(PageConvertedEventArgs args)
{
// The source pdf-file
string pdfFileName = tbxPdfFilePath.Text.Trim();
// get the HTML document and page number from even handler argument
string pdfPageHtml = args.PdfPageHtml.Html;
int pageNumber = args.PdfPageHtml.PageNumber;
// save the PDF page HTML to a file
string outputHtmlFile = System.IO.Path.GetFileNameWithoutExtension(pdfFileName) + ".html";
File.WriteAllText(outputHtmlFile, pdfPageHtml, Encoding.UTF8);
args.PdfPageHtml.Dispose();
}