Ahm*_*med 2 java pdf google-app-engine itext
我想使用itext库从java servlet中返回pdf文件中的一页(以减少文件大小下载).使用此代码
try {
PdfReader reader = new PdfReader(input);
Document document = new Document(reader.getPageSizeWithRotation(page_number) );
PdfSmartCopy copy1 = new PdfSmartCopy(document, response.getOutputStream());
copy1.setFullCompression();
document.open();
copy1.addPage(copy1.getImportedPage(reader, page_i) );
copy1.freeReader(reader);
reader.close();
document.close();
} catch (DocumentException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
此代码返回页面,但文件大小很大,有时等于原始文件大小,即使它只是一页.
我从您的存储库下载了一个文件:Abdomen.pdf
然后,我使用以下代码"破解"PDF:
public static void main(String[] args) throws DocumentException, IOException {
PdfReader reader = new PdfReader("resources/Abdomen.pdf");
int n = reader.getNumberOfPages();
reader.close();
String path;
PdfStamper stamper;
for (int i = 1; i <= n; i++) {
reader = new PdfReader("resources/abdomen.pdf");
reader.selectPages(String.valueOf(i));
path = String.format("results/abdomen/p-%s.pdf", i);
stamper = new PdfStamper(reader,new FileOutputStream(path));
stamper.close();
reader.close();
}
}
Run Code Online (Sandbox Code Playgroud)
"爆发"意味着在单独的页面中分割.虽然原始文件Abdomen.pdf是72,570 KB(大约70.8 MB),但单独的页面要小得多:

我无法重现你描述的问题.
| 归档时间: |
|
| 查看次数: |
8887 次 |
| 最近记录: |