我有一個基於J2EE的應用程序,我正在使用報告工具生成PDF格式的輸出。我需要Java中的實用程序/工具,它可以幫助我將PDF文件轉換爲postscript格式,以便我可以將其打印到打印機中...我的應用程序將運行在各種操作系統上(即Windows/Linux/AIX)平臺獨立解決方案是必不可少的。我的報告工具不支持PS格式的輸出。請諮詢...使用Java將PDF轉換爲Postscript
回答
也許考慮使用jasper reports。
它將允許您在各種輸出(PDF,Html,RTF)中生成報告。
您也可以將報告導出到打印機。
編輯:
這裏是一個快速example我發現出口到使用JRPrintServiceExporter作爲使用PDF導出反對的打印機。看起來它會完成這項工作。
有AFAIK沒有傻瓜證明這純粹的Java解決方案,但如果轉換是要做服務器端,我會建議你使用Ghostscript's pdf2ps轉換器。即使您必須安裝平臺特定版本的Ghostscript,也應該爲所有提到的平臺找到一個版本。
Ghostscript是免費的,並且在所有平臺上運行。在沒有良好的純Java pdf-> ps轉換器的情況下,這是要走的路。 – 2010-05-28 14:35:34
有幾個PDF庫可以打印PDF文件。如果您打印到Postscript打印機並使用打印到文件選項,則最終可能會有Postscript。
另一種解決方案「基於exe」,如Ghostscript,是Xpdf.PdfToPS
PdfToPs是一個純粹的命令行應用程序。在Win,Linux和Solaris上運行。
http://www.foolabs.com/xpdf/
也許這個代碼可以幫助:
try
{
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
StreamPrintServiceFactory[] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, psMimeType);
System.out.println ("Available PS services: " + factories.length);
if(factories.length == 0)
{
System.err.println ("No PS factories available!");
System.exit(0);
}
// Open the PDF file
PDFPrint pdfPrint = new PDFPrint ("test.pdf", null);
// Open the output file
FileOutputStream fos = new FileOutputStream("output.ps");
// Use the first service available
StreamPrintService sps = factories[0].getPrintService(fos);
DocPrintJob pj = sps.createPrintJob();
// Define paper size
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_LETTER);
// Create simple doc using PDFPrint as Printable and print it
SimpleDoc doc = new SimpleDoc(pdfPrint, flavor, null);
pj.print(doc, aset);
// Close the output PS stream
fos.close();
}
catch (Throwable t)
{
t.printStackTrace();
}
使用FOP XSLFO http://xmlgraphics.apache.org/fop/fop-pdf-images.html
FOP test.fo -PS out.ps
test.fo:
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simple">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simple">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:external-graphic src="my.pdf"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
這是我純粹的Java解決方案。它在CentOS,SUSE和Windows 7上運行良好。不需要安裝任何軟件。
import java.io.File;
import java.io.FileOutputStream;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.SimpleDoc;
import javax.print.StreamPrintService;
import javax.print.StreamPrintServiceFactory;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPrintable;
import org.apache.pdfbox.printing.Scaling;
public class Printing {
public static void main(String[] args) {
try {
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
StreamPrintServiceFactory[] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, psMimeType);
System.out.println ("Available PS services: " + factories.length);
System.out.println ("Format: " + factories[0].getOutputFormat());
FileOutputStream outStream = new FileOutputStream("/path/to/your.ps");
StreamPrintService printService = factories[0].getPrintService(outStream);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_LETTER);
PDDocument doc = PDDocument.load(new File("/path/to/my.pdf"));
SimpleDoc pdfDoc = new SimpleDoc(new PDFPrintable(doc, Scaling.SCALE_TO_FIT, false), flavor, null);
DocPrintJob newJob = printService.createPrintJob();
newJob.print(pdfDoc, aset);
outStream.close();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
相關性:
dependencies {
compile group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.8'
}
- 1. 將PDF轉換爲PostScript
- 2. 使用Ghostscript將PCL轉換爲PostScript
- 3. 使用Java將EPUB轉換爲PDF
- 4. 使用Java將PDF轉換爲XML
- 5. 使用Java將Excel(.xlsx)轉換爲PDF
- 6. 將TIFF轉換爲PostScript
- 7. 將PostScript轉換爲HTML
- 8. 將postscript文件的子集轉換爲pdf文檔
- 9. Java轉換爲PDF
- 10. 將Postscript文件轉換爲XPS
- 11. 轉換HTML文件爲PDF使用Java
- 12. 如何使用PDFBOX PDF文件轉換成PostScript文件2.0
- 13. 將PDF轉換爲Java中的Word
- 14. Java將PostScript轉換爲任何圖像格式
- 15. 將html轉換爲postscript的最佳方法是什麼?在java
- 16. 使用exec將pdf轉換爲JPG
- 17. 使用PDFSharp將HTML轉換爲PDF
- 18. 使用JavaScript將Excel轉換爲PDF
- 19. 使用氧氣將XML轉換爲PDF
- 20. 使用PHP將PDF轉換爲XML
- 21. 使用Python將PDF轉換爲HTML
- 22. 使用蜻蜓將PDF轉換爲PNG
- 23. 使用iTextSharp將PDF轉換爲PDFA1-A
- 24. 使用dompdf將頁面轉換爲PDF
- 25. 使用PHP將docx轉換爲pdf
- 26. 使用PHP將FDF轉換爲PDF
- 27. 使用matlab將PDF轉換爲XML
- 28. 使用Rmagick將pdf轉換爲jpeg
- 29. 使用Python將HTML轉換爲PDF
- 30. 使用PDFClown將tiff轉換爲PDF
這裏有一個鏈接,*力量*是從碧玉產生PS有用:http://forums.codecharge.com/posts.php?post_id=57257 – 2010-01-16 06:38:44
戈登感謝名單爲了您的幫助...我使用Jasper Reports生成輸出,但我無法找到任何將輸出導出到打印機的選項......並且默認支持的格式不包括PS – 2010-01-16 09:26:10