繁体   English   中英

导出图片到PDF

[英]Export Images to PDF

我有一个项目必须将图像导出到 PDF。图像和文本都需要导出到 pdf。有没有办法通过使用 silverPDF.dll 和 PdfReader 来实现?

代码在这里。

 private void btnOutlook_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        XBrush xbrush;
        SaveFileDialog savePDF = new SaveFileDialog();
        savePDF.Filter = "PDF file format | *.pdf";
        if (savePDF.ShowDialog() == true)
        {
            PdfDocument document = new PdfDocument();
            PdfPage page = document.AddPage();
            XGraphics gfx = XGraphics.FromPdfPage(page);
            XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

            XFont font = new XFont("Huxtable", 20, XFontStyle.Bold, options);

            for (int x = 0; x < 10; x++)
            {
                if (x % 2 == 0)
                {
                    xbrush = XBrushes.Red;
                }
                else
                    xbrush = XBrushes.Black;
                gfx.DrawString(string.Format("{0}", stringArray[x]), font, xbrush, new XRect(0, (x * 20), page.Width, page.Height), XStringFormats.TopLeft);
            }

            document.Save(savePDF.OpenFile());
        }

    }

我可以在此代码的何处插入将其插入 pdf 的图像? 有什么办法吗? 感谢所有回复。

它需要是SilverPDF吗? 我之前使用iTextSharp库在我以前的雇主做过类似的事情(否则我会粘贴示例代码)

iTextSharp的-工作-与图像

下载链接

Tesseract 4.1.1,将Images转换为C#中的PDF Full Text

这是一种使用来自 jpg 图像的全文层构建 PDF 的方法,只需使用来自 Visual Studio 2022 和 DotNet 6 中的 Nugget package 的 Tesseract 4.1.1。

这是 Function,用于从多个 jpg 创建 PDF。

  1. jpg 文件名的结构必须如下所示:IMG1.jpg,IMG2.jpg,IMG3.jpg, ...
  2. 所有图像文件都存储在同一个文件夹中

 private void PDFRenderer_OCR_MutipleJPG(String PDFName, String PDFTitle, String FolderJpg, int NumberImage) { IResultRenderer renderer = Tesseract.PdfResultRenderer.CreatePdfRenderer(PDFName, "tessdata", false); renderer.BeginDocument(PDFTitle); string configurationFilePath = "tessdata"; string configfile = Path.Combine("tessdata", "pdf"); //using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndLstm, configfile)) EngineMode M1 = EngineMode.TesseractOnly;//election OCR mode TesseractEngine engine = new TesseractEngine("tessdata", "eng", M1); // progressBar1.Maximum= NumberImage; // progressBar1.Minimum = 1; for (i =1; i < NumberImage+1;i++)//i=1, because my first image name is img1.jpg { //progressBar1.Value= i+1; lPage.Text = "Processing page: " + i.ToString(); lPage.Refresh(); TesseractEngine engine = new TesseractEngine("tessdata", "eng", M1); string ImageJpg = "c:\\temp" + "\\" + FolderJpg + "\\" + FolderJpg + i.ToString() + ".jpg"; // MessageBox.Show("IMG: " + ImageJpg); using (var imagefile = new Bitmap(ImageJpg)) { using (var img = PixConverter.ToPix(imagefile)) { using (Tesseract.Page page = engine.Process(img, PDFTitle)) { renderer.AddPage(page); // Adding converted page } } } } renderer.Dispose(); // Clear ressourcce //Reset progressBar1 to origin setting //progressBar1.Value= 1; //progressBar1.Maximum = 100; //progressBar1.Minimum= 0; //progressBar1.Value = 0; }

只需像这样调用此方法:

PDFRenderer_OCR_MutipleJPG("C:\temp\outp","倾斜","文档", 20);

  • "C:\temp\outp" -> 没有扩展名的最终 pdf 的名称和路径,它将是 "C:\temp\outp.pdf"。

  • title="title" PDF上的元信息

  • 文档 -> 是我的图像文件夹源和每个图像名称的一部分,没有索引。

  • 这里要转换的图像文件夹是:C:\temp\document\ -> 里面: -> Document1.jpg, Document2.jpg, Document3.jpg, ...

  • 20是索引,代表要转换的图片数量。

  • 可选的进度条,用于在处理过程中在 UI 中查看页码

来自法国的最好的问候弗朗西斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM