.Net C# 免费PDF合成软件

这篇具有很好参考价值的文章主要介绍了.Net C# 免费PDF合成软件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近用到pdf合成,发现各种软件均收费啊,这个技术非常简单,别人写好的库一大把,这里用到了PDFsharp,项目地址Home of PDFsharp and MigraDoc Foundation

软件下载地址

https://download.csdn.net/download/g313105910/88014569

源码下载地址

https://download.csdn.net/download/g313105910/88014573

废话不多说,上WPF代码

<Window x:Class="mergePDF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:mergePDF"
        mc:Ignorable="d"
        Title="PDF合成器,有顺序要求请用数字给文件命名,从小到大排序" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="10*"/>
            <RowDefinition Height="33*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Content="合成" HorizontalAlignment="Left" Margin="737,0,0,0" VerticalAlignment="Center" Click="ButtonStart_Click" Height="19" Width="28"/>
        <Button Content="选择目录" HorizontalAlignment="Left" Margin="675,0,0,0" VerticalAlignment="Center" Click="ButtonUrl_Click" Height="19" Width="52"/>
        <TextBox x:Name="Url_Text" HorizontalAlignment="Left" Margin="60,0,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Center" Width="600" Height="17"/>
        <Label Content="Url:" HorizontalAlignment="Left" Margin="25,0,0,0" VerticalAlignment="Center"/>
        <TextBox x:Name="Info_Text" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"  Text="" Grid.Row="1"/>
    </Grid>
</Window>
using FolderBrowserEx;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;

namespace mergePDF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonStart_Click(object sender, RoutedEventArgs e)
        {
            Info_Text.Text = string.Empty;
            CombinePdfFiles(Url_Text.Text);
        }

        public void CombinePdfFiles(string folderPath)
        {
            try
            {
                //读取文件夹中的文件夹
                int fileCount = 0;
                int pageCount = 0;
                PdfDocument outPdfFile = new PdfDocument();
                List<string> fileNameList = new List<string>();
                List<string> fileError = new List<string>();
                fileNameList.Add("开始合并");
                foreach (var filename in Directory.GetFiles(folderPath))
                {
                    if (System.IO.Path.GetExtension(filename) == ".pdf")
                    {
                        try
                        {
                            PdfDocument pdfFile = PdfReader.Open(filename, PdfDocumentOpenMode.Import);
                            fileCount++;
                            pageCount += pdfFile.PageCount;
                            int pageIndex = 0;
                            foreach (var pdfPage in pdfFile.Pages)
                            {
                                outPdfFile.AddPage(pdfPage);
                                pageIndex++;
                                fileNameList.Add(string.Format("文件名:{0}\t\t\t\t第{1}页\t文件共有{2}页", System.IO.Path.GetFileName(filename), pageIndex, pdfFile.PageCount));
                            }
                        }
                        catch (Exception ex)
                        {
                            fileError.Add(System.IO.Path.GetFileName(filename));
                            Info_Text.Text += ex.Message + "\r\n";
                        }
                    }
                }
                string combineResult = "";
                if (fileCount > 0)
                {
                    //导出pdf文件
                    string timeTag = DateTime.Now.ToString("MMdd_HH_mm_ss");
                    SavePdfFile(folderPath + "\\合并", timeTag + ".pdf", outPdfFile);
                    fileNameList.Add(string.Format("共 {0} 个文件,共 {1} 页。", fileCount, pageCount));
                    if (fileError.Count > 0)
                    {
                        fileNameList.Add("合并失败文件:");
                        foreach (string p in fileError)
                        {
                            fileNameList.Add(p);
                        }
                    }
                    SaveTxtFile(folderPath + "\\合并", timeTag + ".txt", fileNameList);
                }
                combineResult = string.Format("合并成功文件数量:{0}", fileCount);
                if (fileError.Count > 0)
                {
                    combineResult += "\r\n";
                    combineResult += string.Format("合并失败文件数量:{0}", fileError.Count);
                }
                foreach(var str in fileNameList)
                {
                    Info_Text.Text += str + "\r\n"; ;
                }
                Info_Text.Text += combineResult + "\r\n"; 
            }
            catch (Exception ex)
            {
                Info_Text.Text+=ex.Message + "\r\n";
            }
            Info_Text.ScrollToEnd();
        }
        private void SavePdfFile(string folderPath, string fileName, PdfDocument pdfFile)
        {
            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }
            pdfFile.Save(folderPath + "\\" + fileName);
        }
        private void SaveTxtFile(string folderPath, string fileName, List<string> content)
        {
            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }
            string fileFullPath = folderPath + "\\" + fileName;
            if (!File.Exists(fileFullPath))
            {
                var newFile = File.CreateText(fileFullPath);
                newFile.Close();
            }
            using (StreamWriter sw = new StreamWriter(fileFullPath, true))
            {
                foreach (string line in content)
                {
                    sw.WriteLine(line);
                }
                sw.Close();
            }
        }

        private void ButtonUrl_Click(object sender, RoutedEventArgs e)
        {
            FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
            folderBrowserDialog.Title = "Select a folder";
            //folderBrowserDialog.InitialFolder = @"C:\";
            folderBrowserDialog.AllowMultiSelect = false;
            if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Url_Text.Text = folderBrowserDialog.SelectedFolder;
            }
        }
    }
}

