Skapa PDF-dokument med Java

Som programmerare kan du behöva skapa PDF-filer i Java-applikationer i något skede. Till exempel för att generera kvitton, fakturor, affärsrapporter etc. Det finns olika Java PDF-bibliotek som låter dig generera PDF-filer från grunden. Den här artikeln kommer dock att ge dig ett kraftfullt, höghastighets- och högkvalitativt Java-bibliotek för att skapa PDF-filer, vilket kräver att du skriver ett minimum av kodrader.

Så låt oss se hur man skapar PDF-filer från början i Java. Låt oss också ta en titt på hur man infogar text, bilder, tabeller och andra element i ett PDF-dokument programmatiskt.

Java PDF-bibliotek

För att skapa och manipulera PDF-filer kommer vi att använda Aspose.PDF för Java. Det är ett bibliotek för manipulering av PDF-filer för att skapa rika PDF-filer utan att skriva komplex kod. Med hjälp av biblioteket kan du skapa såväl enkla som komplexa PDF-dokument. Du kan också få en gratis licens och generera önskade PDF-filer.

Aspose.PDF för Java kan antingen laddas ner som JAR eller installeras i Maven-baserade applikationer.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.11</version>
    <classifier>jdk17</classifier>
</dependency>

Hur man skapar en PDF i Java

Följande är stegen för att skapa en enkel PDF-fil från början och infoga en bit text i den.

Följande kodexempel visar hur man skapar en PDF-fil i Java.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-pdf/Aspose.PDF-for-Java
// Initiera dokumentobjekt
Document document = new Document();
 
//Lägg till sida
Page page = document.getPages().add();
 
// Lägg till text på ny sida
page.getParagraphs().add(new TextFragment("Hello World!"));
 
// Spara uppdaterad PDF
document.save("HelloWorld_out.pdf");

Java PDF-generering med textformatering

Låt oss nu kolla in hur man tillämpar formatering på texten i PDF-dokumentet. Textformateringen kan inkludera teckensnitt, teckenstorlek, färg, position, etc. Följande är stegen för att utföra denna operation.

  • Använd klassen Dokument för att skapa ett nytt PDF-dokument eller ladda ett befintligt.
  • Gå till Sida du vill placera texten på.
  • Skapa ett objekt av TextFragment för att ställa in texten och andra formateringsalternativ som position, teckensnitt, färg, storlek, etc.
  • Använd klassen TextBuilder för att lägga till TextFragment-objektet på sidan.
  • Använd metoden Document.save(String) för att spara PDF-dokumentet.

Följande kodexempel visar hur man genererar en PDF-fil och tillämpar textformatering med Java.

// Ladda PDF-dokument
Document document = new Document();

// Lägg till sida
Page page = document.getPages().add();

// Skapa textfragment
TextFragment textFragment = new TextFragment(
		"Text 1: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment.setPosition(new Position(100, 700));
TextFragment textFragment1 = new TextFragment(
		"Text 2: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment1.setPosition(new Position(100, 600));

// Ställ in textegenskaper
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());

textFragment1.getTextState().setDrawTextRectangleBorder(true);
textFragment1.getTextState().setUnderline(true);
textFragment1.getTextState().setStrikeOut(true);

// Skapa ny färg med mönsterfärgrymd
Color color = new Color();
color.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));		
textFragment1.getTextState().setForegroundColor(color);

// Skapa TextBuilder-objekt
TextBuilder textBuilder = new TextBuilder(page);

// Lägg till textfragmenten på PDF-sidan
textBuilder.appendText(textFragment);
textBuilder.appendText(textFragment1);

// Spara PDF-dokumentet
document.save("Generated-PDF.pdf");

Generera PDF-filer med bild i Java

Följande är stegen för att infoga en bild i en PDF-fil med Aspose.PDF för Java.

  • Skapa ett Dokument-objekt för att skapa eller öppna PDF-dokumentet.
  • Hämta sidan du vill lägga till en bild på i objektet Page.
  • Lägg till bilden i samlingen Page.getResources().
  • Använd operatorer för att placera bilden på sidan:
    • GSave operator to save the current graphical state.
    • Sammanfoga matris operator to specify where the image is to be placed.
    • Do operator to draw the image on the page.
    • Använd slutligen operatorn GRestore för att spara det uppdaterade grafiska tillståndet.
  • Spara PDF-filen.

Följande kodexempel visar hur man infogar en bild i en PDF-fil i Java.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Öppna ett dokument
Document pdfDocument1 = new Document("input.pdf");

// Ställ in koordinater
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;

// Skaffa sidan du vill lägga till bilden på
Page page = pdfDocument1.getPages().get_Item(1);

// Ladda bilden i stream
java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File("input_image1.jpg"));

// Lägg till en bild i bildsamlingen för sidresurserna
page.getResources().getImages().add(imageStream);

// Med GSave-operatorn: denna operatör sparar aktuell grafikstatus
page.getContents().add(new Operator.GSave());

// Skapa rektangel- och matrisobjekt
Rectangle rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
Matrix matrix = new Matrix(new double[] { rectangle.getURX() - rectangle.getLLX(), 0, 0, rectangle.getURY() - rectangle.getLLY(), rectangle.getLLX(), rectangle.getLLY() });

