还不知道PDF怎么转Word吗 ,本文将提供完整的PDF转Word方案 ,包括离线 、在线或者SDK API等各种方式,总有一款满足您的需求 。
什么是PDF转Word?
PDF是出版和图形领域的软件厂商Adobe制定的电子文档格式标准 。PDF转Word就是把PDF文档中的文字 ,图片 ,表格 ,注释等等文档元素相对应的转换成Word文档中相对应的文档元素。
所谓PDF转Word就是指从PDF格式文档中提取文字 、图形和及其它内容并放入Word或者其他格式文档中(也可以是其他文件格式 ,如Excel/PPT/HTML/IMAGE等) ,无需重新排版 ,支持图文混合排版 ,因此你就能重复利用你的PDF文档内容 ,在Word中再编辑或者重整布局 。
PDF文档为什么需要转成Word?
PDF是一种适合分享传播的文件格式 ,跨平台打开能够保持一致性,很受用户欢迎 。但是PDF文档很难进行编辑修改 ,如果您需要对PDF进行编辑 ,就需要将PDF转换为WORD,转换后用WPS或者Office就可以进行编辑修改了 。
如果您对PDF的文件格式感兴趣 ,可以看下PDF科普文章,详细了解一下 。
PDF转Word的三大方法
PDF转Word一般来说有三种方式 ,下面我们就来一一介绍下吧,您可以根据需要选用不同的方式 。
1. 传统PC端软件PDF转Word
本方法就是下载一个PDF软件到桌面 ,并安装 。安装之后就可以离线使用了 。
你可以下载Adobe Acrobat Pro试用版 ,有7天的免费试用期 ,Acrobat Pro一次性费用大概1800元左右
Aodbe公司是PDF标准的制定者 ,Acrobat Pro功能强大 ,除了贵没有太多毛病
适用人群和场景:
如果您对PDF处理的准确性和性能要求很高 ,高频对PDF进行各种处理 ,对数据安全要求页比较高 ,而且不差钱 ,可以购买Acrobat Pro
Acrobat Pro的PDF转Word功能比较强大,转换的效果还原度很高 ,基本上可以做到99.9%的还原效果
2. 在线转换或者小程序转换PDF文档
在线的PDF处理 ,就是在网站或者小程序上直接上传PDF文件,在线处理完毕之后 ,下载到本地 。
目前在线的PDF处理有免费和收费两种 ,收费的一般开放一个小额的试用,比如1兆大小 ,10页等 ,然后引导到收费 。免费的一般没有太多限制。
拿 pdf88.cn上的PDF转Word来说 ,这是一个完美免费的PDF转Word工具 ,只需要4步就能实现PDF在线转换 。
第一步:打开PDF工具箱PDF转Word
第二步:上传PDF文件
通过选择文件或者将PDf文件拖拽到上述区域(支持doc或者docx格式的word文件)
可以上传1个或者多个PDF文件
第三步点击转换为Word按钮
第四步下载
看到没有 ,已经成功转为为docx的word格式 ,里面的文本 、图片都可以随意编辑修改 。Perfect!
在线PDF转Word的效果如何?
目前来说 ,只有Adobe原生的Acrobat软件对PDF的编辑 、转Word是最完美 、损耗最少的。
但是Acrobat只适合不差钱的大公司 ,一般用户都会选择免费的PDF转换器来进行转换 ,我们来对比下各种PDF格式下转换的效果如何(图片 、表格 、注释等)
我们来对比下不同PDF下的word转换效果
1. 纯文本+图片类型的
上面的示例就是纯文本+图片格式的,转换效果还是不错的 ,字体大小 、颜色 、布局、图片位置等 ,基本无差别的
2.带有简单表格的PDF文档
怎么样,效果还是不错的吧 ,完美还原了表格 ,100%可编辑
3.复杂表格和混合编排的PDF
看完了纯文本和表格,我们来看下更复杂点的例子
具体转换效果对比可以查看上一篇文章
适用人群和场景:
在线PDF转换Word需要在线使用 ,一般是对数据安全没有非常强的诉求 ,同时非高频的PDF处理编辑 ,而且对价格比较敏感 ,那么PDF88的各种处理工具 ,能够满足您大部分的PDF处理诉求 。
3. 技术派:三方类库或者API实现PDF转Word
技术派的PDF处理就是用第三方类库或者OpenAPI ,对pdf进行处理 ,一般是需要批量自动的处理PDF文件时 ,通过类库和API就能大量的减少时间 。目前PDF的处理类库较多 ,我们选择几个有代表的来说下。
开源类库
pdfbox Java类库
PDFBox是一个BSD许可下的源码开放项目,为开发人员读取和创建PDF文档而准备的纯Java类库 。
地址在 https://pdfbox.apache.org/ 社区比较活跃 ,更新速度较快
代码示例
pdfbox 转换效果一般 ,对复杂的PDF格式,还原度较差 ,感兴趣的可以自己测试下!
itext Java类库
iText是著名的开放源码的站点sourceforge一个项目 ,是用于生成PDF文档的一个java类库 。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML 、Html文件转化为PDF文件 。
iText的安装非常方便 ,下载iText.jar文件后 ,只需要在系统的CLASSPATH中加入iText.jar的路径 ,在程序中就可以使用iText类库了 。或者直接在mavan中引入坐标
地址 https://github.com/itext/itext7
同时itext也有收费的版本 还有一个.net的itext版本
代码
import java.io.File;
import java.io.FileOutputStream;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.rtf.RtfWriter2;
public class ReadPdfFile {
public static void main(String[] args) {
try {
Document document = new Document();
File file = new File("file.doc");
if(!file.exists())
file.createNewFile();
RtfWriter2.getInstance(document, new FileOutputStream("file.doc"));
System.out.println("file created");
document.open();
PdfReader reader = new PdfReader("test.jar");
int n = reader.getNumberOfPages();
System.out.println("total no of pages:::"+n);
String s="";
for(int i=1;i<=n;i++)
{
s=PdfTextExtractor.getTextFromPage(reader, i);
System.out.println("string:::"+s);
System.out.println("====================");
document.add(new Paragraph(s));
document.newPage();
}
document.close();
System.out.println("completed");
} catch (Exception de) {}
}
}
pdf.js JavaScript类库
准确的说pdf.js更多的用户前端的PDF展示和渲染 ,提供了pdf的读写api
地址 https://github.com/mozilla/pdf.js#online-demo
如果您要用来生成PDF ,需要做大量的额外工作 ,不建议使用!
收费类库:
说完了免费的开源类库 ,下面说说收费的PDF类库 。
开源类库效果一般 ,处理复杂的图标格式的PDF 有点力不从心 ,收费PDF是商业化软件,可以处理复杂的格式文件 ,但一般费用比较高,用于商业化用途较多 。
aspose
Aspose 是一家致力于办公组件的提供商 ,数千机构都有用过aspose组件,包括微软 、IBM、普华永道 、安永 、杜邦、希尔顿酒店 、读者文摘 、美洲银行 、波音 、西门子等 。Aspose目前旗下一共有41个控件 ,Aspose.Total是它的总套包 。
能够用来处理PDF的是Aspose.PDF 工具包 ,支持java .net C++等,价格昂贵 ,一个授权1199美金起!
import com.aspose.pdf.DocSaveOptions;
import com.aspose.pdf.Document;
import com.aspose.pdf.SaveFormat;
import com.aspose.pdf.examples.Utils;
public class ConvertPDFToDOCOrDOCXFormat {
public static void main(String[] args) {
runExamples();
}
public static void runExamples() {
// The paths to resources and output directories.
String testID = "com/aspose/pdf/examples/AsposePdf/Conversion/pdftodoc/";
String dataDir = Utils.getDataDir(testID);
String outputDir = Utils.getOutDir(testID);
System.out.println("============================");
System.out.println("Example savingToDoc start");
savingToDoc(dataDir, outputDir);
System.out.println("Example savingToDoc end");
System.out.println("============================");
System.out.println("Example savingToDOCX start");
savingToDOCX(dataDir, outputDir);
System.out.println("Example savingToDOCX end");
System.out.println("============================");
System.out.println("Example usingTheDocSaveOptionsClass start");
usingTheDocSaveOptionsClass(dataDir, outputDir);
System.out.println("Example usingTheDocSaveOptionsClass end");
}
public static void savingToDoc(String dataDir, String outputDir) {
// Open the source PDF document
Document pdfDocument = new Document(dataDir + "input2.pdf");
// Save the file into Microsoft document format
pdfDocument.save(outputDir + "TableHeightIssue.doc", SaveFormat.Doc);
}
public static void savingToDOCX(String dataDir, String outputDir) {
// Load source PDF file
Document doc = new Document(dataDir + "input.pdf");
// Instantiate Doc SaveOptions instance
DocSaveOptions saveOptions = new DocSaveOptions();
// Set output file format as DOCX
saveOptions.setFormat(DocSaveOptions.DocFormat.DocX);
// Save resultant DOCX file
doc.save(outputDir + "savingToDOCX.docx", saveOptions);
}
public static void usingTheDocSaveOptionsClass(String dataDir, String outputDir) {
// Open a document
// Path of input PDF document
String filePath = dataDir + "source.pdf";
// Instantiate the Document object
Document document = new Document(filePath);
// Create DocSaveOptions object
DocSaveOptions saveOption = new DocSaveOptions();
// Set the recognition mode as Flow
saveOption.setMode(DocSaveOptions.RecognitionMode.Flow);
// Set the Horizontal proximity as 2.5
saveOption.setRelativeHorizontalProximity(2.5f);
// Enable the value to recognize bullets during conversion process
saveOption.setRecognizeBullets(true);
// Save the resultant DOC file
document.save(outputDir + "usingTheDocSaveOptionsClass.doc", saveOption);
}
}
pdf-tools
pdf-tools是一家瑞士的pdf解决方案服务商 ,提供了pdf sdk的整合方案!
PDF-tools支持30天免费试用 ,支持java .net c++等多种语言 ,大家可以下载下来自己试用下!
pdftron
PDFTron SDK是一个技术平台 ,为任何软件提供PDF 、CAD和MS Office功能 。这是构建文档功能的一种更简单 、更快的方式 ,使您的开发人员更高效 ,用户更快乐。和Aspose类似
代码案例
Convert.WordOutputOptions wordOutputOptions = new Convert.WordOutputOptions();
// Optionally convert only the first page
wordOutputOptions.setPages(1, 1);
// Requires the Structured Output module
Convert.toWord(filename, output_filename, wordOutputOptions);
foxit-pdf
foxit是一家专门从事PDF解决方案的供应商 ,为了实现成为PDF解决方案第一品牌的愿景 ,Foxit满足了三个不同细分市场的需求 。
foxit的高性能库使用最流行的开发人员语言和环境,为所有平台的企业 、移动和云应用程序添加了强大的PDF功能 。
结论:
PDF的解决方案 ,基本上就是上述三种 ,当然,每一种都有非常多的服务提供商 ,篇幅关系 ,没有一一列出。
大家可以根据自己的需要,选择不同的方案来使用!
如果是企业用户 ,对数据安全比较敏感 ,不差钱 ,建议 用adobe官方的Acrobat Pro
如果是个人用户 ,或者企业中对PDF处理不频繁 ,在线的处理工具就足够了 ,比如pdf88.cn提供了主流的PDF处理服务 。
如果对PDF有海量自动化处理的诉求 ,可以用SDK或者API来满足 ,小企业一般免费也差不多够了 ,如果追求性能,那就去购买昂贵的商业SDK ,或者使用破解版的!
声明:本站所有文章 ,如无特殊说明或标注,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 。