Как конвертировать html в pdf на arm32 без установки wkhtmltopdf - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь преобразовать html-документы в pdf на arm32 (NXP i.MX6 ARM Cortex A9). Я пишу приложение в C # как приложение .NetCore. У меня проблема в том, что ничего из того, что я пробовал, не работает, и мне еще не удалось найти решение, почему.

Я пытался использовать несколько внешних библиотек для этого, большинство из которых работают только дляWindows в соответствии с их командами поддержки, поэтому причина они не работают очевидна (например, EvoPdf, SelectPdf, HiQPdf и другие). Те, которые я пробовал, которые, как мне кажется, должны работать для Linux, - это Ironpdf, обертки для wkHtmlToPdf (OpenHtmlToPdf, SharkPdf и т. Д.), PdfTron и безголовый хром. Все они дают разные ошибки:

Ironpdf жалуется на то, что библиотеки не установлены (я написал по электронной почте их поддержку, чтобы они могли решить эту проблему). IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true установлен в моем коде, но я все еще получаю сообщение об ошибке, указывающее мне установить его в true.

One or more errors occurred. (The Docker or Linux image is missing dependencies for IronPDF.
Please read https://ironpdf.com/docs/questions/docker-linux/
You may alternatively set IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true to automatically resolve this issue.)

OpenHtmlToPdf имеет включенный wkHtmlToPdf, но он даетОшибка отказа в разрешении.

   at Interop.Sys.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setUser, UInt32 userId, UInt32 groupId, Int32& lpChildPid, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean shouldThrow)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at OpenHtmlToPdf.HtmlToPdfConverterProcess.Convert(ConversionSource conversionSource)
   at OpenHtmlToPdf.Pdf.DocumentBuilder.ReadContentUsingTemporaryFile(String temporaryFilename)
   at OpenHtmlToPdf.Pdf.DocumentBuilder.Content()
   at OpenHTML2pdf.Program.Main(String[] args) in 

wkHtmlToPdf -обёртки с wkHtmlToPdf внешне говорят, что не могут найти wkHtmlToPdf (я не могу установить его, поэтому очевидно, почему он не работает)

pdfTron говорит, что не может загрузить одну из используемых библиотек.

Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'PDFNetC' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libPDFNetC: cannot open shared object file: No such file or directory
   at pdftron.PDFNetPINVOKE.TRN_PDFDocCreate(IntPtr& doc)
   at pdftron.PDF.PDFDoc..ctor()

Chrome без головы выдает ошибку навигации, но этодолжен найти правильный файл.

$ chromium-browser --headless --disable-gpu --print-to-pdf=file1.pdf --no-margins file1.html  
[0930/085730.493897:WARNING:audio_manager.cc(295)] Multiple instances of AudioManager detected 
[0930/085730.494843:WARNING:audio_manager.cc(254)] Multiple instances of AudioManager detected 
[0930/085730.514971:ERROR:headless_shell.cc(100)] Navigation to  failed

У кого-нибудь есть решение любой из этих ошибок или совет о том, что использовать, что может работать? Я чувствую, что не могу идти дальше самостоятельно.

...