iTextSharp 读出,写入

版本为5.1.2

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string path = Server.MapPath("~/") + "Pdfs\\Doc1.pdf";
        writePDF(path, "毛主席万岁!!!");

        string content = readPDF(path);
        Response.Write(content);
    }

    /// <summary>
    /// 读出pdf文件(返回有换行符)
    /// </summary>
    /// <param name="fn">读出的pdf文件的路径和名称</param>
    /// <returns></returns>
    private string readPDF(string fn)
    {
        PdfReader reader = new PdfReader(fn);
        StringBuilder strBuilder = new StringBuilder();
        int num = reader.NumberOfPages;
        for (var i = 1; i <= num; i++)
        {
            string text = PdfTextExtractor.GetTextFromPage(reader,num);
            strBuilder.Append(text);
        }
        return strBuilder.ToString();
    }

    /// <summary>
    /// 写入pdf文件
    /// </summary>
    /// <param name="fn">路径</param>
    /// <param name="content">段落内容</param>
    private void writePDF(string fn, string content)
    {
        //必须先加入资源
        //string path = Server.MapPath("~/");
        //BaseFont.AddToResourceSearch(path + "DLL\\iTextAsian.dll");
        //BaseFont.AddToResourceSearch(path + "DLL\\iTextAsianCmaps.dll");
        //"UniGB-UCS2-H" "UniGB-UCS2-V"是简体中文,分别表示横向字 和 纵向字
        //"STSong-Light"是字体名称
        //BaseFont bf = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        ////可以使用 TTF 字体
        //BaseFont bf0 = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

        BaseFont bf = BaseFont.CreateFont("c://windows//fonts//simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        iTextSharp.text.Font font = new iTextSharp.text.Font(bf);
        var doc1 = new Document();  //默认为A4大小
        //var doc2 = new Document(PageSize.A5);
        //var doc3 = new Document(new Rectangle(100f, 300f)); 宽100像素,高300像素

        PdfWriter.GetInstance(doc1, new FileStream(fn, FileMode.Create));
        doc1.Open();

        doc1.Add(new Paragraph(content, font));

        doc1.Close();
    }
}

下载

iTextSharp 读出,写入

时间: 2024-09-20 02:03:30

iTextSharp 读出,写入的相关文章

C# 文件与二进制互转数据库写入读出

//这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDialog dialog = new OpenFileDialog()) { //只能单选一个文件 dialog.Multiselect = false; //选择一个文件 if (dialog.ShowDialog() == DialogResult.OK) { try { //把选择的文件路径给tx

递归神经网络的不可思议的有效性 [ 译 / 转 ]

递归神经网络(Recurrent Neural Networks,RNNs)就像一种神奇的魔法.我至今仍对于我第一次训练递归网络记忆犹新.那个网络是被用于生成图像说明(Image Captioning)的.仅仅进行了几十分钟的训练,我的第一个模型(这个模型中相当一部分超参数都是我随意选取的)就开始能给图片生成看起来非常不错的描述,而这些描述基本上能称得上是有意义的.有时结果的质量和模型复杂度之间的关联性完全超出你的预期,而我的第一次实验就是一个例子.为什么当时这些训练结果看起来如此惊人?是因为大

android-----关于通过AIDL注册监听之后无法解除监听的探索

我们在平常使用AIDL时可能会有这样的场景,客户端并不想一直查看服务端有没有有关我的消息,而是想让服务端在有消息的时候能够通知我,随后客户端再去服务端拿消息,这样相对来说比较节省资源,通常我们可以利用观察者模式将客户端注册到服务端,接着有消息的时候服务端相应的通知各个客户端就可以了,这种方式在客户端和服务端处于同一进程的时候使用是没有问题的,因为同一进程内部是可以直接传递对象的,并不会出现注册绑定到服务端和解注册的对象不同的情况,但是如果放到不同进程间的话,因为通信过程中涉及到了序列化反序列化过

操作系统之存储器管理

存储器的层次结构 存储器的层次如下图: 上图中,寄存器和主存储器称为可执行存储器.高速缓存的作用是缓和CPU与内存之间的速度差异,主要由硬件实现.磁盘缓存的出现是由于内存容量不够,需要引入磁盘,然而磁盘的I/O速度远低于主存的访问速度,为了缓和两者之间在速度上的差异,设置了磁盘缓存.磁盘缓存与高速缓存不同,它本身并不是实际存在的存储器,是利用主存中的部分空间暂时存放从磁盘中读出写入的信息. 程序的装入与链接 用户程序需要运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常要经历一下

作业4:结对编程—词频统计

结对对象:石莉静 博客地址:http://www.cnblogs.com/shilijing/ Github地址:https://github.com/cchenhui/-4 贡献比例:1:1 结对编程照片: [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 源程序: #include <iostream> #include <vector> #in

结对编程——词频统计 2

[必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件(filename.txt) 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率 结对伙伴:陈晖,

操作系统学习

本文原创,转载请注明来至:http://blog.csdn.net/j903829182/article/details/38060553 1.计算机发展的4个时代:电子管时代,晶体管时代,集成电路时代和大规模集成电路时代 2.操作系统发展过程:(1)单道批处理,(2)多道批处理,分时和实时系统时代,(3)多方式系统时代(4)并行与分布式系统时代. 3.操作系统:是一种系统软件,是软硬件资源的控制中心,它以尽量合理有效的方法组织单个或多个用户以多任务方      式共享计算机的各种资源,并提供编

[51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]

main.c 1 #include<reg51.h> 2 #include"2401.h" 3 4 #define uint unsigned int 5 #define uchar unsigned char 6 7 sbit KEY8=P3^7; //发送按键 8 sbit beep=P2^3;//喇叭 9 sbit LED6=P1^6; ////接收到数据后的功能实现灯 10 11 void delay_ms(uint z) //延时函数 12 { 13 uint x

Linux 高性能服务器编程——高级I/O函数

重定向dup和dup2函数 [cpp] view plaincopyprint? #include <unistd.h> int dup(int file_descriptor); int dup2(int file_descriptor_one, int file_descriptor_two); dup创建一个新的文件描述符, 此描述符和原有的file_descriptor指向相同的文件.管道或者网络连接. dup返回的文件描述符总是取系统当前可用的最小整数值. dup2函数通过使用参数f