澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-10-06 11:16 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

pdf增加图片的方法,读书笔记

pdf增加图片的办法,pdf扩展图片方法

public class Pdftest {   
    public static void main(String[] args) throws Exception {   
          PdfReader reader = new PdfReader("E:\src.pdf"); 
          int n = reader.getNumberOfPages(); //pdf有几页
          Document document = new Document(reader.getPageSize(n)); 
          float width = document.getPageSize().getWidth();
          float height =  document.getPageSize().getHeight();
          // 输出文件
          PdfStamper stamp = new PdfStamper(reader,  
            new FileOutputStream("E:\outputFile.pdf")); 
          PdfContentByte over; 
          Image img = Image.getInstance("E:\test.jpg"); 
          width = width-img.getWidth(); 
          height = height-img.getHeight();
          img.setAbsolutePosition(width, height); //以左下角为坐标原点
          img.setAlignment(Image.ALIGN_RIGHT); 
          if(n > 0) 
          { 
            over = stamp.getOverContent(1); //在第几页放图片 (第一页为1)
            over.addImage(img); 
          } 
          stamp.close(); 
        } 
}  

注:需要itextpdf-5.4.5.jar包  

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.4.5</version>
</dependency>

 

public class Pdftest { public static void main(String[] args) throws Exception { PdfReader reader = new PdfReader("E:\src.pdf" );...

合并pdf
    pom.xml添加Jar依赖
        <!-- pdf处理jar依赖 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.12</version>
        </dependency>
        <澳门威呢斯人赌场,!-- pdf处理jar依赖 end -->

前言

从这一节初始内容聚集到操作现存的pdf文档,如何成立pdf文书档案已经在前五节中有了很详细的求证。这一大章的克罗地亚语名称叫Manipulating existing PDF documents,在定下这些名字在此以前出版社的提出是Editing PDF。不过PDF不是贰个切合编辑(edit)的文书档案格式,PDF是八个人作品表现的格式,和咱们平时用到的word不平等。在word中剧情是分布在不一样的页上,所以借使用不一样的应用程序张开内容就不太一样,比方对同三个文本片段用office张开会现身在页面X上,但一旦用Open Office展开就只怕会冒出在页面Y上,那也是豪门挑选PDF文档的理由之一。

在PDF文书档案中,不管用什么应用程序展开,文书档案中莫页的字符可能符号都有其定位地方。那是多少个优势但相应也是多个欠缺,要是大家目的在于将多个句子中的单词"edit"修改为"manipulate",那么我们不得不reflow文本,况且其后单词的地点都要重复计算。所以一旦我们要编写制定一个pdf文书档案最好的主意是从源头最早,比方您是用word调换工具将word调换为pdf,那么就先修改word中的内容然后再实行调换。这里为了呼应说法笔者就将manipulate说成操作,今后在我们对文书档案操作在此之前先要学会怎么读取八个pdf文书档案并赢得一些信息:如文书档案有个别许页啊,用的这种页面大小等等,这几个都得以经过PdfReader类来促成。

        <!-- pdf处理jar包依赖 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>4.2.1</version>
        </dependency>
        <!-- pdf处理jar包依赖 end -->    

Retrieving information about the document and its pages

在大家的首先个列子中大家会检查测验第1节生成的Pdf文书档案,具体代码如下:

listing 6.1 PageInformation.cs

public void Inspect(StreamWriter writer, string fileName)
{
    PdfReader reader = new PdfReader(fileName);
    writer.WriteLine(fileName);
    writer.Write("Number of pages: ");
    writer.WriteLine(reader.NumberOfPages);
    Rectangle mediabox = reader.GetPageSize(1);
    writer.Write("Size of page 1: [");
    writer.Write(mediabox.Left);
    writer.Write(',');
    writer.Write(mediabox.Bottom);
    writer.Write(',');
    writer.Write(mediabox.Right);
    writer.Write(',');
    writer.Write(mediabox.Top);
    writer.WriteLine("]");

    writer.Write("Rotation of page 1:");
    writer.WriteLine(reader.GetPageRotation(1));
    writer.Write("Page size with rotation of page 1: ");
    writer.WriteLine(reader.GetPageSizeWithRotation(1));
    writer.Write("Is rebuilt? ");
    writer.WriteLine(reader.IsRebuilt());
    writer.Write("Is encrypted? ");
    writer.WriteLine(reader.IsEncrypted());

    writer.WriteLine();
    writer.Flush();
}

以下为生育的文件文件内容:

results/part1/chapter01/hello_landscape1.pdf
Number of pages: 1
Size of page 1: [0.0,0.0,612.0,792.0]
Rotation of page 1: 90
Page size with rotation of page 1:
Rectangle: 792.0x612.0 (rot: 90 degrees)
Is rebuilt? false
Is encrypted? false

results/part1/chapter01/hello_landscape2.pdf
Number of pages: 1
Size of page 1: [0.0,0.0,792.0,612.0]
Rotation of page 1: 0
Page size with rotation of page 1:
Rectangle: 792.0x612.0 (rot: 0 degrees)
Is rebuilt? false
Is encrypted? false

results/part1/chapter03/movie_templates.pdf
Number of pages: 8
Size of page 1: [0.0,0.0,595.0,842.0]
Rotation of page 1: 90
Page size with rotation of page 1:
Rectangle: 842.0x595.0 (rot: 90 degrees)
Is rebuilt? false
Is encrypted? false

results/part1/chapter05/hero1.pdf
Number of pages: 1

Size of page 1: [-1192.0,-1685.0,1192.0,1685.0]
Rotation of page 1: 0
Page size with rotation of page 1:
Rectangle: 2384.0x3370.0 (rot: 0 degrees)
Is rebuilt? false
Is encrypted? false

在这一节中Pdf里德r中最珍视是NumberOfPages属性和GetPageSizeWithRotation方法,通过NumberOfPages属性我们能够对现存文书档案进行巡回操作,而后二个办法是GetPageSize方法和GetPageRotation方法的咬合。

package com.bjpowernode.p2p.admin.pdf;

PAGE SIZE

上述代码的前多个列子表明是转弹指两行代码的区分:

Document document = new Document(new Rectangle(792, 612));

Document document = new Document(PageSize.LETTER.Rotate());

其一差距在大家导出文档以及和存在文书档案增多十三分内容的时候有相当大的熏陶。大家还要小心的是终极三个列子中山大学家能够见到左下角的坐标不为(0,0)。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

BROKEN PDFS

但大家用Adobe Reader展开一个破坏的文书档案时,Adobe会有三个唤起:"There was an error opening this document. The file is damaged could not be repaire."。PdfReader类对于那几个文书档案的处理格局也是一致会抛出InvalidException至极还应该有部分老大的新闻"Rebuild failed:trailer not found;original message:PDF starxref not found"。假如这种景况发生了,那么iTex也就无法管理那个文书档案。

在别的情状下一旦文书档案损坏的不是很严重,Adobe Reader会自动修复并有以下警告提醒:"The file is damaged but is being repaired"。PdfReader也是同样的管理形式,具体到代码中能够用IsRebulid方法去检查评定PDF是或不是需求修补。那是破坏文书档案的管理方式,但我们还索要领悟加密文书档案的管理方式。

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:pdf增加图片的方法,读书笔记

关键词: 澳门威利斯人 所有随笔 编程语言 iTextSharp iText