我在我的java程序中使用iText来编辑现有的pdf.生成的pdf无法打开,它显示pdf header signature not found error.I我同时使用我的输入和输出文件.
private static String INPUTFILE = "/sample.pdf";
private static String OUTPUTFILE = "/sample.pdf";
public static void main(String[] args)
throws DocumentException,
IOException
{
Document doc = new Document();
PdfWriter writer = PdfWriter.getInstance(doc,new FileOutputStream(OUTPUTFILE));
doc.open();
PdfReader reader = new PdfReader(INPUTFILE);
int n;
n = reader.getNumberOfPages();
System.out.println("No. of Pages :" +n);
for (int i = 1; i <= n; i++)
{
if (i == 1)
{
Rectangle rect = new Rectangle(85,650,800,833);
PdfFormField pushbutton = PdfFormField.createPushButton(writer);
pushbutton.setWidget(rect, PdfAnnotation.HIGHLIGHT_PUSH);
PdfContentByte cb = writer.getDirectContent();
PdfAppearance app = cb.createAppearance(380,201);
app.rectangle(62,100,50,-1);
app.fill();
pushbutton.setAppearance(PdfAnnotation.APPEARANCE_NORMAL,app);
writer.addAnnotation(pushbutton);
PdfImportedPage page = writer.getImportedPage(reader, i);
Image instance = Image.getInstance(page);
doc.add(instance);
}
Run Code Online (Sandbox Code Playgroud)
然后尝试首先将输入文件重命名为.bak,然后读取.bak并编写.pdf。这可以给出错误是由于读取还是写入的线索。
Itext不是单个API,而是几个混合在一起的API。有时候很难。我做了:
关闭PdfReader和FileInputStream。
同时关闭Document和PdfWriter。
您可能是从空白源或无效的pdf文件导入的,对于我来说pdfCopy无法正常工作,因此这是我使用的代码。
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, OutputStream );
PdfReader reader = new PdfReader(dato.getBinaryStream());
PdfImportedPage page1 = writer.getImportedPage(reader, 1);
PdfContentByte cb = writer.getDirectContent();
cb.addTemplate(page1, 1, 0, 0, 1, 0, 0);
document.setPageSize(new Rectangle(page1.getWidth(),page1.getHeight()) );
Run Code Online (Sandbox Code Playgroud)
...
这应该工作。
| 归档时间: |
|
| 查看次数: |
67696 次 |
| 最近记录: |