当前位置:   article > 正文

C# TIF文件转PDF_c# tif 转pdf

c# tif 转pdf

TIF文件转PDF

使用场景

前几天公司管文件的想要一个本地TIF文件转换成PDF的功能,虽然我不明白为什么要转换成PDF(TIF文件是有图层的,可以使用其他软件进行重新编辑),其实是公司购买的致远OA系统不能支持TIF文件在线预览而只能下载,PDF文件可以预览而且有水印。

然后领导说让我从网上找企业问问这个功能(管文件的上传TIF之后,这个功能把TIF转换成PDF文件然后上传给OA)的价格,不问不知道,一问10w+(虽然是嵌套在其他WEB应用中的,但是我还是觉得离了个大谱)。

其实用Windows自带的图片浏览器直接打印选择导出PDF文件然后上传OA系统就可以了,但是怕用户需要转换的量太大,一个一个文件转换不知道得弄多久,我寻思自己开发一个小功能,让管文件的在他本地把TIF转换成PDF再上传OA系统就OK了。

结局
用自己开发的导出的感觉比用Windows自带的清晰一些(可能是错觉),最后领导怕我开发的软件用户会给别人用,一旦有问题用户可能首先往我头上怀疑,而且用户一年才有十几个TIF文件需要转换成PDF的,就让他们用Windows自带的功能自己转换去了,这玩意最后就太监了

代码
废话说完了,看看代码吧

这个是按钮点击,主要是调用“tifToPdf”方法,如果需要批量转换的话就遍历文件名称,每次都调用这个方法就行了。

private void button1_Click(object sender, EventArgs e)
{
    try
    {                
        tifToPdf(@"D:\test.tif", @"D:\test.pdf");
        MessageBox.Show("转换成功!");
    }
    catch (Exception ex)
    {
        MessageBox.Show("转换失败!\r详细信息:" + ex.Message);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

转换的方法

/// <summary>
/// 将tif文件转换成pdf
/// </summary>
/// <param name="arr">需要导出为PDF格式的tif文件全路径</param>
/// <param name="toFilePdf">导出PDF的文件权路径</param>
private static void tifToPdf(string arr, string toFilePdf)
{
    System.Drawing.Bitmap pic = new System.Drawing.Bitmap(arr);
    float width = pic.Size.Width;   // TIF图片的宽度
    float height = pic.Size.Height;   // TIF图片的高度

    FileInfo _toFile = new FileInfo(toFilePdf);
    // 创建一个文档对象
    Document doc = new Document();
    Rectangle rectangle = new Rectangle(0, 0, width, height);
    doc.SetPageSize(rectangle);
    int pages = 0;
    FileStream fs = new FileStream(toFilePdf, FileMode.OpenOrCreate);
    // 定义输出位置并把文档对象装入输出对象中
    PdfWriter writer = PdfWriter.GetInstance(doc, fs);
    // 打开文档对象
    doc.Open();
    PdfContentByte cb = writer.DirectContent;
    RandomAccessFileOrArray ra = new RandomAccessFileOrArray(arr);
    int comps = TiffImage.GetNumberOfPages(ra);
    for (int c = 0; c < comps; ++c)
    {
        Image img = TiffImage.GetTiffImage(ra, c + 1);
        if (img != null)
        {
            doc.SetPageSize(new Rectangle(img.ScaledWidth, img.ScaledHeight));
            img.SetAbsolutePosition(0, 0);
            cb.AddImage(img);
            doc.NewPage();
            ++pages;
        }
        ra.Close();// 关闭
    }
    // 关闭文档对象,释放资源
    doc.Close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/325180
推荐阅读
相关标签
  

闽ICP备14008679号