pdf页眉页脚删除在pdf文件里面是怎么添加的?

PDF文件中的页眉和页脚该怎么进行修改和编辑_帖子_OPPO手机官方社区
11:10 76 0
PDF文件中的页眉和页脚该怎么进行修改和编辑
一份完美的PDF文件不仅仅只文字和图片内容丰富,而且还包括其他各种元素。比如PDF文件中的页眉和页脚,如果PDF文件中缺少了页眉和页脚,这样我们就总会觉的PDF文件中缺少了什么。但是PDF文件中的页眉页脚该怎样修改和编辑呢?如果修改和编辑PDF文件,我们需要使用相对应的PDF文件才可以,所以我们要先下载一款PDF编辑软件,迅捷PDF编辑软件可以提供完整的PDF编辑功能,不单只能够对PDF文件当中的文本部分进行修改,更可以针对图像、样式、多媒体内容进行编辑。可以提供全新创建PDF文件功能,支持创建全新的PDF文件,并从头开始编辑一份完整的PDF资料,而且迅捷PDF编辑软件操作起来也比较简单方便。1、首先我们先搜索迅捷PDF编辑器,然后下载安装迅捷pdf编辑软件2、安装完成之后我们就可以开始编辑操作了,先单击一个pdf文件鼠标右击后选择用编辑器打开文件,这样我们可以同时打开工具和文件。3、文件打开后我们可以清楚的看到,这时我们现找到添加页眉页脚功能。单击文档——页眉页脚,选择添加。4、单击后会出现一个对话框,我们在这里先选择要添加页眉页脚的位置,然后输入要添加的内容。5、输入完成之后我们可以在预览页面看到,如果没有错的话单击确认按钮页眉页脚就可以添加完成了。6、这时候我们可以看到添加的效果,选中页眉/页脚还可以在右边对其属性进行设置,最后我们只要将文件保存下来就可以了。以上就是编辑和修改PDF文件中页眉页脚的具体步骤了,我们感兴趣的话可以学习一下,当然如果我们还有什么简单的方法,我们也可以互相分享和借鉴一下。
本次发糖数
关于我们:PDF文件处理技巧:如何在PDF上添加水印以及页眉页脚
因排版不会发生变化以及安全性高,PDF文件在职场中,可谓是神器一般的存在。不管是传输文件给他人,还是对文件进行归档整理。都会选择使用PDF作为保存格式。那么在对系列PDF文件进行归档的时候,就需要给文件添加页眉页脚。在对PDF文件的所有权做出保护的时候,则需要给文件添加水印。PDF文件编辑需要使用专门的PDF编辑器,像Office之类的办公软件无法编辑。
今天我们给大家分享一个通过迅捷PDF编辑器,实现PDF文件添加页眉页脚以及水印的方法。
一、如何添加页眉页脚
1.点击左上方工具栏的“文件”,导入需要编辑的文件。
2.在上方菜单栏,点击“文档”,点击子菜单的“页眉页脚”,点击子菜单的“添加”,进入页眉页脚编辑界面。
3.在文本项可以对页眉页脚进行编辑,并在预览项可以对生成的页眉页脚进行预览。
4.在字体项可以对字体、字形、字号、颜色等作出调整,之后点击确定保存方案。
5.给页眉页脚添加时间以及页码,选中一项页眉或页脚,点击插入日期或者插入页码。如下图所示,点击插入之后,相应的页眉页脚的文字后会出现一段代码,代表着时间以及页数。
6.调整完成之后点击确定保存方案,我们来看一下添加完成之后的效果。
二、如何添加水印
1.在上方菜单栏点击“文档”,点击子菜单中的“水印”、“添加”,进入添加水印界面。
2.默认的水印方式为文本,在下面的文本框可以编辑水印内容。
3.外观以及布局选项,可以对文字的字形、字号、颜色、水印位置等作出调整。
4.点击文字水印编辑框右边的功能按钮,可以输入其他类型文字水印。
5.点击添加水印窗口中的“类型”项,将文字切换为文件,即可上传图片水印。
6.从“外观”以及“布局选项”中,可以对图片水印的透明度、倾斜角度、位置以及大小做出调整。
以上即为通过迅捷PDF编辑器添加PDF文件页眉页脚以及水印的方法,希望能帮上大家。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点  由于上一篇自定义生成pdf的功能需求又增加了,需要加上页码。所以本博客诞生了~
  1. 通过继承PdfPageEventHelper类,实现需要实现的方法