使用方法->打开软件

.Net C# 免费PDF合成软件,pdf

选择目录

.Net C# 免费PDF合成软件,pdf

合成成功

.Net C# 免费PDF合成软件,pdf

合并后的文件和日志

.Net C# 免费PDF合成软件,pdf文章来源地址https://www.toymoban.com/news/detail-635553.html

到了这里,关于.Net C# 免费PDF合成软件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pdf转换成图片免费软件用哪个?pdf转换成图片就用它

    随着技术的发展,现在企业办公运用到的电子文档各种各样,我们日常需要掌握的技能越来越高要求,其中pdf和图片是我们经常接触的文件格式之一,而且这两个文件格式我们会经常将它们进行转换,那么pdf转换成图片怎么操作呢?pdf转换成图片免费软件用哪个呢?下面我们一

    2024年02月10日
    浏览(35)
  • 合并 PDF 文件的7个免费软件

    PDF 合并是将所需信息转移到一个文件夹中的最佳选择,因此,您需要最好的 pdf 合并软件。 在 PDF 中复制粘贴不同的格式然后进行编辑非常耗时。因此,请查看我们的首选免费软件以合并 PDF 文件。 此列表中的工具可让您一次处理大量文件,从而节省时间。 使用这些工具,您

    2024年01月23日
    浏览(39)
  • PDF怎么转成PPT文件免费?一个软件解决

    随着科技的不断发展和进步,电子文档已经成为我们日常工作和学习中不可或缺的一部分。PDF作为一种跨平台的文件格式,以其可靠性和易读性而备受推崇。然而,在某些情况下,我们可能需要PDF怎么转成PPT文件免费,以便更好地展示和编辑内容。 软件介绍: 小圆象PDF转换

    2024年02月12日
    浏览(37)
  • C#/VB.NET:快速而简单的免费SVG到PDF转换技巧

    在日常工作中,我们常常需要将SVG转换为PDF格式。这是因为SVG格式的图像在打印时可能会出现问题,例如失去分辨率或无法正确适应纸张大小。与此相比,PDF格式则专门用于打印和共享文档,可以确保高质量输出,并且能够自动适应不同的纸张大小。在本文中,我们将介绍如

    2024年02月09日
    浏览(35)
  • 6个免费好用的 PDF 文件加密软件 [Windows & Mac]

    加密 PDF 文件使您能够保护它们免受未经授权的访问。当重要信息处于危险之中时,黑客可以访问电子文档。 考虑到它们很容易被黑客入侵,您需要迅速采取行动。避免这种情况的方法之一是使用更适合您需要的 PDF 加密软件。 有很多选项可供选择,因此请务必查看我的建议

    2024年01月18日
    浏览(35)
  • PDF控件Spire.PDF for .NET【安全】演示:加密 PDF 文档

    加密PDF是人们常用的保护PDF的方法。无论对于公司还是个人,使用PDF加密来设置一些限制都是必不可少的。为了使PDF文档可供未经授权的用户阅读但无法修改,加密的PDF文档需要两个密码:所有者密码和用户密码。本节将特别介绍一种通过 Spire.PDF for .NET 使用 C#、VB.NET 快速加

    2024年03月14日
    浏览(37)
  • 有免费的PDF转Word吗?值得收藏的7个免费 PDF转Word工具请收好

    PDF 和 DOC 是人们在工作中广泛使用的两种最流行的文档格式。PDF 是 Adobe 的便携式文档格式,DOC 是 Microsoft 的 Word 文档格式。PDF 是一种更安全可靠的文件格式,因为它很难编辑 PDF 文件,但是有一些称为 PDF 编辑器的工具可用于编辑 PDF 文件。PDF 基本上是独立于平台的,可以在

    2024年02月04日
    浏览(37)
  • PDF控件Spire.PDF for .NET【安全】演示:更改 PDF 文档的安全权限

    当您使用密码保护 PDF 文档时,您可以选择指定一组权限。权限决定用户如何与文件交互。例如,您可以对文档应用权限以禁止用户打印或使用剪切和粘贴操作。本文演示如何在C# 和 VB.NET中使用Spire.PDF for .NET更改 PDF 文档的安全权限。 Spire.PDF for .NET 是一款独立 PDF 控件,用于

    2024年01月19日
    浏览(49)
  • PDF控件Spire.PDF for .NET【安全】演示:如何在 PDF 中添加签名字段

    Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件

    2024年02月20日
    浏览(30)
  • C# 图片转PDF,PDF增加水印文字

    好久没写博客了,今天给大家分享一个图片转PDF的相关操作,也算是一次总结吧。 首先需要准备动态库itextsharp.dll,这个dll去网上下载,都可以下载到,C#对PDF的操作都是基于这个类库来实现的。话不多说,直接上代码。

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包