// Använda operatorn ConcatenateMatrix (sammanfoga matris): definierar hur bilden ska placeras
page.getContents().add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());

// Använda Gör-operatorn: denna operator ritar en bild
page.getContents().add(new Operator.Do(ximage.getName()));

// Använda GRestore-operatorn: denna operator återställer grafiktillstånd
page.getContents().add(new Operator.GRestore());

// Spara den nya PDF-filen
pdfDocument1.save("Updated_document.pdf");

// Stäng bildström
imageStream.close();

Skapa en tabell i PDF-fil i Java

Tabellen är ett bra sätt att organisera data i form av rader och kolumner. Aspose.PDF låter dig infoga en tabell i ett PDF-dokument ganska enkelt.

Följande är stegen för att skapa en PDF-tabell i Java.

  • Ladda källfilen med klassen Document.
  • Initiera en tabell och ställ in dess kolumner och rader.
  • Ställ in bordets inställning (t.ex. kanter).
  • Fyll tabellen genom att lägga till rader i den.
  • Lägg till tabellen på en sida.
  • Spara PDF-filen.

Följande kodexempel visar hur man infogar en tabell i en PDF-fil i Java.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Ladda käll-PDF-dokument
Document doc = new Document(dataDir + "input.pdf");
// Initierar en ny instans av tabellen
Table table = new Table();
// Ställ in bordets kantfärg som ljusgrå
table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// ställ in gränsen för tabellceller
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// skapa en slinga för att lägga till 10 rader
for (int row_count = 1; row_count < 10; row_count++) {
	// lägg till rad i tabellen
	Row row = table.getRows().add();
	// lägga till tabellceller
	row.getCells().add("Column (" + row_count + ", 1)");
	row.getCells().add("Column (" + row_count + ", 2)");
	row.getCells().add("Column (" + row_count + ", 3)");
}
// Lägg till tabellobjekt på första sidan i inmatningsdokumentet
doc.getPages().get_Item(1).getParagraphs().add(table);
// Spara uppdaterat dokument som innehåller tabellobjekt
doc.save(dataDir + "document_with_table.pdf");

Skapa formulär i en PDF i Java

PDF-formatet stöder också att lägga till formulär för att samla in input från användarna. Formuläret kan innehålla olika typer av fält såsom textrutor, alternativknappar etc. Följande steg visar hur man infogar ett enkelt formulär i PDF-filen.

Följande kodexempel visar hur man skapar ett formulär i en PDF-fil i Java.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Öppna ett dokument
Document pdfDocument = new Document("input.pdf");

// Skapa ett fält
TextBoxField textBoxField1 = new TextBoxField(pdfDocument.getPages().get_Item(1), new Rectangle(100, 200, 300, 300));

// Ställ in fältnamnet
textBoxField1.setPartialName("textbox1");

// Ställ in fältvärdet
textBoxField1.setValue("Text Box");

// Skapa ett kantobjekt
Border border = new Border(textBoxField1);

// Ställ in kantens bredd
border.setWidth(5);

// Ställ in gränsstreckstilen
border.setDash(new Dash(1, 1));

// Ställ in fältgränsen
textBoxField1.setBorder(border);

// Lägg till fältet i dokumentet
pdfDocument.getForm().add(textBoxField1, 1);

// Spara den ändrade PDF-filen
pdfDocument.save("output.pdf");

Läs mer om formulärfälten med här.

Java: Generera PDF med bokmärken

Följande är stegen för att lägga till bokmärken i PDF-fil.

  • Öppna ett PDF-dokument med objektet Document.
  • Lägg till dokumentkonturer till en OutlineItemCollection-samling.
  • Ställ in destinationssidans nummer.
  • Lägg till bokmärket i dokumentets dispositionssamling.
  • Spara PDF-filen.

Följande kodexempel visar hur du infogar bokmärken i PDF med Java.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Öppna PDF-källdokumentet
Document pdfDocument = new Document("input.pdf");

// Skapa ett bokmärkesobjekt
OutlineItemCollection pdfOutline = new OutlineItemCollection(pdfDocument.getOutlines());
pdfOutline.setTitle("Test Outline");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);

// Ställ in destinationssidans nummer
pdfOutline.setAction(new GoToAction(pdfDocument.getPages().get_Item(1)));

// Lägg till ett bokmärke i dokumentets dispositionssamling.
pdfDocument.getOutlines().add(pdfOutline);

// Spara uppdateringsdokumentet
pdfDocument.save("output.pdf");

Gratis Java PDF Generation Library

Du kan få en gratis tillfällig licens och generera PDF-filer från grunden utan några begränsningar.

Utforska Java PDF-bibliotek

Du kan utforska mer om Java PDF API med dokumentation.

Slutsats

I den här artikeln har du lärt dig hur du skapar PDF-filer från början i Java. Dessutom har Java-kodexemplen visat hur man infogar text, bilder, tabeller, formulär och bokmärken i nya eller befintliga PDF-filer. Du kan enkelt installera biblioteket i din applikation och skapa dina önskade PDF-filer.

Se även