using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
namespace PDF_EXTRACT
{
public class pdfTohtm
{
public static string ConvertPdf(string path, string outpath)
{
Word.Application app = new Word.Application(); ;
Word.Document doc1;
try
{
doc1 = app.Documents.Open(path, false, ReadOnly: false);
app.DisplayAlerts = Word.WdAlertLevel.wdAlertsAll;
app.FileValidation = Microsoft.Office.Core.MsoFileValidationMode.msoFileValidationSkip;
app.Visible = false;
app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
doc1.SaveAs2(outpath, Word.WdSaveFormat.wdFormatFilteredHTML, ReadOnlyRecommended: false);
doc1.Close();
string result = File.ReadAllText(outpath + ".htm", Encoding.UTF7);
return "success:" + result;
}
catch (Exception e)
{
return "failed::::" + e;
}
finally
{
app.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app);
}
}
}
}
Объяснение: Это решение работает, открывая PDF как редактируемый текстовый документ, затем файл сохраняется как
.htm файл. Теперь файл .htm открывается и читается как текстовый файл, поэтому вывод этого кода представляет собой набор html кодов, которые вы можете вставить в свой Excel, чтобы конвертировать в pdf в Excel, не теряя структуру данных.
КЛЮЧЕВЫЕ ЗАМЕЧАНИЯ:
- Это решение не работает, если pdf является отсканированной копией, для таких
pdfs OCR, кажется, единственный вариант, согласно моим небольшим знаниям о
предмет.
2.Для аргумента «путь» необходимо передать полный путь к файлу, а для аргумента «путь» передать путь без расширения, например: C: \ Users \ username \ folder \ filename (расширение файла, т.е. ".htm" не требуется).