Bagaimana cara mengatasi kesalahan tanda tangan header pdf tidak ditemukan?

Saya menggunakan iText dalam program java saya untuk mengedit pdf yang ada. pdf yang dihasilkan tidak dapat dibuka dan itu menunjukkan tanda tangan header pdf tidak ditemukan kesalahan.

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);
                }

Kemudian cobalah pada awalnya mengganti nama file input menjadi .bak, dan membaca .bak, dan menulis .pdf. Hal itu bisa memberikan petunjuk apakah kesalahannya ada pada pembacaan atau penulisan.

Itext bukanlah API tunggal, tetapi beberapa API, yang dicampur menjadi satu. Terkadang cukup sulit. Saya sudah melakukannya:

Tutup kedua PdfReader dan FileInputStream.

Tutup kedua Dokumen dan PdfWriter.

Komentar (2)

Anda mungkin mengimpor dari sumber kosong, atau file pdf yang tidak valid, dalam kasus saya pdfCopy tidak berfungsi, jadi inilah kode yang saya gunakan.

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()) );

...

Ini seharusnya bekerja.

Komentar (0)

Anda harus menggunakan PdfCopy alih-alih PdfWriter.getInstance, karena jika tidak, Anda gagal memperbarui referensi objek PDF.

Selain itu, alih-alih menambahkan Gambar ke dokumen, Anda dapat menggunakan metode PdfCopy.addPage, yang menerima PdfImportedPage sebagai parameter.


Document doc = new Document();
PdfCopy writer = new PdfCopy(doc,new FileOutputStream(OUTPUTFILE));
doc.open();
PdfReader reader = new PdfReader(INPUTFILE);
int n = reader.getNumberOfPages();
System.out.println("No. of Pages :" +n);
for (int i = 1; i 
Komentar (0)