Печать PDF с указанием номеров страниц. [РЕШЕНО]

 
 
 
Сообщения:25
Доброго времени суток, уважаемые форумчане.
Столкнулся с проблемой печать pdf файлов, распечатать файл удается, а вот указать нужные страницы не могу. Страницы нужно указать программно, то есть вызов диалога печати не подходит. Хотя с его использование удается достичь заданной цели. Ниже код которым печатаю.
Использую библиотеку pdfbox-app-1.8.3

import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import com.sun.pdfview.PDFFile;

public class PrintFile2 {

	static int currentPage = 0;
	private static FileInputStream fis;

	public static void main(String[] args) throws IOException, PrinterException {
		File f = new File("d:\\1.pdf");

		fis = new FileInputStream(f);
		FileChannel fc = fis.getChannel();
		ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

		PDFFile pdfFile = new PDFFile(bb);

		PDFPrintPage pages = new PDFPrintPage(pdfFile);

		PrinterJob pjob = PrinterJob.getPrinterJob();

		PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

		Paper paper = new Paper();
		paper.setSize(pf.getWidth(), pf.getHeight());
		paper.setImageableArea(0, 0, pf.getWidth(), pf.getHeight());
		pf.setPaper(paper);

		pjob.setJobName(f.getName());
		Book book = new Book();

		book.append(pages, pf, pdfFile.getNumPages());

		pjob.setPageable(book);

		pjob.print();
	}

}


Причем если указывать вот тут x, то печатает с первой по х-овую страницу.
book.append(pages, pf, [b]x[/b]);

А вот как указать с какой страницы печатать не могу разобраться. Поделитесь опытом.
Заранее спасибо.
Изменен:21 дек 2013 13:01
 
 
Сообщения:25
Спасибо, может это закон подлости, но как только написал на форум сразу же нашел решение. Если кому нужно:

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class PrintFile3 {

	public static void main(String[] args) throws IOException {

		int startPage = 2;
		int endPage = 5;

		PDDocument pdDoc = PDDocument.load("d:\\1.pdf");
		PDDocument document = null;
		try {
			document = new PDDocument();
			for (int i = startPage; i <= endPage; i++) {
				document.addPage((PDPage) pdDoc.getDocumentCatalog().getAllPages().get(i));
			}
			document.save("d:\\print.pdf");
			document.close();
		} catch (Exception e) {
		}
	}
}


Используя апачевский PDFBox, загружаем нужный pdf и из него формируем новый pdf файл, с нужными нам страницами. Ну а затем просто его распечатываем...
Изменен:21 дек 2013 12:00
 
 
Сообщения:1
Английский, бляха.. Аррхр.. Напряженные у меня с ним отношения.
А программно сдвигать текст - думаю извращением каким то.. Это ж сколько всего надо учитывать, японамать... Эх(( Пшел я за переводчиком..?????



_______________________

ali
Изменен:02 дек 2015 06:25
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет