1、使用PDFBox处理PDF文档PDF全称Portable Document Format,是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,可以在Windows、Unix或Mac OS等操作系统上通用。 PDF文件格式将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。如果要抽取其中的文本信息,需要根据它的文件格式来进行解析。幸好目前已经有不少工具能帮助我们做这些事情。 2、PDFBox的下载最常见的一种PDF文本抽取工具就是PDFBox了,访问网址http://sourceforge.net/projects/pdfbox/,进入如图7-1所示的下载界面。读者可以在该网页下载其最新的版本。本书采用的是PDFBox-0.7.3版本。PDFBox是一个开源的Java PDF库,这个库允许你访问PDF文件的各项信息。在接下来的例子中,将演示如何使用PDFBox提供的API,从一个PDF文件中提取出文本信息。 3、在Eclipse中配置以下是在Eclipse中创建工程,并建立解析PDF文件的工具类的过程。 (1)在Eclipse的workspace中创建一个普通的Java工程:ch7。 (2)把下载的PDFBox-0.7.3.zip解压。 (3)进入external目录下,可以看到,这里包括了PDFBox所有用到的外部包。复制下面的Jar包到工程ch7的lib目录下(如还未建立lib目录,则先创建一个)。 l bcmail-jdk14-132.jar l bcprov-jdk14-132.jar l checkstyle-all-4.2.jar l FontBox-0.1.0-dev.jar l lucene-core-2.0.0.jar 然后再从PDFBox的lib目录下,复制PDFBox-0.7.3.jar到工程的lib目录下。 (4)在工程上单击右键,在弹出的快捷菜单中选择“Build Path->Config Build Path->Add Jars”命令,把工程lib目录下面的包都加入工程的Build Path。 4、使用PDFBox解析PDF内容在刚刚创建的Eclipse工程中,创建一个ch7.pdfbox包,并创建一个PdfboxTest类。该类包含一个getText方法,用于从一个PDF中获取文本信息,其代码如下。 import java.io.BufferedWriter;import java.io.FileInputStream; import java.io.FileWriter; import org.pdfbox.pdfparser.PDFParser; import org.pdfbox.util.PDFTextStripper; public class PdfParser { /** * @param args */ // TODO 自动生成方法存根 public static void main(String[] args) throws Exception{ FileInputStream fis = new FileInputStream("F:\\task\\lerman-atem2001.pdf"); BufferedWriter writer = new BufferedWriter(new FileWriter("F:\\task\\pdf_change.txt")); PDFParser p = new PDFParser(fis); p.parse(); PDFTextStripper ts = new PDFTextStripper(); String s = ts.getText(p.getPDDocument()); writer.write(s); System.out.println(s); fis.close(); writer.close(); } } |
下面是自己按照书上的例子写的代码。

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

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139
