骨科医院网站优化服务商,桐梓住房和城乡建设部网站,如何做打码网站,网络科技一般经营什么客户有一个新的需求。控制用户下载文档的页数。比如。我设置只开放10页。那就要我们去做截取文档。pdf自带有实现的方式。docx暂时没找到开源的。我这边处理的docx。是通过转换成pdf。通过截取pdf后再转成docx去实现的 工具类如下#xff1a; import java.io.FileOutputStream…客户有一个新的需求。控制用户下载文档的页数。比如。我设置只开放10页。那就要我们去做截取文档。pdf自带有实现的方式。docx暂时没找到开源的。我这边处理的docx。是通过转换成pdf。通过截取pdf后再转成docx去实现的 工具类如下 import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfSmartCopy;/*** PDF工具类*/
public class PdfUtils {/*** 抽取PDF文件** param sourceFile 源PDF文件路径* param targetFile 目标PDF文件路径* param extractedPageNums 需要抽取的页码*/public static void extract(String sourceFile, String targetFile, ListInteger extractedPageNums) {Objects.requireNonNull(sourceFile);Objects.requireNonNull(targetFile);PdfReader reader null;Document document null;FileOutputStream outputStream null;PdfCopy pdfCopy null;try {// 读取源文件reader new PdfReader(sourceFile);// 创建新的文档document new Document();// 创建目标PDF文件outputStream new FileOutputStream(targetFile);pdfCopy new PdfSmartCopy(document, outputStream);// 获取源文件的页数int pages reader.getNumberOfPages();document.open();// 注意此处的页码是从1开始for (int page 1; page pages; page) {// 如果是指定的页码则进行复制if (extractedPageNums.contains(page)) {pdfCopy.addPage(pdfCopy.getImportedPage(reader, page));}}} catch (IOException | DocumentException e) {e.printStackTrace();} finally {if (reader ! null) {reader.close();}if (document ! null) {document.close();}if (outputStream ! null) {try {outputStream.flush();outputStream.close();} catch (IOException e) {e.printStackTrace();}}if(pdfCopy ! null){pdfCopy.flush();pdfCopy.close();}}}
}
如果想实现docx和pdf互转格式不变。请参考另一篇文章
java 实现docx和pdf互转并保留格式_王威振的csdn的博客-CSDN博客