import com.lowagie.text.D
import com.lowagie.text.E
import com.lowagie.text.P
import com.lowagie.text.R
import com.lowagie.text.pdf.ColumnT
import com.lowagie.text.pdf.PdfPageEventH
import com.lowagie.text.pdf.PdfW
public class PdfBuilder extends PdfPageEventHelper {
  // 当当前页面开始加载时,触发(页眉)
public void onStartPage(PdfWriter writer, Document document) {
// TODO Auto-generated method stub
super.onStartPage(writer, document);
  // 当当前页面初始化完成,切入document之前触发(页脚)
public void onEndPage(PdfWriter writer, Document document) {
Rectangle rect = new Rectangle(<span style="color: #, <span style="color: #, <span style="color: #, <span style="color: #);
// ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER,
// new Phrase(String.format("
", writer.getPageNumber())), (rect.getLeft() + rect.getRight()) / 2,
// rect.getBottom() - 18, 0);
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_BOTTOM,
new Phrase(String.format("- %d -", writer.getPageNumber())), (rect.getLeft() + rect.getRight()) / <span style="color: #,
rect.getBottom() - <span style="color: #, <span style="color: #);
tip: writer.getPageNumber();能够获取到当前页面的页码2. 重写一下ITextRenderer类
import java.awt.D
import java.awt.R
import java.awt.S
import java.io.BufferedR
import java.io.F
import java.io.IOE
import java.io.OutputS
import java.io.StringR
import java.io.StringW
import java.io.UnsupportedEncodingE
import java.io.W
import java.util.L
import java.util.regex.P
import javax.xml.transform.OutputK
import javax.xml.transform.T
import javax.xml.transform.TransformerConfigurationE
import javax.xml.transform.TransformerE
import javax.xml.transform.TransformerF
import javax.xml.transform.dom.DOMS
import javax.xml.transform.stream.StreamR
import org.w3c.dom.D
import org.w3c.dom.E
import org.w3c.dom.N
import org.xhtmlrenderer.css.style.CalculatedS
import org.xhtmlrenderer.extend.NamespaceH
import org.xhtmlrenderer.extend.UserI
import org.xhtmlrenderer.layout.BoxB
import org.xhtmlrenderer.layout.L
import org.xhtmlrenderer.layout.LayoutC
import org.xhtmlrenderer.layout.SharedC
import org.xhtmlrenderer.pdf.ITextFontC
import org.xhtmlrenderer.pdf.ITextFontR
import org.xhtmlrenderer.pdf.ITextOutputD
import org.xhtmlrenderer.pdf.ITextR
import org.xhtmlrenderer.pdf.ITextReplacedElementF
import org.xhtmlrenderer.pdf.ITextTextR
import org.xhtmlrenderer.pdf.ITextUserA
import org.xhtmlrenderer.pdf.PDFCreationL
import org.xhtmlrenderer.pdf.PDFE
import org.xhtmlrenderer.render.BlockB
import org.xhtmlrenderer.render.PageB
import org.xhtmlrenderer.render.RenderingC
import org.xhtmlrenderer.render.ViewportB
import org.xhtmlrenderer.resource.XMLR
import org.xhtmlrenderer.simple.extend.XhtmlNamespaceH
import org.xhtmlrenderer.util.C
import org.xml.sax.InputS
import com.lowagie.text.DocumentE
import com.lowagie.text.pdf.PdfPageE
import com.lowagie.text.pdf.PdfW
public class ITextRenderer2 {
private ITextRenderer iTextRenderer = null;
// These two defaults combine to produce an effective resolution of 96 px to the inch
private static final float DEFAULT_DOTS_PER_POINT = 20f * 4f / 3f;
private static final int DEFAULT_DOTS_PER_PIXEL = <span style="color: #;
private SharedContext _sharedC
private ITextOutputDevice _outputD
private Document _
private BlockBox _
private float _dotsPerP
private com.lowagie.text.Document _pdfD
private PdfWriter _
private PDFEncryption _pdfE
// note: not hard-coding a default version in the _pdfVersion field as this may change between iText releases
// check for null before calling writer.setPdfVersion()
// use one of the values in PDFWriter.VERSION...
private Character _pdfV
private char[] validPdfVersions = new char[] { PdfWriter.VERSION_1_2, PdfWriter.VERSION_1_3, PdfWriter.VERSION_1_4,
PdfWriter.VERSION_1_5, PdfWriter.VERSION_1_6, PdfWriter.VERSION_1_7 };
private PDFCreationListener _
private PdfPageEvent pdfPageE
public ITextRenderer2(ITextRenderer iTextRenderer) {
this(DEFAULT_DOTS_PER_POINT, DEFAULT_DOTS_PER_PIXEL);
this.iTextRenderer = iTextR
public ITextRenderer2() {
this(DEFAULT_DOTS_PER_POINT, DEFAULT_DOTS_PER_PIXEL);
public ITextRenderer2(float dotsPerPoint, int dotsPerPixel) {
_dotsPerPoint = dotsPerP
_outputDevice = new ITextOutputDevice(_dotsPerPoint);
ITextUserAgent userAgent = new ITextUserAgent(_outputDevice);
_sharedContext = new SharedContext(userAgent);
userAgent.setSharedContext(_sharedContext);
_outputDevice.setSharedContext(_sharedContext);
ITextFontResolver fontResolver = new ITextFontResolver(_sharedContext);
_sharedContext.setFontResolver(fontResolver);
ITextReplacedElementFactory replacedElementFactory = new ITextReplacedElementFactory(_outputDevice);
_sharedContext.setReplacedElementFactory(replacedElementFactory);
_sharedContext.setTextRenderer(new ITextTextRenderer());
_sharedContext.setDPI(<span style="color: # * _dotsPerPoint);
_sharedContext.setDotsPerPixel(dotsPerPixel);
_sharedContext.setPrint(true);
_sharedContext.setInteractive(false);
public PdfPageEvent getPdfPageEvent() {
return pdfPageE
public void setPdfPageEvent(PdfPageEvent pdfPageEvent) {
this.pdfPageEvent = pdfPageE
public ITextFontResolver getFontResolver() {
return (ITextFontResolver) _sharedContext.getFontResolver();
private Document loadDocument(final String uri) {
return _sharedContext.getUac().getXMLResource(uri).getDocument();
public void setDocument(String uri) {
setDocument(loadDocument(uri), uri);
public void setDocument(Document doc, String url) {
setDocument(doc, url, new XhtmlNamespaceHandler());
public void setDocument(File file) throws IOException {
File parent = file.getAbsoluteFile().getParentFile();
setDocument(loadDocument(file.toURI().toURL().toExternalForm()), (parent == null ? "" : parent.toURI().toURL()
.toExternalForm()));
public void setDocumentFromString(String content) {
InputSource is = new InputSource(new BufferedReader(new StringReader(content)));
Document dom = XMLResource.load(is).getDocument();
setDocument(dom, null);
public void setDocument(Document doc, String url, NamespaceHandler nsh) {
getFontResolver().flushFontFaceFonts();
_sharedContext.reset();
if (Configuration.isTrue("xr.cache.stylesheets", true)) {
_sharedContext.getCss().flushStyleSheets();
_sharedContext.getCss().flushAllStyleSheets();
_sharedContext.setBaseURL(url);
_sharedContext.setNamespaceHandler(nsh);
_sharedContext.getCss().setDocumentContext(_sharedContext, _sharedContext.getNamespaceHandler(), doc,
new NullUserInterface());
getFontResolver().importFontFaces(_sharedContext.getCss().getFontFaceRules());
public PDFEncryption getPDFEncryption() {
return _pdfE
public void setPDFEncryption(PDFEncryption pdfEncryption) {
_pdfEncryption = pdfE
public void setPDFVersion(char _v) {
for (int i = <span style="color: #; i & validPdfVersions. i++) {
if (_v == validPdfVersions[i]) {
_pdfVersion = new Character(_v);
throw new IllegalArgumentException("Invalid PDF use "
+ "valid constants from PdfWriter (e.g. PdfWriter.VERSION_1_2)");
public char getPDFVersion() {
return _pdfVersion == null ? '<span style="color: #' : _pdfVersion.charValue();
public void layout() {
LayoutContext c = newLayoutContext();
BlockBox root = BoxBuilder.createRootBox(c, _doc);
root.setContainingBlock(new ViewportBox(getInitialExtents(c)));
root.layout(c);
Dimension dim = root.getLayer().getPaintingDimension(c);
root.getLayer().trimEmptyPages(c, dim.height);
root.getLayer().layoutPages(c);
private Rectangle getInitialExtents(LayoutContext c) {
PageBox first = Layer.createPageBox(c, "first");
return new Rectangle(<span style="color: #, <span style="color: #, first.getContentWidth(c), first.getContentHeight(c));
private RenderingContext newRenderingContext() {
RenderingContext result = _sharedContext.newRenderingContextInstance();
result.setFontContext(new ITextFontContext());
result.setOutputDevice(_outputDevice);
_sharedContext.getTextRenderer().setup(result.getFontContext());
result.setRootLayer(_root.getLayer());
private LayoutContext newLayoutContext() {
LayoutContext result = _sharedContext.newLayoutContextInstance();
result.setFontContext(new ITextFontContext());
_sharedContext.getTextRenderer().setup(result.getFontContext());
public void createPDF(OutputStream os) throws DocumentException {
createPDF(os, true, <span style="color: #);
public void writeNextDocument() throws DocumentException {
writeNextDocument(<span style="color: #);
public void writeNextDocument(int initialPageNo) throws DocumentException {
List pages = _root.getLayer().getPages();
RenderingContext c = newRenderingContext();
c.setInitialPageNo(initialPageNo);
PageBox firstPage = (PageBox) pages.get(<span style="color: #);
com.lowagie.text.Rectangle firstPageSize = new com.lowagie.text.Rectangle(<span style="color: #, <span style="color: #, firstPage.getWidth(c)
/ _dotsPerPoint, firstPage.getHeight(c) / _dotsPerPoint);
_outputDevice.setStartPageNo(_writer.getPageNumber());
_pdfDoc.setPageSize(firstPageSize);
_pdfDoc.newPage();
writePDF(pages, c, firstPageSize, _pdfDoc, _writer);
public void finishPDF() {
if (_pdfDoc != null) {
fireOnClose();
_pdfDoc.close();
public void createPDF(OutputStream os, boolean finish) throws DocumentException {
createPDF(os, finish, <span style="color: #);
* &B&NOTE:&/B& Caller is responsible for cleaning up the OutputStream if something goes wrong.
public void createPDF(OutputStream os, boolean finish, int initialPageNo) throws DocumentException {
List pages = _root.getLayer().getPages();
RenderingContext c = newRenderingContext();
c.setInitialPageNo(initialPageNo);
PageBox firstPage = (PageBox) pages.get(<span style="color: #);
com.lowagie.text.Rectangle firstPageSize = new com.lowagie.text.Rectangle(<span style="color: #, <span style="color: #, firstPage.getWidth(c)
/ _dotsPerPoint, firstPage.getHeight(c) / _dotsPerPoint);
com.lowagie.text.Document doc = new com.lowagie.text.Document(firstPageSize, <span style="color: #, <span style="color: #, <span style="color: #, <span style="color: #);
PdfWriter writer = PdfWriter.getInstance(doc, os);
if (_pdfVersion != null) {
writer.setPdfVersion(_pdfVersion.charValue());
if (_pdfEncryption != null) {
writer.setEncryption(_pdfEncryption.getUserPassword(), _pdfEncryption.getOwnerPassword(),
_pdfEncryption.getAllowedPrivileges(), _pdfEncryption.getEncryptionType());
firePreOpen();
if (pdfPageEvent != null) {
writer.setPageEvent(pdfPageEvent);
doc.open();
writePDF(pages, c, firstPageSize, doc, writer);
if (finish) {
fireOnClose();
doc.close();
private void firePreOpen() {
if (_listener != null) {
_listener.preOpen(iTextRenderer);
private void fireOnClose() {
if (_listener != null) {
_listener.onClose(iTextRenderer);
private void writePDF(List pages, RenderingContext c, com.lowagie.text.Rectangle firstPageSize,
com.lowagie.text.Document doc, PdfWriter writer) throws DocumentException {
_outputDevice.setRoot(_root);
_outputDevice.start(_doc);
_outputDevice.setWriter(writer);
_outputDevice.initializePage(writer.getDirectContent(), firstPageSize.getHeight());
_root.getLayer().assignPagePaintingPositions(c, Layer.PAGED_MODE_PRINT);
int pageCount = _root.getLayer().getPages().size();
c.setPageCount(pageCount);
for (int i = <span style="color: #; i & pageC i++) {
PageBox currentPage = (PageBox) pages.get(i);
c.setPage(i, currentPage);
paintPage(c, writer, currentPage);
_outputDevice.finishPage();
if (i != pageCount - <span style="color: #) {
PageBox nextPage = (PageBox) pages.get(i + <span style="color: #);
com.lowagie.text.Rectangle nextPageSize = new com.lowagie.text.Rectangle(<span style="color: #, <span style="color: #, nextPage.getWidth(c)
/ _dotsPerPoint, nextPage.getHeight(c) / _dotsPerPoint);
doc.setPageSize(nextPageSize);
doc.newPage();
_outputDevice.initializePage(writer.getDirectContent(), nextPageSize.getHeight());
_outputDevice.finish(c, _root);
private void paintPage(RenderingContext c, PdfWriter writer, PageBox page) {
provideMetadataToPage(writer, page);
page.paintBackground(c, <span style="color: #, Layer.PAGED_MODE_PRINT);
page.paintMarginAreas(c, <span style="color: #, Layer.PAGED_MODE_PRINT);
page.paintBorder(c, <span style="color: #, Layer.PAGED_MODE_PRINT);
Shape working = _outputDevice.getClip();
Rectangle content = page.getPrintClippingBounds(c);
_outputDevice.clip(content);
int top = -page.getPaintingTop() + page.getMarginBorderPadding(c, CalculatedStyle.TOP);
int left = page.getMarginBorderPadding(c, CalculatedStyle.LEFT);
_outputDevice.translate(left, top);
_root.getLayer().paint(c);
_outputDevice.translate(-left, -top);
_outputDevice.setClip(working);
private void provideMetadataToPage(PdfWriter writer, PageBox page) {
byte[] metadata = null;
if (page.getMetadata() != null) {
String metadataBody = stringfyMetadata(page.getMetadata());
if (metadataBody != null) {
metadata = createXPacket(stringfyMetadata(page.getMetadata())).getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
// Can't happen
throw new RuntimeException(e);
writer.setPageXmpMetadata(metadata);
private String stringfyMetadata(Element element) {
Element target = getFirstChildElement(element);
if (target == null) {
return null;
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter output = new StringWriter();
transformer.transform(new DOMSource(target), new StreamResult(output));
return output.toString();
} catch (TransformerConfigurationException e) {
// Things must be in pretty bad shape to get here so
// rethrow as runtime exception
throw new RuntimeException(e);
} catch (TransformerException e) {
throw new RuntimeException(e);
private static Element getFirstChildElement(Element element) {
Node n = element.getFirstChild();
while (n != null) {
if (n.getNodeType() == Node.ELEMENT_NODE) {
return (Element)
n = n.getNextSibling();
return null;
private String createXPacket(String metadata) {
StringBuffer result = new StringBuffer(metadata.length() + <span style="color: #);
result.append("&?xpacket begin='\uFEFF' id='W5M0MpCehiHzreSzNTczkc9d'?&\n");
result.append(metadata);
result.append("\n&?xpacket end='r'?&");
return result.toString();
public ITextOutputDevice getOutputDevice() {
return _outputD
public SharedContext getSharedContext() {
return _sharedC
public void exportText(Writer writer) throws IOException {
RenderingContext c = newRenderingContext();
c.setPageCount(_root.getLayer().getPages().size());
_root.exportText(c, writer);
public BlockBox getRootBox() {
public float getDotsPerPoint() {
return _dotsPerP
public List findPagePositionsByID(Pattern pattern) {
return _outputDevice.findPagePositionsByID(newLayoutContext(), pattern);
private static final class NullUserInterface implements UserInterface {
public boolean isHover(Element e) {
return false;
public boolean isActive(Element e) {
return false;
public boolean isFocus(Element e) {
return false;
public PDFCreationListener getListener() {
public void setListener(PDFCreationListener listener) {
_listener =
public PdfWriter getWriter() {
  tip: 由于继承无法获取部分私有变量和方法,动态代理方式在此处不可用,因而选择重写该类,在重写的类ITextRenderer2中维护了一个ITextRenderer对象,使其内部功能正常执行,我们只需要为ITextRenderer2额外维护一个PdfPageEvent对象,然后在createPDF  方法中,非空赋值一下即可。注意为PdfWriter设置PdfPageEvent实现类的操作必须在document.open()之前。
  3. 拿到html文件,进行html转pdf操作
          String url = htmlFile.toURI().toURL().toString();
ITextRenderer2 renderer = new ITextRenderer2(new ITextRenderer());
renderer.setDocument(url);
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(pdfFont + File.separator + "SimSun.ttc", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
fontResolver
.addFont(pdfFont + File.separator + "Arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setPdfPageEvent(new PDFBuilder());
renderer.layout();
renderer.createPDF(fos);
  总结: 用了我的上一篇pdf生成技术()的童鞋,如果也碰到了这样的需求,可以参考一下本篇博客哦  代码改动量少,总共增加了2个类,改动了一行代码,即可完成pdf的页眉页脚的添加。
  通过这个例子,其实对于我们是有启示的,一种技术他能长久的在it行业中被大家一直所使用,不仅仅因为它自身功能的强大,也因为它在很多地方提供了可供程序员操作的接口或者类,使得这门技术能够不断适合程序员的需求,而一个技术即便功能再强大,在全面,不开放可供他人操作的入口,依旧会被淘汰,因为其自身不可能适合所有程序员,只有程序员知道自己所需要的,那么对于程序员来说,根据公司需求做出功能,我们则要谨记为功能安全的开放部分入口,这样以便在后期需求更新时,能够尽可能的不改变源代码的基础上进行需求更新,同时,也方便了其他同事进行功能增强等一系列操作。以上纯属本人个人见解,若有不足,还望赐教~
阅读(...) 评论()PDF文件的页眉页脚在哪里进行添加?_百度知道
PDF文件的页眉页脚在哪里进行添加?
给pdf文件添加页眉页脚怎么做的?...
给pdf文件添加页眉页脚怎么做的?
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
Foxit PDF Editor编辑PDF里面的文字: 1: 在Foxit PDF Editor 里双击想要修改的内容,就进入编辑状态,就可以进行修改了,再在工具栏里点击红色勾的按钮就可以保存此修改,在多处修改后再在菜单栏内选择保存,就可以了 2:就是先删除不要的文字,在点“对象”--“添加文本”,替换上去也行。这就是Foxit PDF Editor编辑PDF里面的文字,其实很简单的。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 pdf如何去掉页眉页脚 的文章

 

随机推荐