现在国家在推广ofd格式的发票,但现在推广前期,ofd的接受度不高,很多情况下打不开ofd格式的发票,还是希望能接受pdf格式的发票。

在走了一些看起来是抄近路的实际是死胡同(比如用Python)的弯路后,用了Spire.PDF实现了ofd发票批量转PDF。

以下是.net core 6的C#源码:

文件OFD2PDF.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <StartupObject>OFD2PDF.Program</StartupObject>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FreeSpire.PDF" Version="8.6.0" />
  </ItemGroup>

</Project>

Program.cs

using Spire.Pdf.Conversion;

namespace OFD2PDF
{
    internal class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            FolderBrowserDialog ofd = new FolderBrowserDialog();

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string folder = ofd.SelectedPath;
                DirectoryInfo directory = new DirectoryInfo(folder);
                List<FileInfo> ofdFiles = GetOFD(directory);
                foreach (FileInfo fi in ofdFiles)
                {
                    Console.WriteLine(fi.FullName);
                    OfdConverter converter = new OfdConverter(fi.FullName);

                    converter.ToPdf(fi.FullName.Replace(".ofd", ".pdf", true, null));
                }
                Console.WriteLine("All is done!");
            }

            Console.ReadKey();
        }

        static List<FileInfo> GetOFD(DirectoryInfo folder)
        {
            List<FileInfo> files = new List<FileInfo>();
            foreach (FileInfo fi in folder.EnumerateFiles())
            {
                if (fi.Extension.ToLower() == ".ofd")
                    files.Add(fi);
            }

            foreach (DirectoryInfo d in folder.EnumerateDirectories())
            {
                files.AddRange(GetOFD(d));
            }

            return files;
        }
    }
}

 

另外我也附上一个编译好的bin文件 https://files.cnblogs.com/files/crazyghostvon/OFD2PDF.zip?t=1699582426&download=true,解压密码是123456

送给需要的人。