cuốn sách gpt4 ai đã làm

android - In PDF chứa hình ảnh JBIG2

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:48:54 39 4
mua khóa gpt4 Nike

Vui lòng gợi ý cho tôi một số thư viện có thể giúp tôi in các tệp PDF chứa hình ảnh được mã hóa JBIG2. Trình kết xuất PDF,Hộp PDF Không giúp được gì cho tôi. Các thư viện này có thể in các tệp PDF đơn giản, nhưng không thể in các tệp PDF chứa hình ảnh JBIG2. Trình kết xuất PDF Đã thử sửa nó (theo vấn đề lỗi trên trình theo dõi lỗi của PDFRedndrer), nhưng vẫn còn một số trang (đặc biệt là những trang có mã vạch) mà tôi không muốn in.

P.S. Tôi sử dụng nó trong một chương trình nhỏ javax.print API

Cảm ơn!

gia hạn: Tôi cũng đã thử ICEPdf, nhưng tôi không muốn làm việc.

Tôi đi đến kết luận rằng tất cả các thư viện này (PDFRenderer, ICEPdf, PDFBox) đều sử dụng JPedal bộ giải mã jbig2 .Lỗi (một số trang không in được) xuất phát từ thư viện giải mã này. Các phiên bản mã nguồn mở của codec này (dành cho PDFRenderer, ICEPdf, PDFBox) không còn được hỗ trợ nữa, nhưng JPedal Có một nhánh thương mại mới của dự án và họ viết rằng lỗi đã được sửa trong phiên bản thương mại mới, có giá 9000 USD.

Có ý tưởng gì không?

更新 2: Hôm qua tôi đã cố gắng thay thế Thư viện miễn phí của JPedalvới nguồn mở khác jbig2-imageiothư viện. Nhưng tôi không nhận được kết quả thành công nào, vì vậy tôi đã tìm kiếm trên trang dự án của họ (diễn đàn của google-code - đây) đã tạo một chủ đề mới trên. Bất kỳ trợ giúp sẽ được đánh giá rất cao.

tôi vẫn ở đây Hộp PDF của Apache Tìm thấy một số cuộc thảo luận hữu ích về trình theo dõi lỗi:đâyđây .

câu trả lời hay nhất

thông qua bạn trong ừm Các ý kiến ​​​​trong câu trả lời viz. "Nhưng tôi có thể sử dụng thư viện nào để trích xuất hình ảnh và (quan trọng hơn) đưa chúng trở lại định dạng PDF?"

Đây là một minh chứng đơn giản
1) Trích xuấtjbig2 Hoặc bạn có thể nóipdf Tất cả hình ảnh ở định dạng .
2) sẽ jbig2 Chuyển đổi hình ảnh sang bất kỳ định dạng nào khác, trong trường hợp của tôi là jpeg.
3) Tạo một gói chứajpeg 的新pdf.

Sử dụng thư viện jbig2-imageiovăn bản .

Trong ví dụ dưới đây, hãy thay đổitài nguyênđường dẫn thư mục.
Để làm điều này, tôi phải xem qua một số tài nguyên mà tôi sẽ đính kèm ở cuối. Hy vọng điều này sẽ giúp.

nhập com.itextpdf.text.Document;
nhập com.itextpdf.text.Image;
nhập com.itextpdf.text.pdf.PdfPCell;
nhập com.itextpdf.text.pdf.PdfPTable;
nhập com.itextpdf.text.pdf.PdfReader;
nhập com.itextpdf.text.pdf.PdfWriter;
nhập com.itextpdf.text.pdf.parser.*;

nhập com.levigo.jbig2.JBIG2ImageReader;
nhập com.levigo.jbig2.JBIG2ImageReaderSpi;
nhập com.levigo.jbig2.JBIG2ReadParam;
nhập com.levigo.jbig2.io.DefaultInputStreamFactory;

nhập java.awt.image.BufferedImage;
nhập java.io.*;
nhập javax.imageio.ImageIO;
nhập javax.imageio.stream.ImageInputStream;

