JPG与PDF格式转换器

该插件可实现JPG与PDF格式的互转。

MainForm.Designer.cs

cs 复制代码
using System.Windows.Forms;
namespace JpgToPdfConverter
{
    partial class MainForm
    {
        private System.ComponentModel.IContainer components = null;

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        private void InitializeComponent()
        {
            this.btnSelectJpgFiles = new System.Windows.Forms.Button();
            this.lstJpgFiles = new System.Windows.Forms.ListBox();
            this.btnConvertJpgToPdf = new System.Windows.Forms.Button();
            this.lblJpgStatus = new System.Windows.Forms.Label();
            this.btnClearJpg = new System.Windows.Forms.Button();
            this.btnSelectPdfFiles = new System.Windows.Forms.Button();
            this.lstPdfFiles = new System.Windows.Forms.ListBox();
            this.btnConvertPdfToJpg = new System.Windows.Forms.Button();
            this.lblPdfStatus = new System.Windows.Forms.Label();
            this.btnClearPdf = new System.Windows.Forms.Button();
            this.tabControl1 = new System.Windows.Forms.TabControl();
            this.tabPageJpgToPdf = new System.Windows.Forms.TabPage();
            this.tabPagePdfToJpg = new System.Windows.Forms.TabPage();
            this.label1 = new System.Windows.Forms.Label();
            this.nudDpi = new System.Windows.Forms.NumericUpDown();
            this.tabControl1.SuspendLayout();
            this.tabPageJpgToPdf.SuspendLayout();
            this.tabPagePdfToJpg.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.nudDpi)).BeginInit();
            this.SuspendLayout();
            // 
            // btnSelectJpgFiles
            // 
            this.btnSelectJpgFiles.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnSelectJpgFiles.Location = new System.Drawing.Point(5, 5);
            this.btnSelectJpgFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnSelectJpgFiles.Name = "btnSelectJpgFiles";
            this.btnSelectJpgFiles.Size = new System.Drawing.Size(111, 24);
            this.btnSelectJpgFiles.TabIndex = 0;
            this.btnSelectJpgFiles.Text = "选择JPG文件";
            this.btnSelectJpgFiles.UseVisualStyleBackColor = true;
            this.btnSelectJpgFiles.Click += new System.EventHandler(this.btnSelectJpgFiles_Click);
            // 
            // lstJpgFiles
            // 
            this.lstJpgFiles.FormattingEnabled = true;
            this.lstJpgFiles.HorizontalScrollbar = true;
            this.lstJpgFiles.ItemHeight = 12;
            this.lstJpgFiles.Location = new System.Drawing.Point(5, 34);
            this.lstJpgFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.lstJpgFiles.Name = "lstJpgFiles";
            this.lstJpgFiles.Size = new System.Drawing.Size(388, 172);
            this.lstJpgFiles.TabIndex = 1;
            // 
            // btnConvertJpgToPdf
            // 
            this.btnConvertJpgToPdf.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnConvertJpgToPdf.Location = new System.Drawing.Point(5, 210);
            this.btnConvertJpgToPdf.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnConvertJpgToPdf.Name = "btnConvertJpgToPdf";
            this.btnConvertJpgToPdf.Size = new System.Drawing.Size(111, 24);
            this.btnConvertJpgToPdf.TabIndex = 2;
            this.btnConvertJpgToPdf.Text = "转换为PDF";
            this.btnConvertJpgToPdf.UseVisualStyleBackColor = true;
            this.btnConvertJpgToPdf.Click += new System.EventHandler(this.btnConvertJpgToPdf_Click);
            // 
            // lblJpgStatus
            // 
            this.lblJpgStatus.AutoSize = true;
            this.lblJpgStatus.Location = new System.Drawing.Point(122, 218);
            this.lblJpgStatus.Name = "lblJpgStatus";
            this.lblJpgStatus.Size = new System.Drawing.Size(0, 12);
            this.lblJpgStatus.TabIndex = 3;
            // 
            // btnClearJpg
            // 
            this.btnClearJpg.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnClearJpg.Location = new System.Drawing.Point(281, 210);
            this.btnClearJpg.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnClearJpg.Name = "btnClearJpg";
            this.btnClearJpg.Size = new System.Drawing.Size(111, 24);
            this.btnClearJpg.TabIndex = 4;
            this.btnClearJpg.Text = "清除列表";
            this.btnClearJpg.UseVisualStyleBackColor = true;
            this.btnClearJpg.Click += new System.EventHandler(this.btnClearJpg_Click);
            // 
            // btnSelectPdfFiles
            // 
            this.btnSelectPdfFiles.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnSelectPdfFiles.Location = new System.Drawing.Point(5, 5);
            this.btnSelectPdfFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnSelectPdfFiles.Name = "btnSelectPdfFiles";
            this.btnSelectPdfFiles.Size = new System.Drawing.Size(111, 24);
            this.btnSelectPdfFiles.TabIndex = 5;
            this.btnSelectPdfFiles.Text = "选择PDF文件";
            this.btnSelectPdfFiles.UseVisualStyleBackColor = true;
            this.btnSelectPdfFiles.Click += new System.EventHandler(this.btnSelectPdfFiles_Click);
            // 
            // lstPdfFiles
            // 
            this.lstPdfFiles.FormattingEnabled = true;
            this.lstPdfFiles.HorizontalScrollbar = true;
            this.lstPdfFiles.ItemHeight = 12;
            this.lstPdfFiles.Location = new System.Drawing.Point(5, 34);
            this.lstPdfFiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.lstPdfFiles.Name = "lstPdfFiles";
            this.lstPdfFiles.Size = new System.Drawing.Size(388, 136);
            this.lstPdfFiles.TabIndex = 6;
            // 
            // btnConvertPdfToJpg
            // 
            this.btnConvertPdfToJpg.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnConvertPdfToJpg.Location = new System.Drawing.Point(5, 210);
            this.btnConvertPdfToJpg.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnConvertPdfToJpg.Name = "btnConvertPdfToJpg";
            this.btnConvertPdfToJpg.Size = new System.Drawing.Size(111, 24);
            this.btnConvertPdfToJpg.TabIndex = 7;
            this.btnConvertPdfToJpg.Text = "转换为JPG";
            this.btnConvertPdfToJpg.UseVisualStyleBackColor = true;
            this.btnConvertPdfToJpg.Click += new System.EventHandler(this.btnConvertPdfToJpg_Click);
            // 
            // lblPdfStatus
            // 
            this.lblPdfStatus.AutoSize = true;
            this.lblPdfStatus.Location = new System.Drawing.Point(122, 218);
            this.lblPdfStatus.Name = "lblPdfStatus";
            this.lblPdfStatus.Size = new System.Drawing.Size(0, 12);
            this.lblPdfStatus.TabIndex = 8;
            // 
            // btnClearPdf
            // 
            this.btnClearPdf.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnClearPdf.Location = new System.Drawing.Point(281, 210);
            this.btnClearPdf.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.btnClearPdf.Name = "btnClearPdf";
            this.btnClearPdf.Size = new System.Drawing.Size(111, 24);
            this.btnClearPdf.TabIndex = 9;
            this.btnClearPdf.Text = "清除列表";
            this.btnClearPdf.UseVisualStyleBackColor = true;
            this.btnClearPdf.Click += new System.EventHandler(this.btnClearPdf_Click);
            // 
            // tabControl1
            // 
            this.tabControl1.Controls.Add(this.tabPageJpgToPdf);
            this.tabControl1.Controls.Add(this.tabPagePdfToJpg);
            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.tabControl1.Location = new System.Drawing.Point(0, 0);
            this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.tabControl1.Name = "tabControl1";
            this.tabControl1.SelectedIndex = 0;
            this.tabControl1.Size = new System.Drawing.Size(422, 277);
            this.tabControl1.TabIndex = 10;
            // 
            // tabPageJpgToPdf
            // 
            this.tabPageJpgToPdf.Controls.Add(this.btnSelectJpgFiles);
            this.tabPageJpgToPdf.Controls.Add(this.btnClearJpg);
            this.tabPageJpgToPdf.Controls.Add(this.lstJpgFiles);
            this.tabPageJpgToPdf.Controls.Add(this.lblJpgStatus);
            this.tabPageJpgToPdf.Controls.Add(this.btnConvertJpgToPdf);
            this.tabPageJpgToPdf.Location = new System.Drawing.Point(4, 22);
            this.tabPageJpgToPdf.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.tabPageJpgToPdf.Name = "tabPageJpgToPdf";
            this.tabPageJpgToPdf.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.tabPageJpgToPdf.Size = new System.Drawing.Size(414, 251);
            this.tabPageJpgToPdf.TabIndex = 0;
            this.tabPageJpgToPdf.Text = "JPG转PDF";
            this.tabPageJpgToPdf.UseVisualStyleBackColor = true;
            // 
            // tabPagePdfToJpg
            // 
            this.tabPagePdfToJpg.Controls.Add(this.label1);
            this.tabPagePdfToJpg.Controls.Add(this.nudDpi);
            this.tabPagePdfToJpg.Controls.Add(this.btnSelectPdfFiles);
            this.tabPagePdfToJpg.Controls.Add(this.lstPdfFiles);
            this.tabPagePdfToJpg.Controls.Add(this.btnConvertPdfToJpg);
            this.tabPagePdfToJpg.Controls.Add(this.btnClearPdf);
            this.tabPagePdfToJpg.Controls.Add(this.lblPdfStatus);
            this.tabPagePdfToJpg.Location = new System.Drawing.Point(4, 22);
            this.tabPagePdfToJpg.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.tabPagePdfToJpg.Name = "tabPagePdfToJpg";
            this.tabPagePdfToJpg.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.tabPagePdfToJpg.Size = new System.Drawing.Size(402, 241);
            this.tabPagePdfToJpg.TabIndex = 1;
            this.tabPagePdfToJpg.Text = "PDF转JPG";
            this.tabPagePdfToJpg.UseVisualStyleBackColor = true;
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(213, 180);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(101, 12);
            this.label1.TabIndex = 11;
            this.label1.Text = "输出图片DPI设置:";
            // 
            // nudDpi
            // 
            this.nudDpi.Location = new System.Drawing.Point(318, 176);
            this.nudDpi.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.nudDpi.Maximum = new decimal(new int[] {
            600,
            0,
            0,
            0});
            this.nudDpi.Minimum = new decimal(new int[] {
            72,
            0,
            0,
            0});
            this.nudDpi.Name = "nudDpi";
            this.nudDpi.Size = new System.Drawing.Size(74, 21);
            this.nudDpi.TabIndex = 10;
            this.nudDpi.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            this.nudDpi.Value = new decimal(new int[] {
            300,
            0,
            0,
            0});
            // 
            // MainForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(422, 277);
            this.Controls.Add(this.tabControl1);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "MainForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "JPG/PDF转换器  作者: 山水(qq443440204)";
            this.tabControl1.ResumeLayout(false);
            this.tabPageJpgToPdf.ResumeLayout(false);
            this.tabPageJpgToPdf.PerformLayout();
            this.tabPagePdfToJpg.ResumeLayout(false);
            this.tabPagePdfToJpg.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.nudDpi)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button btnSelectJpgFiles;
        private System.Windows.Forms.ListBox lstJpgFiles;
        private System.Windows.Forms.Button btnConvertJpgToPdf;
        private System.Windows.Forms.Label lblJpgStatus;
        private System.Windows.Forms.Button btnClearJpg;
        private System.Windows.Forms.Button btnSelectPdfFiles;
        private System.Windows.Forms.ListBox lstPdfFiles;
        private System.Windows.Forms.Button btnConvertPdfToJpg;
        private System.Windows.Forms.Label lblPdfStatus;
        private System.Windows.Forms.Button btnClearPdf;
        private System.Windows.Forms.TabControl tabControl1;
        private System.Windows.Forms.TabPage tabPageJpgToPdf;
        private System.Windows.Forms.TabPage tabPagePdfToJpg;
        private System.Windows.Forms.NumericUpDown nudDpi;
        private System.Windows.Forms.Label label1;
    }
}

MainForm.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using static System.Net.Mime.MediaTypeNames;
using Image = System.Drawing.Image;

namespace JpgToPdfConverter
{
    public partial class MainForm : Form
    {
        // 存储选择的文件路径
        private List<string> selectedJpgFiles = new List<string>();
        private List<string> selectedPdfFiles = new List<string>();

        public MainForm()
        {
            InitializeComponent();
        }

        #region JPG转PDF功能
        // 选择JPG文件按钮点击事件
        private void btnSelectJpgFiles_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "JPG文件 (*.jpg;*.jpeg)|*.jpg;*.jpeg|所有文件 (*.*)|*.*";
                openFileDialog.Multiselect = true;
                openFileDialog.Title = "选择JPG文件";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    selectedJpgFiles.AddRange(openFileDialog.FileNames);
                    UpdateJpgFileList();
                }
            }
        }

        // 更新JPG文件列表显示
        private void UpdateJpgFileList()
        {
            lstJpgFiles.Items.Clear();
            foreach (string file in selectedJpgFiles)
            {
                lstJpgFiles.Items.Add(Path.GetFileName(file));
            }
            UpdateJpgStatus($"已选择 {selectedJpgFiles.Count} 个文件");
        }

        // 更新JPG转换状态
        private void UpdateJpgStatus(string message)
        {
            lblJpgStatus.Text = message;
        }

        // 清除JPG文件列表
        private void btnClearJpg_Click(object sender, EventArgs e)
        {
            selectedJpgFiles.Clear();
            UpdateJpgFileList();
        }

        // JPG转PDF按钮点击事件
        private void btnConvertJpgToPdf_Click(object sender, EventArgs e)
        {
            if (selectedJpgFiles.Count == 0)
            {
                MessageBox.Show("请先选择JPG文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            using (SaveFileDialog saveFileDialog = new SaveFileDialog())
            {
                saveFileDialog.Filter = "PDF文件 (*.pdf)|*.pdf|所有文件 (*.*)|*.*";
                saveFileDialog.Title = "保存PDF文件";
                saveFileDialog.FileName = "转换结果.pdf";

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        UpdateJpgStatus("正在转换...");
                        Cursor = Cursors.WaitCursor;

                        ConvertJpgToPdf(selectedJpgFiles, saveFileDialog.FileName);

                        UpdateJpgStatus("转换完成!");
                        MessageBox.Show($"PDF文件已保存至:{saveFileDialog.FileName}", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception ex)
                    {
                        UpdateJpgStatus("转换失败!");
                        MessageBox.Show($"转换过程中发生错误:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    finally
                    {
                        Cursor = Cursors.Default;
                    }
                }
            }
        }

        // JPG转PDF核心方法
        //private void ConvertJpgToPdf(List<string> jpgFiles, string pdfPath)
        //{
        //    using (PdfDocument pdf = new PdfDocument())
        //    {
        //        foreach (string jpgFile in jpgFiles)
        //        {
        //            try
        //            {
        //                // 获取图像尺寸
        //                using (Image image = Image.FromFile(jpgFile))
        //                {
        //                    PdfPage page = pdf.AddPage();
        //                    page.Width = image.Width;
        //                    page.Height = image.Height;
        //                }

        //                // 从文件加载图像到PDF
        //                PdfPage pdfPage = pdf.Pages[pdf.Pages.Count - 1];
        //                XGraphics gfx = XGraphics.FromPdfPage(pdfPage);
        //                XImage xImage = XImage.FromFile(jpgFile);

        //                gfx.DrawImage(xImage, 0, 0);
        //            }
        //            catch (Exception ex)
        //            {
        //                MessageBox.Show($"处理文件 {Path.GetFileName(jpgFile)} 时出错:{ex.Message}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        //            }
        //        }

        //        pdf.Save(pdfPath);
        //    }
        //}
        #endregion
        private void ConvertJpgToPdf(List<string> jpgFiles, string pdfPath)
        {
            using (PdfDocument pdf = new PdfDocument())
            {
                foreach (string jpgFile in jpgFiles)
                {
                    using (Image image = Image.FromFile(jpgFile))
                    {
                        PdfPage page = pdf.AddPage();
                        // 直接按像素数设置页面尺寸(1点=1像素)
                        page.Width = image.Width;
                        page.Height = image.Height;
                        XGraphics gfx = XGraphics.FromPdfPage(page);
                        XImage xImage = XImage.FromFile(jpgFile);
                        gfx.DrawImage(xImage, 0, 0, page.Width, page.Height);
                    }
                }
                pdf.Save(pdfPath);
            }
        }
        #region PDF转JPG功能
        // 选择PDF文件按钮点击事件
        private void btnSelectPdfFiles_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.Filter = "PDF文件 (*.pdf)|*.pdf|所有文件 (*.*)|*.*";
                openFileDialog.Multiselect = true;
                openFileDialog.Title = "选择PDF文件";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    selectedPdfFiles.AddRange(openFileDialog.FileNames);
                    UpdatePdfFileList();
                }
            }
        }

        // 更新PDF文件列表显示
        private void UpdatePdfFileList()
        {
            lstPdfFiles.Items.Clear();
            foreach (string file in selectedPdfFiles)
            {
                lstPdfFiles.Items.Add(Path.GetFileName(file));
            }
            UpdatePdfStatus($"已选择 {selectedPdfFiles.Count} 个文件");
        }

        // 更新PDF转换状态
        private void UpdatePdfStatus(string message)
        {
            lblPdfStatus.Text = message;
        }

        // 清除PDF文件列表
        private void btnClearPdf_Click(object sender, EventArgs e)
        {
            selectedPdfFiles.Clear();
            UpdatePdfFileList();
        }

        // PDF转JPG按钮点击事件
        private void btnConvertPdfToJpg_Click(object sender, EventArgs e)
        {
            if (selectedPdfFiles.Count == 0)
            {
                MessageBox.Show("请先选择PDF文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
            {
                folderBrowserDialog.Description = "选择保存JPG文件的文件夹";

                if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        UpdatePdfStatus("正在转换...");
                        Cursor = Cursors.WaitCursor;

                        int dpi = (int)nudDpi.Value;
                        ConvertPdfToJpg(selectedPdfFiles, folderBrowserDialog.SelectedPath, dpi);

                        UpdatePdfStatus("转换完成!");
                        MessageBox.Show($"JPG文件已保存至:{folderBrowserDialog.SelectedPath}", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception ex)
                    {
                        UpdatePdfStatus("转换失败!");
                        MessageBox.Show($"转换过程中发生错误:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    finally
                    {
                        Cursor = Cursors.Default;
                    }
                }
            }
        }

        // PDF转JPG核心方法
        private void ConvertPdfToJpg(List<string> pdfFiles, string outputFolder, int dpi)
        {
            foreach (string pdfFile in pdfFiles)
            {
                try
                {
                    string fileNameWithoutExt = Path.GetFileNameWithoutExtension(pdfFile);
                    string fileOutputFolder = Path.Combine(outputFolder, fileNameWithoutExt);

                    // 为每个PDF创建单独的文件夹
                    Directory.CreateDirectory(fileOutputFolder);

                    using (PdfiumViewer.PdfDocument document = PdfiumViewer.PdfDocument.Load(pdfFile))
                    {
                        int pageCount = document.PageCount;

                        for (int i = 0; i < pageCount; i++)
                        {
                            string outputPath = Path.Combine(fileOutputFolder, $"{fileNameWithoutExt}_第{i + 1}页.jpg");

                            using (Bitmap image = (Bitmap)document.Render(i, dpi, dpi, false))
                            {
                                image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"处理文件 {Path.GetFileName(pdfFile)} 时出错:{ex.Message}", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }
        }
        #endregion
    }
}

Program.cs

cs 复制代码
using System;
using System.Windows.Forms;

namespace JpgToPdfConverter
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}
相关推荐
新老农19 小时前
php数据导出pdf,然后pdf转图片,再推送钉钉群
pdf·php·钉钉
琉璃℡初雪21 小时前
vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
vue.js·pdf·excel
一个懒鬼1 天前
Edge浏览器打开PDF文件显示空白(每次需要等上一会)
windows·pdf
Lauren_Lu1 天前
pdf 不是扫描件,但却无法搜索关键词【问题尝试解决未果记录】
pdf
Python猫2 天前
付费专栏·Python潮流周刊电子书合集(epub、pdf、markdown)下载
python·计算机·pdf·电子书·资料
JackieZhengChina2 天前
用python清除PDF文件中的水印(Adobe Acrobat 无法删除)
pdf
geovindu2 天前
vue3: pdf.js 3.4.120 using javascript
开发语言·javascript·vue.js·pdf
TextIn智能文档云平台3 天前
PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!
图像处理·人工智能·算法·自然语言处理·pdf·ocr
old_power3 天前
【Python】PDF文件处理(PyPDF2、borb、fitz)
python·pdf