Wie kann ich mehrere PDFs in einer PDF-Datei ohne eine Drittanbieterkomponente kombinieren?Kombinieren von PDFs C#
Antwort
AFAIK C# verfügt über keine integrierte Unterstützung für die Verarbeitung von PDF. Daher können Sie nicht ohne die Verwendung einer Komponente von Drittanbietern oder einer COTS-Bibliothek nachfragen.
In Bezug auf Bibliotheken gibt es eine Vielzahl von Möglichkeiten. Nur um zu zeigen, ein paar:
http://csharp-source.net/open-source/pdf-libraries
http://www.codeproject.com/KB/graphics/giospdfnetlibrary.aspx
Das .NET Framework nicht die Fähigkeit enthalten, zu modifizieren/erstellen PDFs. Sie benötigen eine Komponente von Drittanbietern, um das zu erreichen, wonach Sie suchen.
Ich glaube nicht, dass Sie können. Opensource-Komponente PDFSharp hat diese Funktionalität, und eine nette source code sample on file combining
Wie andere gesagt haben, ist nichts eingebaut, um diese Aufgabe zu erledigen. Verwenden Sie iTextSharp mit diesem example code.
Ich denke, jemand sollte immer den Hinweis machen, dass iTextSharp die AGPL-Lizenz verwendet, die erfordert, dass Sie Ihren Quellcode freigeben mit der korrekten Verwendung von iTextSharps. Sie haben jedoch eine kommerzielle Lizenzierung zur Verfügung. Sei vorsichtig, wie du es benutzt! – Encryption
Obwohl es bereits gesagt wurde, können Sie PDFs nicht mit den integrierten Bibliotheken von .NET Framework bearbeiten. Ich kann jedoch iTextSharp empfehlen, was ein .NET-Port des Java-iText ist. Ich habe damit herumgespielt und festgestellt, dass es ein sehr einfaches Werkzeug ist. .NET Framework enthält so wie Bibliotheken
ITextSharp ist der Weg
Ich glaube nicht, zu gehen. Ich habe iTextsharp mit C# verwendet, um PDF-Dateien zu kombinieren. Ich denke, iTextsharp ist der einfachste Weg, dies zu tun. Hier ist der Code, den ich benutzt habe.
string[] lstFiles=new string[3];
lstFiles[0][email protected]"C:/pdf/1.pdf";
lstFiles[1][email protected]"C:/pdf/2.pdf";
lstFiles[2][email protected]"C:/pdf/3.pdf";
PdfReader reader = null;
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage;
string [email protected]"C:/pdf/new.pdf";
sourceDocument = new Document();
pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
//Open the output file
sourceDocument.Open();
try
{
//Loop through the files list
for (int f = 0; f < lstFiles.Length-1; f++)
{
int pages =get_pageCcount(lstFiles[f]);
reader = new PdfReader(lstFiles[f]);
//Add pages of current file
for (int i = 1; i <= pages; i++)
{
importedPage = pdfCopyProvider.GetImportedPage(reader, i);
pdfCopyProvider.AddPage(importedPage);
}
reader.Close();
}
//At the end save the output file
sourceDocument.Close();
}
catch (Exception ex)
{
throw ex;
}
private int get_pageCcount(string file)
{
using (StreamReader sr = new StreamReader(File.OpenRead(file)))
{
Regex regex = new Regex(@"/Type\s*/Page[^s]");
MatchCollection matches = regex.Matches(sr.ReadToEnd());
return matches.Count;
}
}
Ist dies korrekt oder hilfreich, bitte akzeptieren Sie die Antwort –
Vielen Dank! Last Minute speichern, wenn ich es brauchte. es ist auch schnell! –
Proben auf ihren neuen Standort: http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx –
Ich weiß, das ist alt, aber ich folgte dieser Antwort und entdeckte, dass PDFSharp noch Unterstützung nicht umgesetzt hat die moderneren Versionen von PDF ... müssen Sie möglicherweise durch die Rahmen springen, damit es für alle PDFs funktioniert. Sehen Sie dies vor dem Springen in: http://forum.pdfsharp.net/viewtopic.php?f=2&t=693 –