lớp công khai JBig2Image {
đường dẫn tệp chuỗi riêng tư;
hình ảnh int riêng tư Index;

công khai JBig2Image() {
this.filepath = "/home/blackadmin/Desktop/pdf/demo18.jbig2";
this.imageIndex = 0;
extractImgFromPdf();
ConvertJBig2ToJpeg();
createPDF();
}

trích xuất khoảng trống riêng tưImgFromPdf() {
thử {
/////////// Trích xuất tất cả hình ảnh từ pdf //////////////////////////

Trình đọc PdfReader = PdfReader mới("/home/blackadmin/Desktop/pdf/orig.pdf");
Trình phân tích cú pháp PdfReaderContentParser = new PdfReaderContentParser(reader);
MyImageRenderListener listen = new MyImageRenderListener("/home/blackadmin/Desktop/pdf/demo%s.%s");
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
trình phân tích cú pháp.processContent(i, người nghe);
}
} bắt (IOException cũ) {
System.out.println(ex);
}
}

khoảng trống riêng tư chuyển đổiJBig2ToJpeg() {
InputStream inputStream = null;
thử {
///////// Đọc hình ảnh jbig2 ///////////////////////////////////////////////////// // //
inputStream = FileInputStream mới (Tệp mới (đường dẫn tệp));
DefaultInputStreamFactory disf = new DefaultInputStreamFactory();
ImageInputStream imageInputStream = disf.getInputStream(inputStream);
JBIG2ImageReader imageReader = JBIG2ImageReader mới(JBIG2ImageReaderSpi mới());
imageReader.setInput(imageInputStream);
JBIG2ReadParam param = imageReader.getDefaultReadParam();
BufferedImage bufferedImage = imageReader.read(imageIndex, param);

////////// jbig2 sang jpeg //////////////////////////////////////////////////// /// //////
ImageIO.write(bufferedImage, "jpeg", Tệp mới ("/home/blackadmin/Desktop/pdf/demo18.jpeg"));
} bắt (IOException cũ) {
System.out.println(ex);
} finally {
thử {
inputStream.close();
} bắt (IOException cũ) {
System.out.println(ex);
}
}
}

khoảng trống công khai createPDF() {
Tài liệu tài liệu = Tài liệu mới();
thử {
PdfWriter.getInstance(tài liệu,
FileOutputStream mới ("/home/blackadmin/Desktop/pdf/output.pdf"));
tài liệu.open();
Bảng PdfPTable = cột PdfPTable mới (1); //1.
Hình ảnh = Image.getInstance("/home/blackadmin/Desktop/pdf/demo18.jpeg");
image.scaleToFit(800f, 600f);
image.scaleAbsolute(800f, 600f); // Cung cấp kích thước hình ảnh bạn muốn in trên pdf
PdfPCell lồngImgCell = PdfPCell mới (hình ảnh);
bảng.addCell(nestedImgCell);
document.add(bảng);
document.close();
System.out.println(
"======== PDF được tạo thành công ==========");
} catch (Exception e) {
System.out.println(e);
}
}

public static void main(String[] args) ném IOException {
JBig2Image mới();
}
}



lớp MyImageRenderListener triển khai RenderListener {

/**
* Tài liệu mới mà chúng tôi đã thêm hình chữ nhật có viền.
*/
đường dẫn chuỗi được bảo vệ = "";

/**
* Tạo một RenderListener để tìm kiếm hình ảnh.
*/
công khai MyImageRenderListener (Đường dẫn chuỗi) {
this.path = đường dẫn;
}

/**
* @xem com.itextpdf.text.pdf.parser.RenderListener#beginTextBlock()
*/
khoảng trống công khai BeginTextBlock() {
}

/**
* @xem com.itextpdf.text.pdf.parser.RenderListener#endTextBlock()
*/
khoảng trống công khai endTextBlock() {
}

/**
* @xem com.itextpdf.text.pdf.parser.RenderListener#renderImage(
* com.itextpdf.text.pdf.parser.ImageRenderInfo)
*/
public void renderImage(ImageRenderInfo renderInfo) {
thử {
Tên tệp chuỗi;
Hệ điều hành FileOutputStream;
Hình ảnh PdfImageObject = renderInfo.getImage();
nếu (hình ảnh == null) {
return;
}
tên tệp = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
os = FileOutputStream mới (tên tệp);
os.write(image.getImageAsBytes());
os.flush();
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}

/**
* @xem com.itextpdf.text.pdf.parser.RenderListener#renderText(
* com.itextpdf.text.pdf.parser.TextRenderInfo)
*/
public void renderText(TextRenderInfo renderInfo) {
}
}

引用资料:
1) từ pdf ( trích xuất hình ảnh ) ( Trình nghe MyImageRender ) được chiết xuất từ jbig2.
2) Chuyển đổijbig2(JBIG2ImageReaderDemo)

Về java - in PDF chứa hình ảnh JBIG2, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12056315/

39 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress