我是靠谱客的博主 欣慰蛋挞,最近开发中收集的这篇文章主要介绍aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文件转换及在线预览

因为项目是做OA这一块,有很多附件需要实现在线预览附件,在网上也看了很多相关的资料。主要实现方式就是 (openoffice+swftools+flexpaper)和(aspose+pdfjs预览)。

主要步骤:

1.需要先将文档转换为PDF文件。

2.用pdfjs预览PDF文件

转换步骤:使用OpenOffice/Aspose 将ppt、word、excel、txt类型的文件转换为pdf

预览步骤:高版本浏览器上,使用pdf.js直接预览PDF文件

低版本浏览器上,使用swftools将PDF文件转换为swf文件,再使用flexpaper预览swf(没有做这个步骤)

组件安装:

Aspose

由于OpenOffice的转换效果并不太佳,这里选择了Aspose

在Aspose官网下载Aspose的Java版本,主要选择

Aspose.words

Aspose.cells(Excel)

Aspose.slides(PPT)

Aspose.pdf

下载完成后,在工程中引用jar包即可。

功能实现:

这里采用的所有组件版本为:

名称 版本

Aspose.words 16.8.0

Aspose.cells 9.0.0

Aspose.slides 116.7.0

Aspose.pdf 11.8.0

文档转换为PDF

使用Aspose进行文档转换很简单,直接引入相应的jar包,调用save方法,转换为PDF即可。

注意:使用Aspose时,每一个模块(words,cells)都可能有相同的类,如License类,SaveOptions类,SaveFormat类。而在各自模块使用时,一定要用对应模块的类,这个坑我已爬过。

使用Aspose时,需要每次进行转换操作前调用设置License方法。

水印功能

编辑卡片描述

部署Aspose附件转换服务,该服务主要功能是将系统中所有附件(格式为word、EXCEL、PPT、PDF)转换为H5页面,类似百度文库查看word附件的效果,转换的文件后,在系统打开附件时,呈现的效果就是在线阅览并且带有水印的模式

水印功能

Aspose.words之插入水印

1. 前言

继几个月前的word模板打印美化之后,最近又接到的一个需求是需要给由word转换为的pdf打上水印。经过几个小时的折腾发现直接在pdf打上的水印将下面的字体覆盖效果过于明显,试图插入背景图片又发现会被pdf自身的背景色给遮挡。无奈只能从源头的word入手。

2. 详解

以下就是核心代码了

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

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/**

* Inserts a watermark into a document. you need saved the doc by yourself.

*

* @param doc The input document file.

* @param watermarkText Text of the watermark.

*/

public static void insertWatermarkText(Document doc, String watermarkText){

// 居中

insertWatermarkText(doc, watermarkText, new Function() {

@Override

public Object apply(Shape watermark){

// Place the watermark in the page center.

watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);

watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);

watermark.setWrapType(WrapType.NONE); // TOP_BOTTOM : 将所设置位置的内容往上下顶出去

watermark.setVerticalAlignment(VerticalAlignment.CENTER);

watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);

return null;

}

});

// 顶部

insertWatermarkText(doc, watermarkText, new Function() {

@Override

public Object apply(Shape watermark){

watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);

watermark.setRelativeVerticalPosition(RelativeVerticalPosition.MARGIN);

watermark.setWrapType(WrapType.NONE);

// 我们需要自定义距离顶部的高度

// watermark.setVerticalAlignment(VerticalAlignment.TOP);

watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);

// 设置距离顶部的高度

watermark.setTop(160);

return null;

}

});

// 底部

insertWatermarkText(doc, watermarkText, new Function() {

@Override

public Object apply(Shape watermark){

watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);

watermark.setRelativeVerticalPosition(RelativeVerticalPosition.MARGIN);

watermark.setWrapType(WrapType.NONE);

// 我们需要自定义距离顶部的高度

// watermark.setVerticalAlignment(VerticalAlignment.BOTTOM);

watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);

// 设置距离顶部的高度

watermark.setTop(480);

return null;

}

});

}

private static void insertWatermarkText(Document doc, String watermarkText,

Function watermaskPositionConfigFunc){

// Create a watermark shape. This will be a WordArt shape.

// You are free to try other shape types as watermarks.

Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);

// Set up the text of the watermark.

watermark.getTextPath().setText(watermarkText);

// Set up the text of the watermark.

// 这里设置为宋体可以保证在转换为PDF时中文不是乱码.

watermark.getTextPath().setFontFamily("宋体");//Arial;

try {

// 水印大小

watermark.setWidth(200);

watermark.setHeight(50);

} catch (Exception e) {

throw new RuntimeException(e);

}

// Text will be directed from the bottom-left to the top-right corner.

// 左下到右上

watermark.setRotation(-40);

// Remove the following two lines if you need a solid black text.

final String colorStr = "E0E0E0";

watermark.getFill().setColor(new java.awt.Color(Integer.parseInt(colorStr, 16))); // Try Color.lightGray to get more Word-style watermark

watermark.setStrokeColor(new java.awt.Color(Integer.parseInt(colorStr, 16))); // Try Color.lightGray to get more Word-style watermark

// Place the watermark in the special location of page .

watermaskPositionConfigFunc.apply(watermark);

// Create a new paragraph and append the watermark to this paragraph.

Paragraph watermarkPara = new Paragraph(doc);

watermarkPara.appendChild(watermark);

// Insert the watermark into all headers of each document section.

for (Section sect : doc.getSections()) {

// There could be up to three different headers in each section, since we want

// the watermark to appear on all pages, insert into all headers.

insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);

// 以下注释掉不影响效果, 未作深入研究, 时间有限.

// insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST);

// insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN);

}

// 参考下API : https://apireference.aspose.com/java/words/com.aspose.words/ShapeBase

//watermark.setZOrder(-100);

}

private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect,

int headerType){

HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType);

if (header == null) {

// There is no header of the specified type in the current section, create it.

header = new HeaderFooter(sect.getDocument(), headerType);

sect.getHeadersFooters().add(header);

}

// Insert a clone of the watermark into the header.

try {

header.appendChild(watermarkPara.deepClone(true));

} catch (Exception e) {

throw new RuntimeException(e);

}

}

4. 效果

最后

以上就是欣慰蛋挞为你收集整理的aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能的全部内容,希望文章能够帮你解决aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部